Hadoop中HA模式配置(HDFS HAYARN HA)

编程入门 行业动态 更新时间:2024-10-21 05:35:07

Hadoop中HA<a href=https://www.elefans.com/category/jswz/34/1771241.html style=模式配置(HDFS HAYARN HA)"/>

Hadoop中HA模式配置(HDFS HAYARN HA)


1.前言

  • 操作系统:CentOS 7
  • Hadoop版本:2.7.7
  • Zookeeper版本:3.4.14
  • Java版本:1.8.0_221
  • Hadoop HA模式分为HDFS HA(NameNode HA)和YARN HA(ResourceManager HA)两个部分
  • 在本次配置中同时配置了HDFS HA和YARN HA下的自动故障转移Automatic Failover,以及历史服务器JobHistoryServer
  • 所有配置均在同一用户下操作

2.集群规划

hadoop101hadoop102hadoop103
NameNode
DataNode
ResourceManager
NodeManager
JobHistoryServer
JournalNode
DFSZKFailoverController
Zookeeper

3.具体配置

a) core-site.xml

<configuration><!--指定HDFS文件系统访问地址,将其设置为NameNode的地址--><property><name>fs.defaultFS</name><value>hdfs://dfsHAcluster</value></property><!--指定Hadoop运行时产生文件的存储目录--><property><name>hadoop.tmp.dir</name><value>/opt/module/HA/hadoop-2.7.7/tmp</value></property><!--指定JournalNode在本地存储edits文件的绝对路径--><property><name>dfs.journalnode.edits.dir</name><value>${hadoop.tmp.dir}/dfs/journalnode/localdata</value></property><!--为HDFS(NameNode) HA模式实现自动故障转移,设置Zookeeper服务器--><property><name>ha.zookeeper.quorum</name><value>zkServer1:2181,zkServer2:2181,zkServer3:2181</value></property>    </configuration>

b) hdfs-site.xml

<configuration><!--指定HDFS副本因子数--><!--由于实验主机磁盘空间不足,本次实验中设置为1,一般需要设置为3--><property><name>dfs.replication</name><value>1</value></property><!--以下是关于HDFS(NameNode) HA模式的配置--><!--设置集群的nameservice name--><property><name>dfs.nameservices</name><value>dfsHAcluster</value></property><!--设置HDFS HA Cluster的节点--><property><name>dfs.ha.namenodes.dfsHAcluster</name><value>nn1,nn2</value></property><!--关于HDFS HA集群nn1节点的配置--><!--设置HDFS HA集群nn1节点的RPC地址--><property><name>dfs.namenode.rpc-address.dfsHAcluster.nn1</name><value>hadoop101:8020</value></property><!--设置HDFS HA集群nn1节点的Web UI地址--><property><name>dfs.namenode.http-address.dfsHAcluster.nn1</name><value>hadoop101:50070</value></property><!--指定HDFS HA集群dfsHAcluster中nn1节点上存储name table(fsimage)文件的本地路径--><property><name>dfs.namenode.name.dir.dfsHAcluster.nn1</name><value>${hadoop.tmp.dir}/dfs/dfsHAcluster/nn1/fsimage</value></property><!--指定HDFS HA集群dfsHAcluster中nn1节点上存储transaction(edits)文件的本地路径--><property><name>dfs.namenode.edits.dir.dfsHAcluster.nn1</name><value>${hadoop.tmp.dir}/dfs/dfsHAcluster/nn1/edits</value></property><!--指定HDFS HA集群dfsHAcluster中nn2节点上存储Blocks文件的本地路径--><property><name>dfs.datanode.data.dir.dfsHAcluster.nn1</name><value>${hadoop.tmp.dir}/dfs/dfsHAcluster/nn1/data</value></property><!--关于HDFS HA集群nn2节点的配置--><!--设置HDFS HA集群nn2节点的RPC地址--><property><name>dfs.namenode.rpc-address.dfsHAcluster.nn2</name><value>hadoop102:8020</value></property><!--设置HDFS HA集群nn2节点的Web UI地址--><property><name>dfs.namenode.http-address.dfsHAcluster.nn2</name><value>hadoop102:50070</value></property><!--指定HDFS HA集群dfsHAcluster中nn2节点上存储name table(fsimage)文件的本地路径--><property><name>dfs.namenode.name.dir.dfsHAcluster.nn2</name><value>${hadoop.tmp.dir}/dfs/dfsHAcluster/nn2/fsimage</value></property><!--指定HDFS HA集群dfsHAcluster中nn2节点上存储transaction(edits)文件的本地路径--><property><name>dfs.namenode.edits.dir.dfsHAcluster.nn2</name><value>${hadoop.tmp.dir}/dfs/dfsHAcluster/nn2/edits</value></property><!--指定HDFS HA集群dfsHAcluster中nn2节点上存储Blocks文件的本地路径--><property><name>dfs.datanode.data.dir.dfsHAcluster.nn2</name><value>${hadoop.tmp.dir}/dfs/dfsHAcluster/nn2/data</value></property><!--设置Active NameNode向StandBy NameNode共享edits文件的URI--><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://zkServer1:8485;zkServer2:8485;zkServer3:8485/dfsHAcluster</value></property><!--设置HDFS用于联络Active NameNode的Java class--><property><name>dfs.client.failover.proxy.provider.dfsHAcluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!--设置当进行故障转移failover时通过何种方式隔离Active NameNode--><!--本次设置成使用ssh隔离--><property><name>dfs.ha.fencing.methods</name><value>sshfence</value></property><!--设置ssh隔离就必须设置成当前用户ssh对其他NameNode免密登录,同时需要在此提供私钥路径--><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/TomAndersen/.ssh/id_rsa</value></property><!--设置ssh连接超时时间--><property><name>dfs.ha.fencing.ssh.connect-timeout</name><value>30000</value></property><!--以下通过Zookeeper设置自动故障转移automatic failover--><!--设置开启故障自动转移--><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property></configuration>

