基本架构如下

1\\准备机器h15、h16、h17、h18

将zookeeper文件复制到h15\h16\h17上,并且解压

说明如下:zookeeper-3.4.6/zookeeper-3.4.6/docs/zookeeperStarted.html

2\\搭建zookeeper:使用机器h15\h16\h17(非单机版配置需要添加红色字体内容)

【a】分别在h15\h16\h17上zookeeper的解压目录下:/home/zookeeper-3.4.6/conf---à新建一个文件:zoo.cfg

内容:(见备注一)

tickTime=2000

dataDir=/var/lib/zookeeper

clientPort=2181

initLimit=5

syncLimit=2

server.1=h15:2888:3888

server.2=h16:2888:3888

server.3=h17:2888:3888

【b】分别在h15\h16\h17上的/var/lib目录下创建:vi  /var/lib/zookeeper/myid(内容见备注二)

#myid的内容分别是server.1,server.2,server.3的数字;

即h15上是数字”1”,h16上是数字”2”,h17上是数字”3”

【c】分别在h15\h16\h17上配置zookeeper的环境变量

#vi ~/.bash_profile

添加:

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:/home/zookeeper-3.4.6/

bin生效一下:source ~/.bash_profile

【d】分别在h15,h16,h17上的zookeeper的bin目录下启动zookeeper:

#zkServer.sh start     --------àjps查看进程------》再查看当前的目录下的日志文件:zookeeper.out

如果没有错误日志,那么启动正常!

3\\搭建journal:使用机器h16\h17\h18

\\在原有的h15是namenode的情况下,增加一个namenode,h18

操作查看hadoop官网介绍:

share/doc/hadoop/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

【a】删除h15\h16\17\h18上,原有的数据目录:data1\data2   \home\hadoop

【b】进入h15配置hdfs-site.xml(最终配置的内容见备注三)

“mycluster”:是全局的集群唯一namenodeID

“nn1,nn2”:      是namenode的别名,本机指定实际对应的是h15、h18

<property>

<name>dfs.nameservices</name>

<value>yangjifei</value>

</property>

<property>

<name>dfs.ha.namenodes.yangjifei</name>

<value>nn1,nn2</value>

</property>

<property>

<name>dfs.namenode.rpc-address.yangjifei.nn1</name>

<value>h15:8020</value>

</property>

<property>

<name>dfs.namenode.rpc-address.yangjifei.nn2</name>

<value>h18:8020</value>

</property>

<property>

<name>dfs.namenode.http-address.yangjifei.nn1</name>

<value>h15:50070</value>

</property>

<property>

<name>dfs.namenode.http-address.yangjifei.nn2</name>

<value>h18:50070</value>

</property>

【c】hdfs-site.xml上再配置journal的机器名称

这里我设置h16\h17\h18为journal机器节点

<property>

<name>dfs.namenode.shared.edits.dir</name>

<value>qjournal://h16:8485;h17:8485;h18:8485/yangjifei</value>

</property>

【d】在hdfs.xml上再指定全局的唯一namenodeID,使用一个java类获取

<property>

<name>dfs.client.failover.proxy.provider.yangjifei</name>

<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>

【f】在hdfs-site.xml中,再配置私钥所在目录(因为它们是用私钥交互),

一定要用私钥的目录:/root/.ssh/id_rsa

<property>

<name>dfs.ha.fencing.methods</name>

<value>sshfence</value>

</property>

<property>

<name>dfs.ha.fencing.ssh.private-key-files</name>

<value>/root/.ssh/id_dsa</value>

</property>

<property>

<name>dfs.journalnode.edits.dir</name>

<value>/path/to/journal/node/local/data</value>

</property>

【g】在hdfs-site.xml中配置namenode自动切换的功能,设置为true

<property>

<name>dfs.ha.automatic-failover.enabled</name>

<value>true</value>

</property>

【h】在core-site.xml(最终内容见备注四)中,配置故障转移的监控zookeeper节点

<property>

<name>ha.zookeeper.quorum</name>

<value>h15:2181,h16:2181,h17:2181</value>

</property>

<property>

<name>fs.defaultFS</name>

<value>hdfs://yangjifei</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/home/hadoop</value>

</property>

注意:配置结束后必须保证,h15\h16\h17\h18机器的hdfs-site.xml和core-site.xml文件一致

即:复制文件到其他的h16\h17\18集群上

#scp /home/hadoop-2.5.1/etc/hadoop/* root@h16:/home/hadoop-2.5.1/etc/hadoop/

#scp /home/hadoop-2.5.1/etc/hadoop/* root@h17:/home/hadoop-2.5.1/etc/hadoop/

