hadoop HA完全分布式部署

一、配置Zookeeper

https://blog.csdn.net/weixin_43671437/article/details/102736020

二、集群规划

master slave1 slave2
NameNode NameNode
JournalNode JournalNode JournalNode
DataNode DataNode DataNode
ZK ZK ZK
ResourceManager ResourceManager
NodeManager NodeManager NodeManager

三、配置文件

1、hadoop-env.sh

export JAVA_HOME=/usr/local/src/jdk1.8.0_144

2、yarn-env.sh

export JAVA_HOME=/usr/local/src/jdk1.8.0_144

3、mapred-env.sh

export JAVA_HOME=/usr/local/src/jdk1.8.0_144

4、slaves

master
slave1
slave2

5、core-site.xml

<configuration>

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>

<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/HA/hadoop/data/tmp</value>
</property>

<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/HA/hadoop/data/tmp/jn</value>
</property>

<property>
   <name>ha.zookeeper.quorum</name>
   <value>master:2181,slave1:2181,slave2:2181</value>
 </property>

</configuration>

6、hdfs-site.xml

<configuration>

<!--设置副本数-->
<property>
  <name>dfs.replication</name>
  <value>3</value>
</property>

<!-- 完全分布式集群名称 -->
<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>

<!-- 集群中NameNode节点都有哪些 -->

<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>

        <!-- nn1的RPC通信地址 -->
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>master:8020</value>
</property>

        <!-- nn2的RPC通信地址 -->
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>slave1:8020</value>
</property>

        <!-- nn1的http通信地址 -->
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>master:50070</value>
</property>

        <!-- nn2的http通信地址 -->
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>slave1:50070</value>
</property>

<!-- 指定NameNode元数据在JournalNode上的存放位置 -->
<property>
  <name>dfs.namenode.shared.edits.dir</name>
 <value>qjournal://master:8485;slave1:8485;slave2:8485/mycluster</value>
</property>

        <!-- 访问代理类:client,mycluster,active配置失败自动切换实现方式-->
<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.permissions.enable</name>
   <value>false</value>
</property>

<!--设置自动故障转移(如果不设置,当master故障时,需手动将master从standby状态激活为active状态)-->
 <property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
 </property>


</configuration>

7、yarn-site.xml

此配置与hdfs-site.xml类似,不再做解释

<configuration>

<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>


<property>
  <name>yarn.log-aggregation-enable</name>
  <value>true</value>
</property>

<property>
  <name>yarn.log-aggregation.retain-seconds</name>
  <value>604800</value>
</property>


 <!--启用resourcemanager ha-->
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>

    <!--声明两台resourcemanager的地址-->
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>cluster-yarn1</value>
    </property>

    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>

    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>master</value>
    </property>

    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>slave1</value>
    </property>

    <!--指定zookeeper集群的地址-->
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>master:2181,slave1:2181,slave2: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>

</configuration>

8、mapred-site.xml

<configuration>

<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>

<property>
  <name>mapreduce.jobhistory.address</name>
  <value>master:10020</value>
</property>

<property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>master:19888</value>
</property>

</configuration>

9、分发配置信息

将配置好的hadoop分发到slave1,slave2节点

scp -r hadoop-2.6.0/ hadoop@slave1:/opt/module/HA/
scp -r hadoop-2.6.0/ hadoop@slave2:/opt/module/HA/

四、启动集群

注意:
1、已启动zookeeper集群

2、第一次启动Hadoop集群时,需先启动JournalNode,再格式化namenode

1. 在各个节点上,输入以下命令启动journalnode服务

sbin/hadoop-daemon.sh start journalnode

2. 在[nn1] (master)上,对其进行格式化,并启动namenode

(1)、格式化

bin/hdfs namenode -format

(2)、启动namenode

sbin/hadoop-daemon.sh start namenode

3. 在[nn2] (slave1)上,同步nn1(master)的元数据信息

bin/hdfs namenode -bootstrapStandby

4、启动[nn2] (slave1)上namenode

sbin/hadoop-daemon.sh start namenode

5、用jps产看进程,以及查看web端是否状态都为standby

若两个namenode进程都能运行,则此时已成功一半

6、关闭两个namenode和各个节点的journalnode

sbin/hadoop-daemons.sh stop namenode
sbin/hadoop-daemons.sh stop journalnode

7、初始化HA在Zookeeper中状态(在hadoop-2.6.0目录下)

注意不是在zookeeper目录下
因为zkfc是hadoop的进程不是zookeeper进程

bin/hdfs zkfc -formatZK

8、群起hdfs

sbin/start-dfs.sh 

9、群起yarn

1、在master上

sbin/start-yarn.sh 

2、在slave1上

sbin/yarn-daemon.sh start resourcemanager

10、利用jps查看进程,看到这些进程则表明已启动成功

在这里插入图片描述

五、登录web端页面查看状态及信息

1、hdfs web

在这里插入图片描述

在这里插入图片描述

2、yarn web

在这里插入图片描述
在这里插入图片描述

六、此时hadoop HA已搭建完成

可利用kill -9 ,kill掉一个节点的namenode,然后查看另一个节点的namenode测试能否可以自动切换为active状态

可利用此命令在命令行中查看namenode的状态

bin/hdfs haadmin -getServiceState nn1

当然也可以直接查看web端状态

将nn1切换为active(此命令在本博客中用不到只做了解)

bin/hdfs haadmin -transitionToActive nn1
发布了38 篇原创文章 · 获赞 56 · 访问量 6573

猜你喜欢

转载自blog.csdn.net/weixin_43671437/article/details/102880020
今日推荐