c) mapred-site.xml

<configuration><!--指定MR程序运行框架,设置为YARN上运行,默认是在本地运行--><!--默认值:local--><property><name>mapreduce.framework.name</name><value>yarn</value></property><!--指定历史服务器JobHistoryServer进程间通信IPC地址--><property><name>mapreduce.jobhistory.address</name><value>hadoop103:10020</value></property><!--指定历史服务器JobHistoryServer的Web UI地址--><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop103:19888</value></property></configuration>

d) yarn-site.xml

<configuration><!--Site specific YARN configuration properties--><!--设置Reducer获取数据的方式--><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!--此参数指的是nodemanager的可用内存大小,单位为Mb,设置为主机内存大小--><!--本次实验主机内存大小为2GB,此参数根据各机器分配的物理内存大小设置,若大于物理内存值会影响程序运行效率--><!--默认值:8192--><property><name>yarn.nodemanager.resource.memory-mb</name><value>2048</value></property><!--开启日志聚集功能--><property><name>yarn.log-aggregation-enable</name><value>true</value></property><!--日志聚集位置,默认为HDFS文件系统的/tmp/logs路径下,默认格式为/tmp/logs/${user}/logs--><!--默认值:/tmp/logs--><property><name>yarn.nodemanager.remote-app-log-dir</name><value>/tmp/logs</value></property><!--聚集日志保留时间设置7天--><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property><!--以下是关于ResourceMangaer HA模式的配置--><!--设置开启YARN HA模式--><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!--设置ResourceManager Cluster ID即RM集群名--><property><name>yarn.resourcemanager.cluster-id</name><value>RMcluster</value></property><!--设置RM集群中的RM节点ID--><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><!--以下是关于RM集群中rm1节点的配置--><!--指定RM集群中rm1节点的ip地址--><property><name>yarn.resourcemanager.hostname.rm1</name><value>hadoop102</value></property><!--指定RM集群中rm1节点的Web UI地址--><property><name>yarn.resourcemanager.webapp.address.rm1</name><value>hadoop102:8088</value></property><!--以下是关于RM集群中rm2节点的配置--><!--指定RM集群中rm2节点的ip地址--><property><name>yarn.resourcemanager.hostname.rm2</name><value>hadoop101</value></property><!--指定RM集群中rm2节点的Web UI地址--><property><name>yarn.resourcemanager.webapp.address.rm2</name><value>hadoop101:8088</value></property><!--指定RM集群使用的Zookeeper集群所提供的Client端口--><!--注意与Zookeeper集群中设置的客户端端口一致--><property><name>yarn.resourcemanager.zk-address</name><value>zkServer1:2181,zkServer2:2181,zkServer3:2181</value></property><!--启用RM自动恢复--><!--需同时设置yarn.resourcemanager.store.class--><property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value></property><!--指定resourcemanager的状态信息存储在zookeeper集群的工具类--><property><name>yarn.resourcemanager.store.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value></property></configuration>

4.启动HA集群

a) 首次启动集群