#scp /home/hadoop-2.5.1/etc/hadoop/* root@h18:/home/hadoop-2.5.1/etc/hadoop/

注意:需要使core-site.xml上的”hdfs://yangjifei”与hdfs-site.xml文件取得别名一致

4\\配置h18与h15的免密码登录(注意一定也要检查h15和h18是否自己能够登录自己,其他节点也要生成密钥,但是不用追加)

秘钥:包括公钥和私钥

在h18上,将其公钥复制到h15上;然后在h15上,追加其公钥到au??

先在h18上生成秘钥:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

再复制公钥到h15上:复制到另一个目录下(/home)

#scp ~/.ssh/id_dsa.pub  root@192.168.142.115: /home/

#cat /home/id_dsa.pub  >> ~/.ssh/authorized_keys

#cat ~/.ssh/id_dsa.pub  >> ~/.ssh/authorized_keys

rm -rf authorized_keys

注:另一种很简单的免密码登陆方法

在h15的根目录下执行

#ssh-keygen    ------》不断回车---》直到生成完成

然后执行以下命令

#ssh-copy-id root@h16

#ssh-copy-id root@h17

#ssh-copy-id root@h18

那么可以实现h15免密码登陆h16\h17\h18

5\\在h15上多节点地启动zookeeper:命令目录在/hadoop-2.5.1/sbin下

单节点启动:#hadoop-daemon.sh start

或者进入目录后执行:zookeeper-3.4.6/bin/zkServer.sh start

检查h15\h16\h17是否成功:jps

6\\在\h18\h17\h16上的hadoop的sbin目录下

分别单节点启动journal:./hadoop-daemon.sh start journalnode

如     [root@h18 sbin]# ./hadoop-daemon.sh start journalnode

检查h16\h17\h18启动是否成功:jps

7\\在h15\h18其中一个namenode上格式化:hdfs namenode -format

把刚刚格式化之后的元数据拷贝到另外一个namenode上

复制文件夹的命令:scp  -r  /home/hadoop  root@h18:/home

a) 启动刚刚格式化的namenode :sh hadoop-daemon.sh start namenode

(注意:如果datanode没有起来,那么需要各自执行:sh hadoop-daemon.sh start datanode)

b) 在没有格式化的namenode上执行:hdfs namenode -bootstrapStandby

c) 在h15(或者能够免密码联通所有机器的namenode)上

启动namenode à [h18@root sbin]# sh start-dfs.sh(同时启动zfc的命令)

d) 在其中一个namenode上初始化zkfc:hdfs zkfc –formatZK(只能格式化一次)

8\\在h15上启动集群:start-dfs.sh和start-yarn.sh

全部启动:start-all.sh脚本现在已经废弃,推荐使用start-dfs.sh和start-yarn.sh分别启动HDFS和YARN。

错误:root@h15's password: h15: Permission denied, please try again.

原因是在h15\h18上自己不能ssh连接自己,解决:在h15和h18上先执行

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

再执行:cat  ~/.ssh/id_dsa.pub  >> ~/.ssh/authorized_keys

9\\测试是否成功(页面上要有standby和active)

错误:org.apache.hadoop.ha.ZKFailoverController: Unable to start failover con

troller. Parent znode does not exist.

解决:由于zkfc没有全部起来,原因是没有格式化成功!即第7步没有成功,需要重新来一次-----》

先在h15上格式化后:hdfs zkfc -formatZK

再在h15\h16上启动:hadoop-daemon.sh start zkfc

如果由于数据的影响,不能正常启动hadoop集群,则需要清除/data1   /data2    /opt/stx/hadoop 后,再执行7、8、9步骤

错误: org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: Error starting

ResourceManagerorg.apache.hadoop.yarn.exceptions.YarnRuntimeException: Invalid configuration! Can not find valid RM_HA_ID.

解决:yarn-site.xml文件配置节点名称错误!修改

错误:Error: Could not find or load main class resourcemanager

使用命令启动:yarn-daemon.sh start resourcemanager

因为resourcemanger和nodemanger由yarn管理

(增加高可用配置,不用执行7\8\9步)

10\\h15和h18是RM,h15、h16、h17是zookeeper

11\\在h15上配置hadoop/etc/yarn-site.xml(内容见备注五)

再配置,重命名mapred-site.xml.template   ----àmapred-site.xml(见备注六)

12\\分别复制到h16\h17\h18上

#scp /home/hadoop-2.5.1/etc/hadoop/* root@h16:/home/hadoop-2.5.1/etc/hadoop/

#scp /home/hadoop-2.5.1/etc/hadoop/* root@h17:/home/hadoop-2.5.1/etc/hadoop/

