立即注册 登录
About云-梭伦科技 返回首页

atsky123的个人空间 https://aboutyun.com/?1413 [收藏] [复制] [分享] [RSS]

日志

hadoop2 搭建自动切换的ha集群 yarn集群

已有 1562 次阅读2015-12-18 11:35

hdfs yarn 启动成功后访问的地址如下:

http://h2master:50070/    hdfs

http://h2master:8088/cluster   yarn

 

 

0) 自动切换流程简介:
FailoverController Active
FailoverController Standby 
分别作为zk集群在namenode集群的代理
代理人感知到namenode集群出现了问题后,
zk集群会通过代理人FailoverController
将amenode集群中standby状态改为active


自动切换ha集群图如下:

FailoverController服务是zk的代理 ,内嵌在namenode服务中,接收zk的监督,

当某个namenode挂掉后,zk会通过shell脚本启动namenode standby节点变成active节点。

 

 


 


1) 各节点角色:
namenode:h2master h2master2
datanode:h2sliver112 h2sliver113 h2sliver114
journalnode:h2master h2master2 h2sliver112
zookeeper: h2master h2master2 h2sliver112

 

2)hadoop2 搭建手工切换ha的hdfs集群基础上:

a) 关闭所有启动角色
b) 删除所有机器/usr/local/hadoop2.5/tmp 和 /usr/local/hadoop2.5/logs的内容


3) zookeeper集群安装:

Java代码  收藏代码
  1. a) h2master上安装zookeeper  
  2.     a.1)把conf/zoo_sample.cfg重命名为conf/zoo.cfg  mv zoo_sample.cfg zoo.cfg  
  3.     a.2)修改文件conf/zoo.cfg  
  4.      1)dataDir=/usr/local/zookeeper/data  
  5.      2)增加以下内容  
  6.      server.1=h2master:2888:3888   ---> 标识1 是h2master对应在zookeeper集群的编号 2888:3888是数据通信端口  
  7.      server.2=h2master2:2888:3888  ---> 标识2 是h2master2对应在zookeeper集群的编号 2888:3888是数据通信端口  
  8.      server.3=h2sliver112:2888:3888 ---> 标识3 是h2sliver112对应在zookeeper集群的编号 2888:3888是数据通信端口  
  9.     a.3) mkdir zookeeper/data   
  10.     [root@h2master zookeeper]# mkdir data  
  11.     a.4) 写入文件echo 1到 zookeeper/data/myid 这样在本机h2master内写上标识1 两者关联起来  
  12.     [root@h2master zookeeper]# echo 1 > data/myid  
  13.   
  14.       
  15. b) 复制zookeeper文件夹到h2master2、h2sliver112上  
  16.   
  17.     scp -rq zookeeper  h2master2:/usr/local  
  18.     scp -rq zookeeper  h2sliver112:/usr/local  
  19.       
  20.       
  21. c) 其余节点写标识  
  22.     在h2master2上执行命令echo 2 zookeeper/data/myid  
  23.     在h2sliver112上执行命令echo 3 zookeeper/data/myid  
  24.   
  25.   
  26. d) 启动和验证  
  27.     在h2master、h2master2、h2sliver112上,分别执行命令zookeeper/bin/zkServer.sh start  
  28.     执行命令zookeeper/bin/zkServer.sh status 可以看到三个节点的状态 哪个是leader 哪个是follower   
  29.    

 

4) hdfs配置文件:(hadoop-env.sh、core-site.xml、hdfs-site.xml、slaves)

 