注意:
  • 首次启动一个新的Hadoop HA集群时需要对NameNodes进行格式化,若已经格式化则直接正常启动即可

  • 若想重新格式化NameNodes,需要将所有NameNodes节点上hadoop中的tmplogs文件夹都删除,同时最好也删除Zookeeper集群上的所有hadoop-ha相关节点

格式化NameNodes步骤:
(1) 启动Zookeeper集群
./bin/zkServer.sh
(2) 在HDFS集群中所有节点上启动JournalNode
./sbin/hadoop-daemon.sh start journalnode
(3) 在首个NameNode节点上格式化NameNode(dfsHAcluster.nn1)
./bin/hdfs namenode -format
(4) 在此节点上格式化zkNode即创建zkNode节点(dfsHAcluster.nn1)
./bin/hdfs zkfc -formatZK
(5) 在此节点上启动首个NameNode进程(dfsHAcluster.nn1)
./sbin/hadoop-daemon.sh start namenode
(6) 同时启动DFSZKFailoverController、DataNode进程(dfsHAcluster.nn1)
./sbin/hadoop-daemon.sh start zkfc
./sbin/hadoop-daemon.sh start datanode
(7) 在其他所有NameNode节点上进行同步格式化
./bin/hdfs namenode -bootstrapStandby
(8) 同时在其他所有NameNode节点上启动NameNode、DFSZKFailoverController、DataNode进程
./sbin/hadoop-daemon.sh start namenode
./sbin/hadoop-daemon.sh start zkfc
./sbin/hadoop-daemon.sh start datanode
(9) 启动RM集群:在YARN集群中所有RM节点上启动RM进程,第二个启动的RM为Active(可以不启动)
./sbin/yarn-daemon.sh start resourcemanager
(10) 启动NM集群:在YARN集群中所有节点上启动NM进程(可以不启动)
./sbin/yarn-daemon.sh start nodemanager
(11) 在历史服务器节点上,启动JobHistoryServer进程(可以不启动)
./sbin/mr-jobhistory-daemon.sh
正常情况下此时集群已经正常运行,各节点具体进程情况如下所示:
[tomandersen@hadoop101 hadoop-2.7.7]$ call-cluster.sh jps
----------hadoop103----------
32688 Jps
23553 QuorumPeerMain
32418 JobHistoryServer
32291 JournalNode
32520 NodeManager
32186 DataNode
----------hadoop102----------
36963 JournalNode
37669 Jps
36775 NameNode
37209 ResourceManager
36858 DataNode
25612 QuorumPeerMain
37308 NodeManager
37102 DFSZKFailoverController
----------hadoop101----------
40129 NameNode
40451 JournalNode
41075 Jps
40788 ResourceManager
40246 DataNode
40891 NodeManager
40653 DFSZKFailoverController
28798 QuorumPeerMain----------execute "jps" in cluster takes 4 seconds----------[tomandersen@hadoop101 hadoop-2.7.7]$ 
[tomandersen@hadoop101 hadoop-2.7.7]$ 
可以通过haadminrmadmin命令查看和更改HA节点状态,集群中只有一个NN和RM处于Active,其余皆为StandBy:
(1) haadmin 获取HDFS HA模式中指定NN节点的状态,如:
bin/hdfs haadmin -getServiceState nn1
(2) haadmin 强制修改HDFS HA模式中指定NN节点的状态,如:
bin/hdfs haadmin -transitionToActive --forcemanual nn1
(3) rmadmin 获取YARN HA模式中指定节点的状态,如:
bin/yarn rmadmin -getServiceState rm1
(4) rmadmin 强制修改YARN HA模式中指定节点的状态,如:
bin/yarn rmadmin -transitionToStandby --forcemanual rm2
若要关闭HDFS集群,直接使用对应命令关闭即可:
./sbin/stop-dfs.sh
若要关闭YARN集群,除了在其中的一个RM节点上执行关闭YARN命令之外还需要在其他节点上手动关闭RM进程:
关闭YARN集群:
./sbin/stop-yarn.sh
在其他节点上关闭RM:
./sbin/yarn-daemon.sh stop resourcemanager

b) 正常启动集群

启动HDFS HA集群:
./sbin/start-dfs.sh
启动YARN HA集群:
./sbin/start-yarn.sh
同时并在其他RM节点上手动启动RM进程进而开启RM HA,第二个启动的RM为Active:
./sbin/yarn-daemon.sh start resourcemanager

End~

更多推荐

Hadoop中HA模式配置(HDFS HAYARN HA)

本文发布于:2024-02-07 00:01:14,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1751889.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模式   HA   Hadoop   HDFS   HAYARN

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!