[关闭]
@zhangyy 2021-10-12T17:12:55.000000Z 字数 8901 阅读 164

Hadoop 2.5.2 HDFS HA+YARN HA 应用配置

hadoop的部分


  • 一:所需安装配置包
  • 二:CentOS6.4x64 主机名配置
  • 三:journalnode 配置zookeeper 安装
  • 四:在namenode节点上部署hadoop 2.5.2
  • 五:hadoop 集群的测试:

一:所需安装配置包

  1. 系统:CentOS 6.4 X64
  2. 软件:Hadoop-2.5.2.tar.gz
  3. native-2.5.2.tar.gz
  4. zookeeper-3.4.6.tar.gz
  5. jdk-7u67-linux-x64.tar.gz
  6. 将所有软件安装上传到/home/hadoop/yangyang/ 下面

二:CentOS6.4x64 主机名配置

  1. vim /etc/hosts (五台虚拟机全部配置)
  2. 192.168.3.1 namenode1.hadoop.com
  3. 192.168.3.2 namenode2.hadoop.com
  4. 192.168.3.3 journalnode1.hadoop.com
  5. 192.168.3.4 journalnode2.hadoop.com
  6. 192.168.3.5 journalnode3.hadoop.com

角色分配表:
1.png-26.1kB

2.1:配置无密钥认证

  1. 所有服务器均配置-------------
  2. ssh-keygen ----------------一直到最后:
  3. 每台机器会生成一个id_rsa.pub 文件,
  4. 将所有的密钥生成导入一个authorized_keys文件里面
  5. cat id.rsa.pub >> authorized_keys
  6. 然后从新分发到每台服务器的 .ssh/目录下面。
  7. 最后进行测试。

2.2: 安装jdk7u67

  1. 所有服务器均配置。
  2. 安装jdk
  3. tar -zxvf jdk-7u67-linux-x64.tar.gz
  4. mv jdk-7u67-linux-x64 jdk
  5. 环境变量配置
  6. vim .bash_profile
  7. 到最后加上:

  1. export JAVA_HOME=/home/hadoop/yangyang/jdk
  2. export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
  3. export HADOOP_HOME=/home/hadoop/yangyang/hadoop
  4. PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:${HADOOP_HOME}/bin

  1. 等所有软件安装部署完毕在进行:
  2. source .bash_profile
  3. java version

2.png-38.8kB

2.3 配置NTP Server 时间同步服务器

  1. namenode1.hadoop.com 配置 作为NTP SERVER, 其它节点同步NTP 配置:
  2. Namenode1.hadoop.com去网上同步时间

3.png-17.3kB

  1. echo ntpdate u 202.112.10.36 >> /etc/rc.d/rc.local
  2. #加入到开机自启动
  3. vim /etc/ntp.conf

4.png-7.7kB
取消下面两行的#
5.png-5.9kB
#vim /etc/sysconfig/ntpd
增加:
6.png-4.3kB

  1. #service ntpd restart
  2. #chkconfig ntpd on

7.png-29.8kB

  1. 其它节点 配置计划任务处理将从namenode1.hadoop.com 同步时间
  2. crontab e
  3. */10 * * * * /usr/sbin/ntpdate namnode1.hadoop.com

  1. Namenode2.hadoop.com

8.png-26.7kB

  1. Journalnode1.hadoop.com

9.png-30.8kB

  1. Jornalnode2.hadoop.com

10.png-27.7kB

  1. Journalndoe3.hadoop.com

11.png-25.3kB


三: journalnode 配置zookeeper 安装

### 3.1 安装zookeeper软件

  1. mv zookeeper-3.4.6 /home/hadoop/yangyang/zookeeper
  2. cd /home/yangyang/hadoop/zookeeper/conf
  3. cp -p zoo_sample.cfg zoo.cfg
  4. vim zoo.cfg
  5. 更改dataDir 目录
  6. dataDir=/home/hadoop/yangyang/zookeeper/data
  7. 配置journal主机的
  8. server.1=journalnode1.hadoop.com:2888:3888
  9. server.2=journalnode2.hadoop.com:2888:3888
  10. server.3=journalnode3.hadoop.com:2888:3888

12.png-4.8kB

