HADOOP的HA高可用性部署的主要文档配置
HADOOP的HA高可用性要依赖ZOOKEEPER,所以要先安装和配置好ZOOKEEPER。
CORE-SITE.XML的配置
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://MyCluster</value> <final>true</final> </property> <property> <name>hadoop.tmp.dir</name> <value>/work/tmp</value> </property> <!-- 指定zookeeper地址 --> <property> <name>ha.zookeeper.quorum</name> <value>namenode1:2181,namenode2:2181,datanode1:2181,datanode2:2181,datanode3:2181</value> </property> <property> <name>ha.zookeeper.session-timeout.ms</name> <value>6000000</value> </property> <property> <name>ha.failover-controller.cli-check.rpc-timeout.ms</name> <value>6000000</value> </property> <property> <name>ipc.client.connect.timeout</name> <value>6000000</value> </property> </configuration>
HDFS-SITE.XML的配置
<configuration> <!--指定数据冗余份数--> <property> <name>dfs.replication</name> <value>2</value> </property> <!--指定namenode名称空间的存储地址--> <property> <name>dfs.namenode.name.dir</name> <value>/work/hdfs/namenode</value> </property> <!--指定datanode数据存储地址--> <property> <name>dfs.datanode.data.dir</name> <value>/work/hdfs/datanode</value> </property> <!--指定hdfs的nameservice为appcluster,需要和core-site.xml中的保持一致 --> <property> <name>dfs.nameservices</name> <value>MyCluster</value> </property> <!-- appcluster下面有两个NameNode,分别是nn1,nn2 --> <property> <name>dfs.ha.namenodes.MyCluster</name> <value>nn1,nn2</value> </property> <!-- nn1的RPC通信地址 --> <property> <name>dfs.namenode.rpc-address.MyCluster.nn1</name> <value>namenode1:8020</value> </property> <!-- nn2的RPC通信地址 --> <property> <name>dfs.namenode.rpc-address.MyCluster.nn2</name> <value>namenode2:8020</value> </property> <!-- nn1的http通信地址 --> <property> <name>dfs.namenode.http-address.MyCluster.nn1</name> <value>namenode1:50070</value> </property> <!-- nn2的http通信地址 --> <property> <name>dfs.namenode.http-address.MyCluster.nn2</name> <value>namenode2:50070</value> </property> <!-- 指定NameNode的元数据在JournalNode上的存放位置 --> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://datanode1:8485;datanode2:8485;datanode3:8485/MyCluster</value> </property> <property> <name>dfs.ha.automatic-failover.enabled.MyCluster</name> <value>true</value> </property> <!-- 配置失败自动切换实现方式 --> <property> <name>dfs.client.failover.proxy.provider.MyCluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!-- 配置隔离机制 --> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <!-- 使用隔离机制时需要ssh免密码登陆 --> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/hadoop/.ssh/id_rsa</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/work/tmp/journal</value> </property> <property> <name>dfs.ha.fencing.ssh.connect-timeout</name> <value>30000</value> </property> <property> <name>dfs.qjournal.start-segment.timeout.ms</name> <value>600000000</value> </property> <property> <name>dfs.qjournal.prepare-recovery.timeout.ms</name> <value>600000000</value> </property> <property> <name>dfs.qjournal.accept-recovery.timeout.ms</name> <value>600000000</value> </property> <property> <name>dfs.qjournal.finalize-segment.timeout.ms</name> <value>600000000</value> </property> <property> <name>dfs.qjournal.select-input-streams.timeout.ms</name> <value>600000000</value> </property> <property> <name>dfs.qjournal.get-journal-state.timeout.ms</name> <value>600000000</value> </property> <property> <name>dfs.qjournal.new-epoch.timeout.ms</name> <value>600000000</value> </property> <property> <name>dfs.qjournal.write-txns.timeout.ms</name> <value>600000000</value> </property> <property> <name>ha.zookeeper.session-timeout.ms</name> <value>6000000</value> </property> </configuration>
MAPRED-SITE.XML的配置
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- 配置 MapReduce JobHistory Server 地址 ,默认端口10020 --> <property> <name>mapreduce.jobhistory.address</name> <value>0.0.0.0:10020</value> </property> <!-- 配置 MapReduce JobHistory Server web ui 地址, 默认端口19888 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>0.0.0.0:19888</value> </property> </configuration>
<configuration> <!-- Site specific YARN configuration properties --> <!--rm失联后重新链接的时间--> <property> <name>yarn.resourcemanager.connect.retry-interval.ms</name> <value>2000</value> </property> <!--开启resourcemanagerHA,默认为false--> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <!--配置resourcemanager--> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>namenode1:2181,namenode2:2181,datanode1:2181,datanode2:2181,datanode3:2181</value> </property> <!--开启故障自动切换--> <property> <name>yarn.resourcemanager.ha.automatic-failover.enabled</name> <value>true</value> </property> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>namenode1</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>namenode2</value> </property> <!-- 在hadoop-namenode1上配置rm1,在hadoop-namenode2上配置rm2, 注意:一般都喜欢把配置好的文件远程复制到其它机器上,但这个在YARN的另一个机器上一定要修改 --> <property> <name>yarn.resourcemanager.ha.id</name> <value>rm1</value> <description>If we want to launch more than one RM in single node,we need this configuration</description> </property> <!--开启自动恢复功能--> <property> <name>yarn.resourcemanager.recovery.enabled</name> <value>true</value> </property> <!--配置与zookeeper的连接地址--> <property> <name>yarn.resourcemanager.zk-state-store.address</name> <value>namenode1:2181,namenode2:2181,datanode1:2181,datanode2:2181,datanode3:2181</value> </property> <property> <name>yarn.resourcemanager.store.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value> </property> <property> <name>yarn.resourcemanager.zk-address</name> <value>namenode1:2181,namenode2:2181,datanode1:2181,datanode2:2181,datanode3:2181</value> </property> <property> <name>yarn.resourcemanager.cluster-id</name> <value>MyCluster-yarn</value> </property> <!--schelduler失联等待连接时间--> <property> <name>yarn.app.mapreduce.am.scheduler.connection.wait.interval-ms</name> <value>5000</value> </property> <!--配置rm1--> <property> <name>yarn.resourcemanager.address.rm1</name> <value>namenode1:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address.rm1</name> <value>namenode1:8030</value> </property> <property> <name>yarn.resourcemanager.webapp.address.rm1</name> <value>namenode1:8088</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address.rm1</name> <value>namenode1:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address.rm1</name> <value>namenode1:8033</value> </property> <property> <name>yarn.resourcemanager.ha.admin.address.rm1</name> <value>namenode1:23142</value> </property> <!--配置rm2--> <property> <name>yarn.resourcemanager.address.rm2</name> <value>namenode2:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address.rm2</name> <value>namenode2:8030</value> </property> <property> <name>yarn.resourcemanager.webapp.address.rm2</name> <value>namenode2:8088</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address.rm2</name> <value>namenode2:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address.rm2</name> <value>namenode2:8033</value> </property> <property> <name>yarn.resourcemanager.ha.admin.address.rm2</name> <value>namenode2:23142</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.nodemanager.local-dirs</name> <value>/work/yarn/local</value> </property> <property> <name>yarn.nodemanager.log-dirs</name> <value>/work/yarn/log</value> </property> <property> <name>mapreduce.shuffle.port</name> <value>23080</value> </property> <!--故障处理类--> <property> <name>yarn.client.failover-proxy-provider</name> <value>org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider</value> </property> <property> <name>yarn.resourcemanager.ha.automatic-failover.zk-base-path</name> <value>/yarn-leader-election</value> <description>Optionalsetting.Thedefaultvalueis/yarn-leader-election</description> </property> </configuration>

浙公网安备 33010602011771号