Hadoop:HA搭建

女爷i 2024-03-17 22:39 154阅读 0赞

准备工作

在这里插入图片描述

1.把集群全部停掉

在三台节点上都做(通过右键——> 发送输入到—>所有会话)=====================

2.在/opt下创建ha目录
sudo mkdir /opt/ha

3.设置所属主和所属组
sudo chown atguigu:atguigu ha

====================改回来 :通过右键——>发送输入到——当前会话
=在hadoop102

4.将原hadoop拷贝到/opt/ha下(在hadoop102上即可–后面会分发)
cp -r /opt/module/hadoop-3.1.3 /opt/ha

5.将/opt/ha下的hadoop里面的data logs 和/tmp/* 全部删除
(在hadoop102上即可–因为hadoop103和hadoop104没有分发呢)
rm -rf data logs
sudo rm -rf /tmp/*

6.配置环境变量(将指向/opt/module/hadoop-3.1.3 修改成指向/opt/ha/hadoop-3.1.3)
sudo vim /etc/profile.d/my_env.sh

  1. 修改
  2. #定义HADOOP_HOME变量
  3. export HADOOP_HOME=/opt/ha/hadoop-3.1.3

7.分发环境变量
sudo scp -r /etc/profile.d/my_env.sh hadoop103:/etc/profile.d/my_env.sh
sudo scp -r /etc/profile.d/my_env.sh hadoop104:/etc/profile.d/my_env.sh

8.让hadoop102,hadoop103,hadoop104环境变量生效
全部断开连接重新连。
每台节点一定要验证 :echo $HADOOP_HOME

9.分发
xsync /opt/ha/hadoop-3.1.3

NN-HA配置

1.准备工作做好

2.配置core-site.xml

fs.defaultFS
hdfs://mycluster

  1. <!-- 指定hadoop运行时产生文件的存储目录 -->
  2. <property>
  3. <name>hadoop.tmp.dir</name>
  4. <value>/opt/ha/hadoop-3.1.3/data</value>
  5. </property>

2.配置hdfs-site.xml

  1. <!-- NameNode数据存储目录 -->
  2. <property>
  3. <name>dfs.namenode.name.dir</name>
  4. <value>file://${hadoop.tmp.dir}/name</value>
  5. </property>
  6. <!-- DataNode数据存储目录 -->
  7. <property>
  8. <name>dfs.datanode.data.dir</name>
  9. <value>file://${hadoop.tmp.dir}/data</value>
  10. </property>
  11. <!-- JournalNode数据存储目录 -->
  12. <property>
  13. <name>dfs.journalnode.edits.dir</name>
  14. <value>${hadoop.tmp.dir}/jn</value>
  15. </property>
  16. <!-- 完全分布式集群名称 -->
  17. <property>
  18. <name>dfs.nameservices</name>
  19. <value>mycluster</value>
  20. </property>
  21. <!-- 集群中NameNode节点都有哪些 -->
  22. <property>
  23. <name>dfs.ha.namenodes.mycluster</name>
  24. <value>nn1,nn2,nn3</value>
  25. </property>
  26. <!-- NameNode的RPC通信地址 -->
  27. <property>
  28. <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  29. <value>hadoop102:8020</value>
  30. </property>
  31. <property>
  32. <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  33. <value>hadoop103:8020</value>
  34. </property>
  35. <property>
  36. <name>dfs.namenode.rpc-address.mycluster.nn3</name>
  37. <value>hadoop104:8020</value>
  38. </property>
  39. <!-- NameNode的http通信地址 -->
  40. <property>
  41. <name>dfs.namenode.http-address.mycluster.nn1</name>
  42. <value>hadoop102:9870</value>
  43. </property>
  44. <property>
  45. <name>dfs.namenode.http-address.mycluster.nn2</name>
  46. <value>hadoop103:9870</value>
  47. </property>
  48. <property>
  49. <name>dfs.namenode.http-address.mycluster.nn3</name>
  50. <value>hadoop104:9870</value>
  51. </property>
  52. <!-- 指定NameNode元数据在JournalNode上的存放位置 -->
  53. <property>
  54. <name>dfs.namenode.shared.edits.dir</name>
  55. <value>qjournal://hadoop102:8485;hadoop103:8485;hadoop104:8485/mycluster</value>
  56. </property>
  57. <!-- 访问代理类:client用于确定哪个NameNode为Active -->
  58. <property>
  59. <name>dfs.client.failover.proxy.provider.mycluster</name>
  60. <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  61. </property>
  62. <!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 -->
  63. <property>
  64. <name>dfs.ha.fencing.methods</name>
  65. <value>sshfence</value>
  66. </property>
  67. <!-- 使用隔离机制时需要ssh秘钥登录-->
  68. <property>
  69. <name>dfs.ha.fencing.ssh.private-key-files</name>
  70. <value>/home/atguigu/.ssh/id_rsa</value>
  71. </property>

分发=======

3.在(hadoop102,hadoop103,hadoop104)启动journalnode
hdfs —daemon start journalnode

4.在[hadoop102]上,对其进行格式化,并启动NameNode
hdfs namenode -format
hdfs —daemon start namenode

5.在hadoop103和hadoop104上同步元数据并启动NameNode
hdfs namenode -bootstrapStandby
hdfs —daemon start namenode

6.启动三台节点上的datanode
hdfs —daemon start datanode

手动故障转移=============================

7.将[nn1–hadoop102]切换为Active
hdfs haadmin -transitionToActive nn1

8.查看是否Active
hdfs haadmin -getServiceState nn1

自动故障转移===============================
1.配置文件 注意!!!!!如果只是玩手动故障转移不要配置下面的内容
(1)在hdfs-site.xml中增加

dfs.ha.automatic-failover.enabled
true

(2)在core-site.xml文件中增加

ha.zookeeper.quorum
hadoop102:2181,hadoop103:2181,hadoop104:2181

  1. 分发=======

(1)关闭所有HDFS服务:
stop-dfs.sh
(2)启动Zookeeper集群:
zkCluster.sh start
(3)初始化HA在Zookeeper中状态:
hdfs zkfc -formatZK
(4)启动HDFS服务:
start-dfs.sh

(5)验证
将active的那台namenode给停掉查看其它namenode有没有变成active
hdfs —daemon stop namenode

13074 JournalNode
12275 QuorumPeerMain
13300 DFSZKFailoverController
12700 NameNode
12829 DataNode

RM-HA配置

1.在NN的HA配置好的前提下

2.配置yarn-site.xml

yarn.nodemanager.aux-services
mapreduce_shuffle

  1. <!-- 启用resourcemanager ha -->
  2. <property>
  3. <name>yarn.resourcemanager.ha.enabled</name>
  4. <value>true</value>
  5. </property>
  6. <!-- 声明两台resourcemanager的地址 -->
  7. <property>
  8. <name>yarn.resourcemanager.cluster-id</name>
  9. <value>cluster-yarn1</value>
  10. </property>
  11. <!--指定resourcemanager的逻辑列表-->
  12. <property>
  13. <name>yarn.resourcemanager.ha.rm-ids</name>
  14. <value>rm1,rm2,rm3</value>
  15. </property>
  16. <!-- 指定rm1的主机名 -->
  17. <property>
  18. <name>yarn.resourcemanager.hostname.rm1</name>
  19. <value>hadoop102</value>
  20. </property>
  21. <!-- 指定rm1的web端地址 -->
  22. <property>
  23. <name>yarn.resourcemanager.webapp.address.rm1</name>
  24. <value>hadoop102:8088</value>
  25. </property>
  26. <!-- 指定rm1的内部通信地址 -->
  27. <property>
  28. <name>yarn.resourcemanager.address.rm1</name>
  29. <value>hadoop102:8032</value>
  30. </property>
  31. <!-- 指定AM向rm1申请资源的地址 -->
  32. <property>
  33. <name>yarn.resourcemanager.scheduler.address.rm1</name>
  34. <value>hadoop102:8030</value>
  35. </property>
  36. <!-- 指定供NM连接的地址 -->
  37. <property>
  38. <name>yarn.resourcemanager.resource-tracker.address.rm1</name>
  39. <value>hadoop102:8031</value>
  40. </property>
  41. <!-- 指定rm2的主机名 -->
  42. <property>
  43. <name>yarn.resourcemanager.hostname.rm2</name>
  44. <value>hadoop103</value>
  45. </property>
  46. <property>
  47. <name>yarn.resourcemanager.webapp.address.rm2</name>
  48. <value>hadoop103:8088</value>
  49. </property>
  50. <property>
  51. <name>yarn.resourcemanager.address.rm2</name>
  52. <value>hadoop103:8032</value>
  53. </property>
  54. <property>
  55. <name>yarn.resourcemanager.scheduler.address.rm2</name>
  56. <value>hadoop103:8030</value>
  57. </property>
  58. <property>

yarn.resourcemanager.resource-tracker.address.rm2
hadoop103:8031

  1. <!-- 指定rm1的主机名 -->
  2. <property>
  3. <name>yarn.resourcemanager.hostname.rm3</name>
  4. <value>hadoop104</value>
  5. </property>
  6. <!-- 指定rm1的web端地址 -->
  7. <property>
  8. <name>yarn.resourcemanager.webapp.address.rm3</name>
  9. <value>hadoop104:8088</value>
  10. </property>
  11. <!-- 指定rm1的内部通信地址 -->
  12. <property>
  13. <name>yarn.resourcemanager.address.rm3</name>
  14. <value>hadoop104:8032</value>
  15. </property>
  16. <!-- 指定AM向rm1申请资源的地址 -->
  17. <property>
  18. <name>yarn.resourcemanager.scheduler.address.rm3</name>
  19. <value>hadoop104:8030</value>
  20. </property>
  21. <!-- 指定供NM连接的地址 -->
  22. <property>
  23. <name>yarn.resourcemanager.resource-tracker.address.rm3</name>
  24. <value>hadoop104:8031</value>
  25. </property>
  26. <!-- 指定zookeeper集群的地址 -->
  27. <property>
  28. <name>yarn.resourcemanager.zk-address</name>
  29. <value>hadoop102:2181,hadoop103:2181,hadoop104:2181</value>
  30. </property>
  31. <!-- 启用自动恢复 -->
  32. <property>
  33. <name>yarn.resourcemanager.recovery.enabled</name>
  34. <value>true</value>
  35. </property>
  36. <!-- 指定resourcemanager的状态信息存储在zookeeper集群 -->
  37. <property>
  38. <name>yarn.resourcemanager.store.class</name>
  39. <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
  40. <!-- 环境变量的继承 -->
  41. <property>
  42. <name>yarn.nodemanager.env-whitelist</name>
  43. <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
  44. </property>

3.分发文件

4.在hadoop102中执行:
start-yarn.sh

5.查看服务状态
yarn rmadmin -getServiceState rm1

  1. yarn --daemon stop resourcemanager

发表评论

表情:
评论列表 (有 0 条评论,154人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Hexo 与配置

        其实很久之前就有搭建自己博客的想法,但是一直都没有时间去实践,最近刚好有时间,就尝试搭建了一下,不多说废话,直接进入主题,首先就是环境问题了 准备环境