Java代码  收藏代码
  1. 2.1 配置文件(hadoop-env.sh、core-site.xml、hdfs-site.xml、slaves)  
  2. 2.1.1 hadoop-env.sh  
  3.   export JAVA_HOME=/usr/local/jdk1.7  
  4. 2.1.2 core-site.xml  
  5.   
  6. <property>  
  7. <name>fs.defaultFS</name>  
  8. <value>hdfs://cluster1</value>  
  9. </property>  
  10.   
  11. <property>  
  12. <name>hadoop.tmp.dir</name>  
  13. <value>/usr/local/hadoop2.5/tmp</value>  
  14. </property>  
  15.   
  16. <property>  
  17. <name>ha.zookeeper.quorum</name>    ------ 配置zk集群  
  18. <value>h2master:2181,h2master2:2181,h2sliver112:2181</value>  
  19. </property>  
  20.   
  21.   
  22. 2.1.3 hdfs-site.xml  
  23. <property>  
  24. <name>dfs.replication</name>  
  25. <value>3</value>  
  26. </property>  
  27.   
  28. <property>  
  29. <name>dfs.nameservices</name> ----每个nameservice对应一个hdfs集群  
  30. <value>cluster1</value>  
  31. </property>  
  32.   
  33. <property>  
  34. <name>dfs.ha.namenodes.cluster1</name>  
  35. <value>h2master,h2master2</value>  
  36. </property>  
  37.   
  38. <property>  
  39. <name>dfs.namenode.rpc-address.cluster1.h2master</name>  
  40. <value>h2master:9000</value>  
  41. </property>  
  42.   
  43. <property>  
  44. <name>dfs.namenode.http-address.cluster1.h2master</name>  
  45. <value>h2master:50070</value>  
  46. </property>  
  47.   
  48. <property>  
  49. <name>dfs.namenode.rpc-address.cluster1.h2master2</name>  
  50. <value>h2master2:9000</value>  
  51. </property>  
  52.   
  53. <property>  
  54. <name>dfs.namenode.http-address.cluster1.h2master2</name>  
  55. <value>h2master2:50070</value>  
  56. </property>  
  57.   
  58. <property>  
  59. <name>dfs.ha.automatic-failover.enabled.cluster1</name>  
  60. <value>true</value>  
  61. </property>  
  62.   
  63. <property>  
  64. <name>dfs.namenode.shared.edits.dir</name>  
  65. <value>qjournal://h2master:8485;h2master2:8485;h2sliver112:8485/cluster1</value>  
  66. </property>  
  67.   
  68. <property>  
  69. <name>dfs.journalnode.edits.dir</name>  
  70. <value>/usr/local/hadoop2.5/tmp/journal</value>  
  71. </property>  
  72.   
  73. <property>  
  74. <name>dfs.ha.fencing.methods</name>  
  75. <value>sshfence</value>  
  76. </property>  
  77.   
  78. <property>  
  79. <name>dfs.ha.fencing.ssh.private-key-files</name>  
  80. <value>/root/.ssh/id_rsa</value>  
  81. </property>  
  82.   
  83. <property>  
  84. <name>dfs.client.failover.proxy.provider.cluster1</name>  
  85. <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>  
  86. </property>  
  87.   
  88. 2.1.6 slaves -----> 指定NodeManager 和 datanode   
  89. h2sliver112    
  90. h2sliver113    
  91. h2sliver114    

 

 

 

5) 删除其他节点的hadoop文件夹,修改好后拷贝到其余节点
scp -r /usr/local/hadoop2.5  h2master2:/usr/local/

 

6) 启动hadoop2 hdfs集群

 

Java代码  收藏代码
  1. 6.1) 格式化zk集群  
  2.   在h2master上执行hadoop2.5/bin/hdfs zkfc -formatZK   此操作仅仅表示和zk集群发生关联  
  3.   15/01/11 18:14:20 INFO ha.ActiveStandbyElector: Successfully created /hadoop-ha/cluster1 in ZK.  
  4.   
  5. 6.2) 启动journalnode集群  
  6.   在h2master、h2master2、h2sliver112上分别执行hadoop/sbin/hadoop-daemon.sh start journalnode  
  7. 6.3) 格式化namenode、启动namenode  
  8.   在h2master上执行bin/hdfs namenode -format  
  9.   在h2master上执行sbin/hadoop-daemon.sh start namenode  
  10.   在h2master2上执行bin/hdfs namenode -bootstrapStandby  
  11.   在h2master2上执行sbin/hadoop-daemon.sh start namenode  
  12. 6.4)  启动datanode  
  13.   在h2master上执行hadoop/sbin/hadoop-daemons.sh start datanode   启动所有datanode节点  
  14.   此时访问如下链接  
  15.   http://h2master:50070/ http://h2master2:50070/  
  16.   两个namenode都是standby状态  
  17. 6.5)  启动ZKFC (FailoverController) 必须是在namenode节点上启动 让zk来决定用哪个namenode作为active  
  18.   在h2master、h2master上 启动zkfc,执行命令sbin/hadoop-daemon.sh start zkfc  
  19.   此时访问   http://h2master:50070/ http://h2master2:50070/ 结果如下:  
  20.   Overview 'h2master:9000' (active)  
  21.   Overview 'h2master2:9000' (standby)  

 