3.2 创建ID 文件

  1. mkdir /home/hadoop/yangyang/zookeeper/data
  2. echo 1 > /home/hadoop/yangyang/zookeeper/myid
  3. cd /home/hadoop/yangyang/
  4. scp r zookeeper hadoop@journalnode2.hadoop.com:/home/hadoop/yangyang/
  5. scp r zookeeper hadoop@journalnode3.hadoop.com:/home/hadoop/yangyang/

13.png-58.7kB

3.3 更改journalnode2 与journalnode3

  1. Journalnode2.hadoop.com :
  2. echo 2 > /home/hadoop/yangyang/zookeeper/data/myid
  3. Journalnode3.hadoop.com:
  4. echo 3 > /home/hadoop/yangyang/zookeeper/myid
  5. - 3.4 所有journalnode 节点启动zookeeper
  6. cd /home/hadoop/yangyang/zookeeper/bin
  7. ./zkServer.sh start
  8. ---------------------显示以下内容为正常---------------------------

14.png-34kB


四:在namenode节点上部署hadoop 2.5.2----

  1. tar zxvf hadoop-2.5.2.tar.gz
  2. mv hadoop-2.5.2 /home/hadoop/yangyang/hadoop/

4.1修改hadoop-env.sh

  1. cd /home/hadoop/yangyang/hadoop/
  2. vim etc/hadoop/hadoop-env.sh
  3. 增加jdk 的环境变量

  1. export JAVA_HOME=/home/hadoop/yangyang/jdk
  2. export HADOOP_PID_DIR=/home/hadoop/yangyang/hadoop/data/tmp
  3. export HADOOP_SECURE_DN_PID_DIR=/home/hadoop/yangyang/hadoop/data/tmp
  1. vim etc/hadoop/mapred-env.sh
  2. 增加jdk 的环境
  3. export JAVA_HOME=/home/hadoop/yangyang/jdk
  4. export HADOOP_MAPRED_PID_DIR=/home/hadoop/yangyang/hadoop/data/tmp
  5. vim etc/hadoop/yarn-env.sh
  6. export JAVA_HOME=/home/hadoop/yangyang/jdk

4.2 修改core-site.xml

  1. vim etc/hadoop/core-site.xml
  2. <configuration>
  3. <!-- 指定hdfsnameservicemycluster -->
  4. <property>
  5. <name>fs.defaultFS</name>
  6. <value>hdfs://mycluster</value>
  7. </property>
  8. <!-- 指定hadoop临时目录 -->
  9. <property>
  10. <name>hadoop.tmp.dir</name>
  11. <value>/home/hadoop/yangyang/hadoop/data/tmp</value>
  12. </property>
  13. <!-- 指定zookeeper地址 -->
  14. <property>
  15. <name>ha.zookeeper.quorum</name>
  16. <value>journalnode1.hadoop.com:2181,journalnode2.hadoop.com:2181,journalnode3.hadoop.com:2181</value>
  17. </property>
  18. </configuration>

