集群规划

node1 node2 node3
NameNode NameNode
JournalNode JournalNode JournalNode
DataNode DataNode DataNode
ZK ZK ZK
ResourceManager ResourceManager
NodeManager NodeManager NodeManager
ZKFC ZKFC
JobHistoryServer

配置过程

部署zookeeper并完成格式化

  1. tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/
  2. mkdir -p zkData
  3. mv zoo_sample.cfg zoo.cfg
  4. dataDir=/opt/module/zookeeper-3.4.10/zkData
  5. #######################cluster##########################
  6. server.2=hadoop102:2888:3888
  7. server.3=hadoop103:2888:3888
  8. server.4=hadoop104:2888:3888
  9. Server.A=B:C:D
  10. A是一个数字,表示这个是第几号服务器;
  11. B是这个服务器的IP地址;
  12. C是这个服务器与集群中的Leader服务器交换信息的端口;
  13. D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
  14. 集群模式下配置一个文件myid,这个文件在dataDir目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server

1.core-site.xml

  1. <configuration>
  2. <property>
  3. <name>fs.defaultFS</name>
  4. <value>hdfs://mycluster</value>
  5. </property>
  6. <!-- 指定hadoop运行时产生文件的存储目录 -->
  7. <property>
  8. <name>hadoop.tmp.dir</name>
  9. <value>/export/server/hadoop2.7/data/tmp</value>
  10. </property>
  11. <!-- 指定NameNode的HA高可用的zk地址 -->
  12. <property>
  13. <name>ha.zookeeper.quorum</name>
  14. <value>node1:2181,node2:2181,node3:2181</value>
  15. </property>
  16. <!-- 开启hdfs垃圾箱机制,指定垃圾箱中的文件七天之后就彻底删掉单位为分钟 -->
  17. <property>
  18. <name>fs.trash.interval</name>
  19. <value>10080</value>
  20. </property>
  21. </configuration>

2.hdfs-site.xml

  1. <configuration>
  2. <!-- 完全分布式集群名称 -->
  3. <property>
  4. <name>dfs.nameservices</name>
  5. <value>mycluster</value>
  6. </property>
  7. <!-- 集群中NameNode节点都有哪些 -->
  8. <property>
  9. <name>dfs.ha.namenodes.mycluster</name>
  10. <value>nn1,nn2</value>
  11. </property>
  12. <!-- nn1的RPC通信地址 -->
  13. <property>
  14. <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  15. <value>hadoop101:9000</value>
  16. </property>
  17. <!-- nn2的RPC通信地址 -->
  18. <property>
  19. <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  20. <value>hadoop102:9000</value>
  21. </property>
  22. <!-- nn1的http通信地址 -->
  23. <property>
  24. <name>dfs.namenode.http-address.mycluster.nn1</name>
  25. <value>hadoop101:50070</value>
  26. </property>
  27. <!-- nn2的http通信地址 -->
  28. <property>
  29. <name>dfs.namenode.http-address.mycluster.nn2</name>
  30. <value>hadoop102:50070</value>
  31. </property>
  32. <!-- 指定NameNode元数据在JournalNode上的存放位置 -->
  33. <property>
  34. <name>dfs.namenode.shared.edits.dir</name>
  35. <value>qjournal://hadoop101:8485;hadoop102:8485;hadoop103:8485/mycluster</value>
  36. </property>
  37. <!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 -->
  38. <property>
  39. <name>dfs.ha.fencing.methods</name>
  40. <value>sshfence</value>
  41. </property>
  42. <!-- 使用隔离机制时需要ssh无秘钥登录-->
  43. <property>
  44. <name>dfs.ha.fencing.ssh.private-key-files</name>
  45. <value>/home/atguigu/.ssh/id_rsa</value>
  46. </property>
  47. <!-- 声明journalnode服务器存储目录-->
  48. <property>
  49. <name>dfs.journalnode.edits.dir</name>
  50. <value>/opt/ha/data/jn</value>
  51. </property>
  52. <!-- 访问代理类:client,mycluster,active配置失败自动切换实现方式-->
  53. <property>
  54. <name>dfs.client.failover.proxy.provider.mycluster</name>
  55. <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  56. </property>
  57. </configuration>

3.yarn-site.xml

  1. <configuration>
  2. <property>
  3. <name>yarn.nodemanager.aux-services</name>
  4. <value>mapreduce_shuffle</value>
  5. </property>
  6. <!--启用resourcemanager ha-->
  7. <property>
  8. <name>yarn.resourcemanager.ha.enabled</name>
  9. <value>true</value>
  10. </property>
  11. <!--声明两台resourcemanager的地址-->
  12. <property>
  13. <name>yarn.resourcemanager.cluster-id</name>
  14. <value>cluster-yarn1</value>
  15. </property>
  16. <property>
  17. <name>yarn.resourcemanager.ha.rm-ids</name>
  18. <value>rm1,rm2</value>
  19. </property>
  20. <property>
  21. <name>yarn.resourcemanager.hostname.rm1</name>
  22. <value>hadoop102</value>
  23. </property>
  24. <property>
  25. <name>yarn.resourcemanager.hostname.rm2</name>
  26. <value>hadoop103</value>
  27. </property>
  28. <!--指定zookeeper集群的地址-->
  29. <property>
  30. <name>yarn.resourcemanager.zk-address</name>
  31. <value>hadoop102:2181,hadoop103:2181,hadoop104:2181</value>
  32. </property>
  33. <!--启用自动恢复-->
  34. <property>
  35. <name>yarn.resourcemanager.recovery.enabled</name>
  36. <value>true</value>
  37. </property>
  38. </configuration>

4.mapred-site.xml

  1. <property>
  2. <name>mapreduce.jobhistory.address</name>
  3. <value>hadoop101:10020</value>
  4. </property>
  5. <property>
  6. <name>mapreduce.jobhistory.webapp.address</name>
  7. <value>hadoop101:19888</value>
  8. </property>
  9. #注意此机器为resourcemanage的机器地址,

相关命令

hadoop-daemon.sh start namenode
hdfs namenode -bootstrapStandby
hdfs zkfc -formatZK
start-dfs.sh
hadoop103: 执行yarn-daemon.sh start resourcemanager
hadoop101:执行start-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver#启动historyserver
sbin/mr-jobhistory-daemon.sh stop historyserver # 停止historyserver
验证:hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.1.jar wordcount /twan/wc/input/ /twan/wc/output
查看活跃yarn :yarn rmadmin -getServiceState rm2
Hadoop-HDFS.docx