#scp /home/hadoop-2.5.1/etc/hadoop/* root@h18:/home/hadoop-2.5.1/etc/hadoop/

13\\在h15上启动:sh start-yarn.sh-----à只启动一个

14\\在h18上单独启动备用ResourceManager:#yarn-daemon.sh start resourcemanager

因为#sh start-all.sh------à只会启动一台resourcemanage, 所以h18需要另外重启

15\\浏览器访问:

#http://h15:8088

如果访问正常,并且可以监控资源,那么正常

(1)访问备用ResourceManager:

#http://h18:8088

如果直接重定向到原来的http://h15:8088页面,那么正常

(2)如果在h15中,执行kill -9 ? 后,隔10s(备用的,默认汇报给ResourceManager的时间是10s,而其他的是1s)

注:常用命令

start-dfs.sh

start-yarn.sh

zkServer.sh start

hadoop-daemon.sh start journalnode

yarn-daemon.sh start resourcemanager

备注一:zookeeper的配置文件zoo.cfg内容(目录是:/home/zookeeper-3.4.6/conf)

tickTime=2000

dataDir=/var/lib/zookeeper

clientPort=2181

initLimit=5

syncLimit=2

server.1=h15:2888:3888

server.2=h16:2888:3888

server.3=h17:2888:3888

注意:h15\h16\h17这三台机器的zoo.cfg文件是一样的

备注二:myid文件内容(目录:/var/lib/zookeeper/myid)

2

注意:这个数字二指的是zoo.cfg中“server.**=h?:2888:3888”,的*代表的数字,每台zookeeper对应一个

“server.*=?:2888:3888”,此处举例是h16,所以h16对应得是“server.2=h16:2888:3888”

备注三:hdfs-site.xml的配置文件(目录:/home/hadoop-2.5.1/etc/hadoop/)

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

<name>dfs.datanode.data.dir</name>

<value>/data1,/data2</value>

</property>

<property>

<name>dfs.nameservices</name>

<value>yangjifei</value>

</property>

<property>

<name>dfs.ha.namenodes.yangjifei</name>

<value>nn1,nn2</value>

</property>

<property>

<name>dfs.namenode.rpc-address.yangjifei.nn1</name>

<value>h15:8020</value>

</property>

<property>

<name>dfs.namenode.rpc-address.yangjifei.nn2</name>

<value>h18:8020</value>

</property>

<property>

<name>dfs.namenode.http-address.yangjifei.nn1</name>

<value>h15:50070</value>

</property>

<property>

<name>dfs.namenode.http-address.yangjifei.nn2</name>

<value>h18:50070</value>

</property>

<property>

<name>dfs.namenode.shared.edits.dir</name>

<value>qjournal://h16:8485;h17:8485;h18:8485/yangjifei</value>

</property>

<property>

<name>dfs.client.failover.proxy.provider.yangjifei</name>

<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>

<property>

<name>dfs.ha.fencing.methods</name>

<value>sshfence</value>

</property>

<property>

<name>dfs.ha.fencing.ssh.private-key-files</name>

<value>/root/.ssh/id_dsa</value>

</property>

<property>

<name>dfs.journalnode.edits.dir</name>

<value>/path/to/journal/node/local/data</value>

</property>

<property>

<name>dfs.ha.automatic-failover.enabled</name>

<value>true</value>

</property>

</configuration>

备注四:core-site.xml的配置内容(目录: /home/hadoop-2.5.1/etc/hadoop/)

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://yangjifei</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/home/hadoop</value>//该目录是数据元的存放目录

</property>

<property>

<name>ha.zookeeper.quorum</name>

<value>h15:2181,h16:2181,h17</value>//zookeeper机器的host别名

</property>

</configuration>

备注五:配置zookeeper的高可用,文件yarn-site.xml(目录:/home/hadoop-2.5.1/etc/hadoop/)

/h15和h18可以互相接管监控资源状况!!他们是ResourceManager

<?xml version="1.0"?>

<configuration>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.resourcemanager.ha.enabled</name>

<value>true</value>

</property>

<property>

<name>yarn.resourcemanager.cluster-id</name>

<value>cluster1</value>

</property>

<property>

<name>yarn.resourcemanager.ha.rm-ids</name>

<value>rm1,rm2</value>

</property>

<property>

<name>yarn.resourcemanager.hostname.rm1</name>

<value>h15</value>

</property>

<property>

<name>yarn.resourcemanager.hostname.rm2</name>

<value>h18</value>

</property>

<property>

<name>yarn.resourcemanager.zk-address</name>

<value>h15,h16,h17</value>

</property>

</configuration>

备注六:zookeeper高可用的配置,mapred-site.xml(目录:/home/hadoop-2.5.1/etc/hadoop/)

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