4.3 修改hdfs-stie.xml

  1. vim etc/hadoop/hdfs-site.xml
  2. <configuration>
  3. <!--指定hdfs的副本数-->
  4. <property>
  5. <name>dfs.replication</name>
  6. <value>3</value>
  7. </property>
  8. <!--指定hdfsnameservicemycluster,需要和core-site.xml中的保持一致 -->
  9. <property>
  10. <name>dfs.nameservices</name>
  11. <value>mycluster</value>
  12. </property>
  13. <!-- masters下面有两个NameNode,分别是nn1nn2 -->
  14. <property>
  15. <name>dfs.ha.namenodes.mycluster</name>
  16. <value>nn1,nn2</value>
  17. </property>
  18. <!—nn1RPC通信地址 -->
  19. <property>
  20. <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  21. <value>namenode1.hadoop.com:8020</value>
  22. </property>
  23. <!-- nn1http通信地址 -->
  24. <property>
  25. <name>dfs.namenode.http-address.mycluster.nn1</name>
  26. <value>namenode1.hadoop.com:50070</value>
  27. </property>
  28. <!-- nn2RPC通信地址 -->
  29. <property>
  30. <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  31. <value>namenode2.hadoop.com:8020</value>
  32. </property>
  33. <!-- nn2http通信地址 -->
  34. <property>
  35. <name>dfs.namenode.http-address.mycluster.nn2</name>
  36. <value>namenode2.hadoop.com:50070</value>
  37. </property>
  38. <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
  39. <property>
  40. <name>dfs.namenode.shared.edits.dir</name>
  41. <value>qjournal://journalnode1.hadoop.com:8485;journalnode2.hadoop.com:8485;journalnode3.hadoop.com:8485/mycluster</value>
  42. </property>
  43. <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
  44. <property>
  45. <name>dfs.journalnode.edits.dir</name>
  46. <value>/home/hadoop/yangyang/hadoop/data/jn</value>
  47. </property>
  48. <!-- 开启NameNode失败自动切换 -->
  49. <property>
  50. <name>dfs.ha.automatic-failover.enabled</name>
  51. <value>true</value>
  52. </property>
  53. <!-- 配置失败自动切换实现方式 -->
  54. <property>
  55. <name>dfs.client.failover.proxy.provider.masters</name>
  56. <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  57. </property>
  58. <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
  59. <property>
  60. <name>dfs.ha.fencing.methods</name>
  61. <value>
  62. sshfence
  63. shell(/bin/true)
  64. </value>
  65. </property>
  66. <!-- 使用sshfence隔离机制时需要ssh免登陆 -->
  67. <property>
  68. <name>dfs.ha.fencing.ssh.private-key-files</name>
  69. <value>/home/hadoop/.ssh/id_rsa</value>
  70. </property>
  71. <!-- 配置sshfence隔离机制超时时间 -->
  72. <property>
  73. <name>dfs.ha.fencing.ssh.connect-timeout</name>
  74. <value>30000</value>
  75. </property>
  76. </configuration>

4.4 修改mapred-site.xml

  1. vim etc/hadoop/mapred-site.xml
  2. <configuration>
  3. <!-- 指定mr框架为yarn方式 -->
  4. <property>
  5. <name>mapreduce.framework.name</name>
  6. <value>yarn</value>
  7. </property>
  8. <!-- 指定HDFS的日志聚合功能 -->
  9. <property>
  10. <name>mapreduce.jobhistory.address</name>
  11. <value>journalnode3.hadoop.com:10020</value>
  12. </property>
  13. <property>
  14. <name>mapreduce.jobhistory.webapp.address</name>
  15. <value>journalnode3.hadoop.com:19888</value>
  16. </property>
  17. </configuration>

4.5修改yarn-site.xml

  1. vim etc/hadoop/yarn-site.xml
  2. <configuration>
  3. <!-- 开启RM高可靠 -->
  4. <property>
  5. <name>yarn.resourcemanager.ha.enabled</name>
  6. <value>true</value>
  7. </property>
  8. <!-- 指定RMcluster id -->
  9. <property>
  10. <name>yarn.resourcemanager.cluster-id</name>
  11. <value>RM_HA_ID</value>
  12. </property>
  13. <!-- 指定RM的名字 -->
  14. <property>
  15. <name>yarn.resourcemanager.ha.rm-ids</name>
  16. <value>rm1,rm2</value>
  17. </property>
  18. <!-- 分别指定RM的地址 -->
  19. <property>
  20. <name>yarn.resourcemanager.hostname.rm1</name>
  21. <value>namenode1.hadoop.com</value>
  22. </property>
  23. <property>
  24. <name>yarn.resourcemanager.hostname.rm2</name>
  25. <value>namenode2.hadoop.com</value>
  26. </property>
  27. <property>
  28. <name>yarn.resourcemanager.recovery.enabled</name>
  29. <value>true</value>
  30. </property>
  31. <property>
  32. <name>yarn.resourcemanager.store.class</name>
  33. <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
  34. </property>
  35. <!-- 指定zk集群地址 -->
  36. <property>
  37. <name>yarn.resourcemanager.zk-address</name>
  38. <value>journalnode1.hadoop.com:2181,journalnode2.hadoop.com:2181,journalnode3.hadoop.com:2181</value>
  39. </property>
  40. <property>
  41. <name>yarn.nodemanager.aux-services</name>
  42. <value>mapreduce_shuffle</value>
  43. </property>
  44. </configuration>

