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>

 

posted @ 2016-09-29 09:50  菜鸟还不到  阅读(517)  评论(0)    收藏  举报