测试已经通过,可以按照步骤搭建!

[Hadoop基础]-- Hadoop namenode的HA搭建相关推荐

  1. hadoop基础----hadoop理论(四)-----hadoop分布式并行计算模型MapReduce详解

    我们在前一章已经学习了HDFS: hadoop基础----hadoop理论(三)-----hadoop分布式文件系统HDFS详解 我们已经知道Hadoop=HDFS(文件系统,数据存储技术相关)+ M ...

  2. hadoop基础----hadoop实战(七)-----hadoop管理工具---使用Cloudera Manager安装Hadoop---Cloudera Manager和CDH5.8离线安装

    hadoop基础----hadoop实战(六)-----hadoop管理工具---Cloudera Manager---CDH介绍 简介 我们在上篇文章中已经了解了CDH,为了后续的学习,我们本章就来 ...

  3. hadoop基础----hadoop实战(二)-----hadoop操作hdfs---hdfs文件系统常用命令

    我们在前面已经介绍过了 hadoop 1.0是由2大部分组成的: hdfs + mapreduce 也对hdfs做了相关介绍. hadoop基础----hadoop理论(三)-----hadoop分布 ...

  4. [Hadoop基础]-- hadoop shell命令汇总

    Hadoop Shell命令 FS Shell cat chgrp chmod chown copyFromLocal copyToLocal cp du dus expunge get getmer ...

  5. hadoop基础----hadoop理论----Hadoop简介

    hadoop是什么? (1)Hadoop就是一个分布式计算的解决方案,也就是帮助我们把 一个任务分到很多台计算机来运算. (2)Hadoop是一个开源的框架,可编写和运行分布式应用处理大规模数据,是专 ...

  6. 大数据基础——Hadoop大数据平台搭建

    文章目录 前言 Hadoop大数据平台搭建 一.Hadoop原理和功能介绍 二.Hadoop安装部署 三.Hadoop常用操作 总结 前言 分布式机器学习为什么需求大数据呢?随着海量用户数据的积累,单 ...

  7. Hadoop ha搭建

    windows软件 必须从G盘加载一个文件 conf xml linux/a /b /c /d /e /f /gmount /g -> disk:G分区 /b -> disk:B分区软件 ...

  8. 深入浅出学大数据(五)Hadoop再探讨High Availability(HA)集群搭建及YARN原理介绍

      大家好,我是不温卜火,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样 ...

  9. Hadoop 2.x 完全分布式HA集群环境搭建

    Hadoop 2.x 完全分布式HA集群环境搭建 目录 Hadoop 2.0 环境搭建 前提:环境准备 第一步:修改hadoop-env.sh配置文件,配置好JAVA_HOME环境变量 第二步:修改h ...

最新文章

  1. ArcGIS 9.3 安装之 Server的安装
  2. python pandas库——pivot使用心得
  3. 兴林村脱贫谋定向往宜居村庄-农业大健康·万祥军:美丽蝶变
  4. php 解析xml 的四种方法(转)
  5. Python列表基础
  6. 中兴myos和鸿蒙,继华为鸿蒙系统以后!中兴再次发布新系统MyOS:可媲美苹果
  7. Knative 带来的极致 Serverless 体验
  8. ActiveReports 报表应用教程 (9)---交互式报表之动态排序
  9. linux make 无法生成 .o gch,Linux--makefile的使用
  10. 磁盘阵列(RAID)
  11. Cannot open D:\Program Files\Anaconda\Scripts\pip3-script.py
  12. html协议是一种用于什么的协议,FTP协议是一种用于( )的协议。
  13. 如何提高自己的工作能力 高效工作方法是绝效
  14. POI生成workBook时报java.long.ArrayIndexOutOfBoundsEXception:-32768
  15. ES文件浏览器 v4.1.8.1 破解高级版
  16. 硅谷火爆的云原生,你会玩吗?
  17. 二、C语言基本数据类型全解和基本的数据存储方式
  18. 安装tensorflow出现 Cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot accu
  19. MAC免费解压软件——解压RAR、7Zip等五六十种格式
  20. 基于RK3568商显版开源鸿蒙板卡产品解决方案

热门文章

  1. 2022卡塔尔世界杯。CSDN世界杯勋章来啦
  2. 盘点那些Wifi破解姿势(2)
  3. 该来的没来,不该走的走了?
  4. PDF怎么快速转换成Excel表格文件?两个方法帮你实现
  5. BatchNormalization 介绍
  6. 牛客小白月赛24 J.建设道路
  7. 2020-07-24
  8. Vue3动态引入Element-plus icon图标
  9. python抠出图片人像_Python抠图
  10. 企业内网怎么连接外网?