4.6更换native 文件

  1. rm -rf lib/native/*
  2. tar –zxvf hadoop-native-2.5.2.tar.gz –C hadoop/lib/native
  3. cd hadoop/lib/native/

15.png-52.9kB

4.7 修改slaves 文件

  1. vim etc/hadoop/slaves
  2. journalnode1.hadoop.com
  3. journalnode2.hadoop.com
  4. journalnode3.hadoop.com

4.8 所有节点同步:

  1. cd /home/hadoop/yangyang/
  2. scp r hadoop hadoop@namenode2.hadoop.com:/home/hadoop/yangyang/
  3. scp r hadoop hadoop@journalnode1.hadoop.com:/home/hadoop/yangyang/
  4. scp r hadoop hadoop@journalnode2.hadoop.com:/home/hadoop/yangyang/
  5. scp r hadoop hadoop@journalnode3.hadoop.com:/home/hadoop/yangyang/
  6. - 4.9 启动所有 journalnode 节点的journalnode服务
  7. cd /home/hadoop/yangyang/hadoop/sbin
  8. ./ hadoop-daemon.sh start journalnode
  9. ---------------------------显示内容--------------------------

16.png-12.7kB

4.10 启动namenode 节点的HDFS

  1. cd /home/hadoop/yangyang/hadoop/bin
  2. ./hdfs namenode format
  3. ![17.png-101.7kB][17]
  4. namenode1上生成的data文件夹复制到namenode2的相同目录下
  5. scp  -r  hadoop/data/  hadoop@namenode2.hadoop.com:/home/hadoop/yangyang/hadoop

18.png-22.1kB

4.11格式化ZK 在namenode1 上面执行

  1. cd /home/hadoop/yangyang/hadoop/bin
  2. ./ hdfs zkfc formatZK

19.png-72.1kB

4.12 启动hdfs 与yarn 服务:

  1. ./start-dfs.sh
  2. ./ start-yarn.sh

20.png-89.6kB

4.13 namenode2上的standby resourcemanger是需要手动启动的

  1. cd /home/hadoop/yangyang/hadoop/sbin
  2. ./yarn-daemon.sh start resourcemanager

4.14通过web查看集群状态

  1. 查看namenode
  2. http://namenode1.hadoop.com:50070/

21.png-49.5kB

  1. http://namenode2.hadoop.com:50070/

22.png-47.7kB

  1. 查看resourcemanger
  2. http://namenode1.hadoop.com:8088/

23.png-48.5kB
24.png-47.9kB

  1. http://namenode2.hadoop.com:8088/

25.png-6.3kB

4.15启动journalnode3.hadoop.com 的jobhistory 功能:

  1. cd /home/hadoop/yangyang/hadoop/sbin/
  2. ./mr-jobhistory-daemon.sh start historyserver

26.png-14.5kB


五:hadoop 集群的测试:

5.1 HDFS 的故障转移

  1. 杀掉namenode1.haoop.com 上的namenode

27.png-51.6kB

  1. namenode2.haoop.com stundby 则切换为active状态。

28.png-34.4kB

  1. 启动namenode1.hadoop.com namenode 节点
  2. cd /home/hadoop/yangyang/hadoop/sbin/
  3. ./hadoop-daemon.sh start namenode

29.png-13.4kB

  1. 打开namenode1.hadoop.com 的浏览器

30.png-36.5kB

5.2 yarn的故障转移:

  1. hadoop fs mkdir /input
  2. hadoop fs put file1 /input/

31.png-38.8kB

  1. 在运行wordcount 杀掉 namenode1.hadoop.com resourcemanager
  2. 运行wordcount
  3. cd /home/hadoop/yangyang/hadoop/share/hadoop/mapreduce
  4. yarn jar hadoop-mapreduce-examples-2.5.2.jar wordcount /input/file1 /output

32.png-63.2kB

  1. 杀掉namenode1.hadoop.com 上的rescourcemanager

33.png-7.7kB

  1. Namenode2.hadoop.com yarn 切换为actvie

34.png-56.9kB

  1. Wordcount 运行执行结束:

35.png-69.7kB
36.png-56.3kB

  1. 查看jobhistory 页面

37.png-34.7kB
38.png-56.1kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注