设为首页 收藏本站
查看: 1493|回复: 0

[经验分享] 搭建 hadoop2 自动切换HA 集群

[复制链接]
YunVN网友  发表于 2018-10-30 10:15:19 |阅读模式
  hadoop2 比 hadoop1的一些新的功能:
  其中HA解决了hadoop1的单点故障问题
  1) 各节点:
  namenode:master   slave3
  datanode:slave1  slave2  slave3
  journalnode:master  slave1  slave3
  zookeeper: master  slave1  slave3
  2)hadoop2 搭建在手工切换ha的集群基础上:
  a) 关闭所有启动角色
  b) 删除所有机器/usr/local/hadoop/tmp 和 /usr/local/hadoop/logs的内容
  3) zookeeper集群安装:

  •   a) master上安装zookeeper
  •   a.1)把conf/zoo_sample.cfg重命名为conf/zoo.cfg  mv zoo_sample.cfg zoo.cfg
  •   a.2)修改文件conf/zoo.cfg
  •   1)dataDir=/usr/local/zookeeper/data
  •   2)增加以下内容
  •   server.1=master:2888:3888
  •   ---> 标识1 是master对应在zookeeper集群的编号 2888:3888是数据通信端口
  •   server.2=slave1:2888:3888
  •   ---> 标识2 是slave1对应在zookeeper集群的编号 2888:3888是数据通信端口
  •   server.3=slave3:2888:3888
  •   ---> 标识3 是slave3对应在zookeeper集群的编号 2888:3888是数据通信端口
  •   a.3) mkdir zookeeper/data
  •   [root@master zookeeper]# mkdir data
  •   a.4) 写入文件echo 1到 zookeeper/data/myid 这样在本机master内写上标识1 两者关联起来
  •   [root@master zookeeper]# echo 1 > data/myid


  •   b) 复制zookeeper文件夹到slave1、slave3上

  •   scp -rq zookeeper  slave1:/usr/local
  •   scp -rq zookeeper  slave3:/usr/local


  •   c) 其余节点写标识
  •   在slave1上执行命令echo 2 zookeeper/data/myid
  •   在slave3上执行命令echo 3 zookeeper/data/myid


  •   d) 启动和验证
  •   在master  slave1  slave3上,分别执行命令zookeeper/bin/zkServer.sh start
  •   执行命令zookeeper/bin/zkServer.sh status 可以看到三个节点的状态 哪个是leader 哪个是follower
  •   直接开启
  4) hdfs配置文件:(hadoop-env.sh、core-site.xml、hdfs-site.xml、slaves)

  •   2.1 配置文件(hadoop-env.sh、core-site.xml、hdfs-site.xml、slaves)
  •   2.1.1 hadoop-env.sh
  •   export JAVA_HOME=/usr/local/jdk
  •   2.1.2 core-site.xml

  •   
  •   fs.default.name
  •   hdfs://cluster1
  •   

  •   
  •   hadoop.tmp.dir
  •   /usr/local/hadoop/tmp
  •   

  •   
  •   ha.zookeeper.quorum    ------ 配置zk集群
  •   master:2181,slave1:2181,  slave3:2181
  •   


  •   2.1.3 hdfs-site.xml
  •   
  •   dfs.replication
  •   3
  •   

  •   
  •   dfs.nameservices ----每个nameservice对应一个hdfs集群
  •   cluster1
  •   

  •   
  •   dfs.ha.namenodes.cluster1
  •   master,slave3
  •   

  •   
  •   dfs.namenode.rpc-address.cluster1.master
  •   master:9000
  •   

  •   
  •   dfs.namenode.http-address.cluster1.master
  •   master:50070
  •   

  •   
  •   dfs.namenode.rpc-address.cluster1.slave3
  •   slave3:9000
  •   

  •   
  •   dfs.namenode.http-address.cluster1.slave3
  •   slave3:50070
  •   

  •   
  •   dfs.ha.automatic-failover.enabled.cluster1
  •   true
  •   

  •   
  •   dfs.namenode.shared.edits.dir
  •   qjournal://master:8485;slave1:8485;slave3:8485/cluster1
  •   

  •   
  •   dfs.journalnode.edits.dir
  •   /usr/local/hadoop/tmp/journal
  •   

  •   
  •   dfs.ha.fencing.methods
  •   
  •   sshfence
  •   shell(/bin/true)
  •   
  •   

  •   
  •   dfs.ha.fencing.ssh.private-key-files
  •   /root/.ssh/id_rsa
  •   

  •   
  •   dfs.client.failover.proxy.provider.cluster1
  •   org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
  •   

  •   2.1.6 slaves -----> 指定NodeManager 和 datanode
  •   slave1
  •   slave2
  •   slave3
  5) 删除其他节点的hadoop文件夹,修改好后拷贝到其余节点
  scp -r /usr/local/hadoop   其他:/usr/local/
  6) 启动hadoop2 hdfs集群

  •   6.1) 格式化zk集群
  •   在master上执行hadoop2.5/bin/hdfs zkfc -formatZK   此操作仅仅表示和zk集群发生关联
  •   15/01/11 18:14:20 INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/cluster1 in ZK.

  •   3在zookeeper中初始化
  •   $HADOOP_HOME/bin/hdfs zkfc -formatZK
  •   运行这个命令后,会在zookeeper上创建一个/hadoop-ha/mycluster/的znode,用来存放automatic  failover的数据
  •   4 启动zkfc(zookeeper failover controller)
  •   需要在namenode1和namenode2上都启动zkfc daemon进程。
  •   $HADOOP_HOME/sbin/hadoop-daemon.sh start zkfc

  •   6.2) 启动journalnode集群
  •   在master、slave1、slave3上分别执行hadoop/sbin/hadoop-daemon.sh start journalnode
  •   6.3) 格式化namenode、启动namenode
  •   在[nn1]上,对其进行格式化,并启动:
  •   在h2master上执行bin/hdfs namenode -format
  •   在h2master上执行sbin/hadoop-daemon.sh start namenode
  •   在[nn2]上,同步nn1的元数据信息:
  •   在h2master2上执行bin/hdfs namenode -bootstrapStandby
  •   在h2master2上执行sbin/hadoop-daemon.sh start namenode
  •   6.4)  启动datanode
  •   在h2master上执行hadoop/sbin/hadoop-daemons.sh start datanode   启动所有datanode节点
  •   此时访问如下链接
  •   http://master:50070/ http://slave3:50070/
  •   两个namenode都是standby状态
  •   6.5)  启动ZKFC (FailoverController) 必须是在namenode节点上启动 让zk来决定用哪个namenode作为active
  •   在master、slave3上 启动zkfc,执行命令sbin/hadoop-daemon.sh start zkfc
  •   此时访问   http://master:50070/ http://slave3:50070/ 结果如下:
  •   Overview 'master:9000' (active)
  •   Overview 'slave3:9000' (standby)
  7) 验证自动切换:
  关闭master的namenode进程:
  再次刷新
  http://h2master:50070/ http://slave3:50070/ 结果如下:
  Overview 'slave3:9000' (active)  ----> zk自动切换节点slave3为active状态
  master无法连接
  8) 总结:自动切换比手工切换多出来的步骤
  (1)配置上core-site.xml增加了配置项ha.zookeeper.quorum(zk集群的配置);
  hdfs-site.xml中把dfs.ha.automatic-failover.enabled.cluster1改为true
  (3)操作上格式化zk,执行命令bin/hdfs zkfc -formatZK;
  启动zkfc,执行命令sbin/hadoop-daemon.sh start zkfc


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-628346-1-1.html 上篇帖子: Hadoop 源代码分析(二三)FSDirectory 下篇帖子: Hadoop源代码分析(MapTask辅助类 I)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表