Hadoop高可用集群快速搭建

HDFS——HA集群配置

在之前的教程中安装好hadoop、zookeeper

1、在core-site.xml中添加以下的配置

<configuration>
<!-- 把两个NameNode)的地址组装成一个集群mycluster -->
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://集群名</value>
</property>
<!-- 指定hadoop 运行时产生文件的存储目录-->
<property>
	<name>hadoop.tmp.dir</name>
	<value>安装路径/hadoop/data/tmp</value>
</property>
<property>
  	<name>hadoop.proxyuser.root.hosts</name>
  	<value>*</value>
</property>
<property>
  	<name>hadoop.proxyuser.root.groups</name>
  	<value>*</value>
</property>
<!-- 指定ZKFC故障自动切换转移 -->
<property>
 	<name>ha.zookeeper.quorum</name>
 	<value>host01:2181,host02:2181,host03:2181</value>
</property>
</configuration>

2、在hdfs—site.xml中添加以下的配置

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>
        <property>
                 <name>dfs.namenode.secondary.http-address</name>
                 <value>host01:50090</value>
        </property>
<!-- 完全分布式集群名称 -->
        <property>
                <name>dfs.nameservices</name>
                <value>hostHA</value>
        </property>
<!-- 集群中 NameNode 节点都有哪些,这里是 nn1 和 nn2 -->
        <property>
                <name>dfs.ha.namenodes.hostHA</name>
                <value>nn1,nn2</value>
        </property>
<!-- nn1 的 RPC 通信地址 -->
        <property>
                <name>dfs.namenode.rpc-address.hostHA.nn1</name>
                <value>host01:9000</value>
         </property>
<!-- nn2 的 RPC 通信地址 -->
        <property>
                <name>dfs.namenode.rpc-address.hostHA.nn2</name>
                <value>host02:9000</value>
         </property>

<!-- nn1 的 http 通信地址 -->
        <property>
                <name>dfs.namenode.http-address.hostHA.nn1</name>
                <value>host01:50070</value>
         </property>
<!-- nn2的 http 通信地址 -->
        <property>
                <name>dfs.namenode.http-address.hostHA.nn2</name>
                <value>host02:50070</value>
         </property>
<!-- 指定 NameNode 元数据在 JournalNode 上的存放位置 -->
        <property>
                <name>dfs.namenode.shared.edits.dir</name>
                <value>qjournal://host01:8485;host02:8485;host03:8485/hostHA</value>
         </property>
<!-- 使用隔离机制时需要 ssh 无秘钥登录-->
        <property>
                <name>dfs.ha.fencing.ssh.private-key-files</name>
                <value>/root/.ssh/id_rsa</value>
        </property>
<!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应-->
        <property>
                <name>dfs.ha.fencing.methods</name>
                <value>
                sshfence
                shell(/bin/true)
                </value>
        </property>
<!-- 声明 journalnode 服务器存储目录-->
        <property>
                <name>dfs.journalnode.edits.dir</name>
                <value>/root/software/hadoop/data/jn</value>
        </property>
<!-- 关闭权限检查-->
        <property>
                <name>dfs.permissions.enable</name>
                <value>false</value>
        </property>

<!-- 访问代理类:client,mycluster,active 配置失败自动切换实现方式-->
        <property>
                 <name>dfs.client.failover.proxy.provider.hostHA</name>
                <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>
<!-- 自动故障转移-->
        <property>
                 <name>dfs.ha.automatic-failover.enabled</name>
                <value>true</value>
        </property>
</configuration>

3、修改mapred-site.xml

<configuration>
 <!-- 指定mr框架为yarn方式 -->
 <property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
 </property>
  <!-- 指定mr历史服务器主机,端口 -->
  <property>   
    <name>mapreduce.jobhistory.address</name>   
    <value>host01:10020</value>   
  </property>   
  <!-- 指定mr历史服务器WebUI主机,端口 -->
  <property>   
    <name>mapreduce.jobhistory.webapp.address</name>   
    <value>host01:19888</value>   
  </property>
    <!-- 历史服务器的WEB UI上最多显示20000个历史的作业记录信息 -->    
  <property>
    <name>mapreduce.jobhistory.joblist.cache.size</name>
    <value>20000</value>
  </property>

  <!--配置作业运行日志 --> 
  <property>
    <name>mapreduce.jobhistory.done-dir</name>
    <value>${yarn.app.mapreduce.am.staging-dir}/history/done</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.intermediate-done-dir</name>
    <value>${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate</value>
  </property>
  <property>
    <name>yarn.app.mapreduce.am.staging-dir</name>
    <value>/tmp/hadoop-yarn/staging</value>
  </property>
</configuration>

4、修改hadoop-env.sh

# The java implementation to use.
export JAVA_HOME=/root/software/jdk1.8.0_221
#HADOOP_CONF_DIR={不用输入}

5、在slaves中添加所有的主机名

6、修改yarn-site.xml

<!-- reducer获取数据的方式 -->
 <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
<!--启用resourcemanager ha-->
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
<!--声明两台resourcemanager的地址-->
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>hostHA</value>
    </property>
    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>host02</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>host03</value>
    </property>
<!--指定zookeeper集群的地址-->
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>host01:2181,host02:2181,host03:2181</value>
    </property>
    <!--启用自动恢复-->
    <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>

先在每台机器上启动zookeeper
…/zkpr/bin/zkServer.sh stop

7、改完配置之后开启一次journalnode 启动
hadoop-daemon.sh start journalnode

8、主机格式一下,hdfs namenode -format

9、启动nn1节点
hadoop-daemon.sh start namenode

10、在nn2上同步nn1数据
hdfs namenode -bootstrapStandby

11、启动nn2节点
hadoop-daemon.sh start namenode

13、启动所有节点datanode
hadoop-daemons.sh start datanode

14、将nn1切换为Active
hdfs haadmin -transitionToActive nn1

15、初始化HA在zookeeper中状态
hdfs zkfc -formatZK

16、启动HDFS服务
start-dfs.sh

17、在nn1上开启yarn
start-yarn.sh

18、在一台机器上单独启动resourcemanager
yarn-daemon.sh start resourcemanager

启动不了,先把zookeeper启动起来

删除logs tmp文件夹
hdfs namenode -format
scp -r temp root@host01:$PWD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值