0


【Hadoop-HA 搭建】hadoop-ha 高可用集群配置

搭建hadoop高可用集群,首先确保搭建了hadoop集群,zookeeper集群。hadoop 三个集群节点分别为主节点 master,两个副节点node01、node02。

hadoop集群配置

配置core-site.xml

vi core-site.xml

<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/data</value> </property> </configuration>

配置 hdfs-site.xml

vi hdfs-site.xml

<configuration> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property> <property> <name>dfs.namenode.http-address</name> <value>node01:9870</value> </property> </configuration>

配置 mapred-site.xml

vi mapred-site.xml

<configuration> <property>
  1. <name>mapreduce.framework.name</name>
  2. <value>yarn</value>
  3. </property>
</configuration>

配置 yarn-site.xml

vi yarn-site.xml

<configuration> <property>
  1. <name>yarn.resourcemanager.hostname</name>
  2. <value>master</value>
  3. </property>
  4. <property>
  5. <name>yarn.nodemanager.aux-services</name>
  6. <value>mapreduce_shuffle</value>
  7. </property>
  8. <property>
  9. <name>yarn.application.classpath</name>
  10. <value>/usr/local/hadoop/etc/hadoop:/usr/local/hadoop/share/hadoop/common/lib/*:/usr/local/hadoop/share/hadoop/common/*:/usr/local/hadoop/share/hadoop/hdfs:/usr/local/hadoop/share/hadoop/hdfs/lib/*:/usr/local/hadoop/share/hadoop/hdfs/*:/usr/local/hadoop/share/hadoop/mapreduce/lib/*:/usr/local/hadoop/share/hadoop/mapreduce/*:/usr/local/hadoop/share/hadoop/yarn:/usr/local/hadoop/share/hadoop/yarn/lib/*:/usr/local/hadoop/share/hadoop/yarn/*</value>
  11. </property>
  12. <property>
  13. <name>yarn.resourcemanager.webapp.address</name>
  14. <value>node01:8088</value>
  15. </property>
</configuration>

hadoop-ha集群配置

配置 core-site.xml

vi core-site.xml

<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://ns</value> </property>
  1. <property>
  2. <name>hadoop.tmp.dir</name>
  3. <value>/usr/local/hadoop/data</value>
  4. </property>
  5. <property>
  6. <name>io.file.buffer.size</name>
  7. <value>131702</value>
  8. <description>缓存大小设置,单位为KB,131072KB即为默认的64M</description>
  9. </property>
  10. <property>
  11. <name>ha.zookeeper.quorum</name>
  12. <value>master:2181,node01:2181,node02:2181</value>
  13. </property>
  14. <property>
  15. <name>hadoop.proxyuser.hue.hosts</name>
  16. <value>*</value>
  17. </property>
  18. <property>
  19. <name>hadoop.proxyuser.hue.groups</name>
  20. <value>*</value>
  21. </property>
</configuration>

配置 hdfs-site.xml

vi hdfs-site.xml

<configuration>
  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>ns</value>
  20. </property>
  21. <!-- 集群中 NameNode 节点都有哪些 -->
  22. <property>
  23. <name>dfs.ha.namenodes.ns</name>
  24. <value>nn1,nn2,nn3</value>
  25. </property>
  26. <!-- NameNode 的 RPC 通信地址 -->
  27. <property>
  28. <name>dfs.namenode.rpc-address.ns.nn1</name>
  29. <value>master:8020</value>
  30. </property>
  31. <property>
  32. <name>dfs.namenode.rpc-address.ns.nn2</name>
  33. <value>node01:8020</value>
  34. </property>
  35. <property>
  36. <name>dfs.namenode.rpc-address.ns.nn3</name>
  37. <value>node02:8020</value>
  38. </property>
  39. <!-- NameNode 的 http 通信地址 -->
  40. <property>
  41. <name>dfs.namenode.http-address.ns.nn1</name>
  42. <value>master:9870</value>
  43. </property>
  44. <property>
  45. <name>dfs.namenode.http-address.ns.nn2</name>
  46. <value>node01:9870</value>
  47. </property>
  48. <property>
  49. <name>dfs.namenode.http-address.ns.nn3</name>
  50. <value>node02:9870</value>
  51. </property>
  52. <!-- 指定 NameNode 元数据在 JournalNode 上的存放位置 -->
  53. <property>
  54. <name>dfs.namenode.shared.edits.dir</name>
  55. <value>qjournal://master:8485;node01:8485;node02:8485/ns</value>
  56. </property>
  57. <!-- 访问代理类:client 用于确定哪个 NameNode 为 Active -->
  58. <property>
  59. <name>dfs.client.failover.proxy.provider.ns</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>/root/.ssh/id_rsa</value>
  71. </property>
  72. <!-- 启用 nn 故障自动转移 -->
  73. <property>
  74. <name>dfs.ha.automatic-failover.enabled</name>
  75. <value>true</value>
  76. </property>
</configuration>

配置 mapred-site.xml

vi mapred-site.xml

<configuration> <property>
  1. <name>mapreduce.framework.name</name>
  2. <value>yarn</value>
  3. </property>
</configuration>

配置 yarn-site.xml

vi yarn-site.xml

<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
  1. <!-- 开启日志聚集功能 -->
  2. <property>
  3. <name>yarn.log-aggregation-enable</name>
  4. <value>true</value>
  5. </property>
  6. <!-- 设置日志聚集服务器地址 -->
  7. <property>
  8. <name>yarn.log.server.url</name>
  9. <value>http://master:19888/jobhistory/logs</value>
  10. </property>
  11. <!-- 设置日志保留时间为 7 天 -->
  12. <property>
  13. <name>yarn.log-aggregation.retain-seconds</name>
  14. <value>604800</value>
  15. </property>
  16. <!-- 启用 resourcemanager ha -->
  17. <property>
  18. <name>yarn.resourcemanager.ha.enabled</name>
  19. <value>true</value>
  20. </property>
  21. <!-- 声明 resourcemanager 的地址 -->
  22. <property>
  23. <name>yarn.resourcemanager.cluster-id</name>
  24. <value>cluster-yarn1</value>
  25. </property>
  26. <!--指定 resourcemanager 的逻辑列表-->
  27. <property>
  28. <name>yarn.resourcemanager.ha.rm-ids</name>
  29. <value>rm1,rm2,rm3</value>
  30. </property>
  31. <!-- ========== rm1 的配置 ========== -->
  32. <!-- 指定 rm1 的主机名 -->
  33. <property>
  34. <name>yarn.resourcemanager.hostname.rm1</name>
  35. <value>master</value>
  36. </property>
  37. <!-- 指定 rm1 的 web 端地址 -->
  38. <property>
  39. <name>yarn.resourcemanager.webapp.address.rm1</name>
  40. <value>master:8088</value>
  41. </property>
  42. <!-- 指定 rm1 的内部通信地址 -->
  43. <property>
  44. <name>yarn.resourcemanager.address.rm1</name>
  45. <value>master:8032</value>
  46. </property>
  47. <!-- 指定 AM 向 rm1 申请资源的地址 -->
  48. <property>
  49. <name>yarn.resourcemanager.scheduler.address.rm1</name>
  50. <value>master:8030</value>
  51. </property>
  52. <!-- 指定供 NM 连接的地址 -->
  53. <property>
  54. <name>yarn.resourcemanager.resource-tracker.address.rm1</name>
  55. <value>master:8031</value>
  56. </property>
  57. <!-- ========== rm2 的配置 ========== -->
  58. <!-- 指定 rm2 的主机名 -->
  59. <property>
  60. <name>yarn.resourcemanager.hostname.rm2</name>
  61. <value>node01</value>
  62. </property>
  63. <property>
  64. <name>yarn.resourcemanager.webapp.address.rm2</name>
  65. <value>node01:8088</value>
  66. </property>
  67. <property>
  68. <name>yarn.resourcemanager.address.rm2</name>
  69. <value>node01:8032</value>
  70. </property>
  71. <property>
  72. <name>yarn.resourcemanager.scheduler.address.rm2</name>
  73. <value>node01:8030</value>
  74. </property>
  75. <property>
  76. <name>yarn.resourcemanager.resource-tracker.address.rm2</name>
  77. <value>node01:8031</value>
  78. </property>
  79. <!-- ========== rm3 的配置 ========== -->
  80. <!-- 指定 rm3 的主机名 -->
  81. <property>
  82. <name>yarn.resourcemanager.hostname.rm3</name>
  83. <value>node02</value>
  84. </property>
  85. <!-- 指定 rm3 的 web 端地址 -->
  86. <property>
  87. <name>yarn.resourcemanager.webapp.address.rm3</name>
  88. <value>node02:8088</value>
  89. </property>
  90. <!-- 指定 rm3 的内部通信地址 -->
  91. <property>
  92. <name>yarn.resourcemanager.address.rm3</name>
  93. <value>node02:8032</value>
  94. </property>
  95. <!-- 指定 AM 向 rm3 申请资源的地址 -->
  96. <property>
  97. <name>yarn.resourcemanager.scheduler.address.rm3</name>
  98. <value>node02:8030</value>
  99. </property>
  100. <!-- 指定供 NM 连接的地址 -->
  101. <property>
  102. <name>yarn.resourcemanager.resource-tracker.address.rm3</name>
  103. <value>node02:8031</value>
  104. </property>
  105. <!-- 指定 zookeeper 集群的地址 -->
  106. <property>
  107. <name>yarn.resourcemanager.zk-address</name>
  108. <value>master:2181,node01:2181,node02:2181</value>
  109. </property>
  110. <!-- 启用自动恢复 -->
  111. <property>
  112. <name>yarn.resourcemanager.recovery.enabled</name>
  113. <value>true</value>
  114. </property>
  115. <!-- 指定 resourcemanager 的状态信息存储在 zookeeper 集群 -->
  116. <property>
  117. <name>yarn.resourcemanager.store.class</name>
  118. <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
  119. </property>
  120. <!-- 环境变量的继承 -->
  121. <property>
  122. <name>yarn.nodemanager.env-whitelist</name>
  123. <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLAS SPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
  124. </property>
</configuration>

将hadoop 复制到节点 “/export/hadoop” 为自己hadoop安装的文件地址

scp -r /export/hadoop node01:/export
scp -r /export/hadoop node02:/export

hadoop-ha启动配置

启动JournalNode服务

JournalNode是Hadoop高可用架构中的一个重要组件,‌它负责编辑日志的管理和存储,‌以确保NameNode的数据一致性和高可用性。‌

先关闭hadoop集群包括hdfs,yarn和zookeeper,咋master节点启动JournalNode。

hdfs --daemon start journalnode

master节点初始化namenode

hdfs namenode -format

三个节点都启动zookeeper

zkServer.sh start

查看zookeeper启动状态,三个节点查看状态,只会有一个节点显示active,是正确的

zkServer.sh status

在master节点初始化ZKFC

这个命令会清除ZKFC的元数据,‌包括故障转移控制器的状态和配置信息。‌在使用此命令之前,‌需要确保ZooKeeper服务已经启动并且可用。‌该命令的主要作用是初始化或重置ZKFC,‌以便创建一个新的ZKFC实例或清除旧的配置信息和状态。‌

hdfs zkfc -formatZK

在node01、node02节点复制NameNode元数据

命令用于将Active NameNode的元数据目录内容复制到Standby NameNode的元数据目录下,‌以实现两者之间的元数据同步。‌这一操作通常在HDFS高可用(HA)配置中执行,‌特别是在初始化Standby NameNode或需要同步两个NameNode的元数据时。‌执行此命令可以确保Standby NameNode拥有与Active NameNode相同的元数据状态,‌从而在Active NameNode发生故障时,‌Standby NameNode能够迅速接管并继续提供服务,‌实现无缝的故障转移‌。‌

hdfs namenode -bootstrapStandby

启动hadoop

start-all.sh #启动全部
start-dfs.sh #启动dfs
start-yarn.sh #启动yarn

查看yarn服务状态

yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2
yarn rmadmin -getServiceState rm3

hadoop高可用启动结果入下,即为正确

标签: hadoop zookeeper

本文转载自: https://blog.csdn.net/qq_46132558/article/details/141138558
版权归原作者 prince&陌 所有, 如有侵权,请联系我们删除。

“【Hadoop-HA 搭建】hadoop-ha 高可用集群配置”的评论:

还没有评论