7) 验证自动切换:

 

  关闭h2master的namenode进程: 
  再次刷新
   http://h2master:50070/ http://h2master2:50070/ 结果如下:
   Overview 'h2master2:9000' (active)  ----> zk自动切换节点h2master2为active状态
   h2master无法连接

 

8) 总结:自动切换比手工切换多出来的步骤


  (1)配置上core-site.xml增加了配置项ha.zookeeper.quorum(zk集群的配置);
     hdfs-site.xml中把dfs.ha.automatic-failover.enabled.cluster1改为true
  (2)操作上格式化zk,执行命令bin/hdfs zkfc -formatZK;
     启动zkfc,执行命令sbin/hadoop-daemon.sh start zkfc
  

 

 

 如下操作不需要关闭所有服务,仅需要对yarn涉及到的服务进行关闭开启即可

 

 9) 搭建yarn集群:  仅需要配置Resourcemanager即可

 

 

为了能够运行MapReduce程序,需要让各个NodeManager在启动时加载shuffle server,shuffle server实际上是Jetty/Netty Server,Reduce Task通过该server从各个NodeManager上远程拷贝Map Task产生的中间结果。 这就是配置

Java代码  收藏代码
  1. yarn.nodemanager.aux-services的作用  

 

Java代码  收藏代码
  1. 集群各节点上:  
  2.   
  3. 修改配置文件 yarn-site.xml  
  4.   
  5. <property>  
  6. <name>yarn.resourcemanager.hostname</name> ----  指定resourcemanager是哪个节点  
  7. <value>h2master</value>  
  8. </property>  
  9.   
  10. <property>  
  11. <name>yarn.nodemanager.aux-services</name>  
  12. <value>mapreduce_shuffle</value>  
  13. </property>  
  14.   
  15. <property>   // 开启日志归集 这样在8088节点上能看到日志信息  
  16. <name>yarn.log-aggregation-enable</name>  
  17. <value>true</value>  
  18. </property>  
  19.   
  20.   
  21.   
  22. 修改配置文件 mapred-site.xml  
  23.   
  24. <property>  
  25. <name>mapreduce.framework.name</name>  --- 指定mapreduce 运行形式使用yarn  
  26. <value>yarn</value>  
  27. </property>  
  28.   
  29.   
  30. 启动在h2master上执行 hadoop/sbin/start-yarn.sh  
  31.   
  32.   
  33. 后访问:  
  34. http://h2master:8088/cluster  

 

10 yarn上启动historyserver(目的,在页面上可以看任务执行的所有节点日志信息汇总)

 

Java代码  收藏代码
  1. 1.在mapred-site中配置  
  2. <property>  
  3.         <name>mapreduce.jobhistory.address</name>  
  4.         <value>h2master:10020</value>  
  5.         <description>MapReduce JobHistory Server host:port.    Default port is 10020.</description>  
  6.     </property>  
  7.     <property>  
  8.         <name>mapreduce.jobhistory.webapp.address</name> ---指定historyserver在web端访问地址  
  9.         <value>h2master:19888</value>  
  10.         <description>MapReduce JobHistory Server Web UI host:port. Default port is 19888.</description>  
  11.     </property>  
  12.  <property>  
  13.         <name>mapreduce.jobhistory.intermediate-done-dir</name>  ---指定historyserver收集各节点日志后存放的数据路径  
  14.         <value>/usr/local/hadoop2.5/tmp/mr_history</value>  
  15.         <description>Directory where history files are written by MapReduce jobs.</description>  
  16.     </property>  
  17.     <property>  
  18.         <name>mapreduce.jobhistory.done-dir</name>  
  19.         <value>/usr/local/hadoop2.5/tmp/mr_history</value>  
  20.         <description>Directory where history files are managed by the MR JobHistory Server.</description>  
  21.     </property>  
  22.   
  23. 2.在yarn-site.xml中配置  
  24. <property>    
  25.     <name>yarn.log-aggregation-enable</name>   ---启动historyserver收集各节点日志功能这样才能在web端的访问地址上统一查看日志  
  26.     <value>true</value>    
  27. </property>     
  28.   
  29.   
  30.   
  31.   
  32. 3.配置文件复制到集群的其他节点  
  33.   
  34. 4.重新启动yarn平台  
  35.   h2master上  
  36.   sbin/stop-yarn.sh  
  37.   sbin/start-yarn.sh  
  38.   
  39.   最后执行sbin/mr-jobhistory-daemon.sh start historyserver  

 


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条