0


HDFS 高可用的环境搭建

在开始Hadoop集群的HDFS高可用环境搭建之前,需要完成zookeeper搭建工作。

1.集群规划

节点

NameNode

DataNode

ResourceManager

NodeManager

JournalNode

ZKFC

QuorumPeerMain

master

slave1

slave2

集群规划完成后,既可以开始搭建HDFS HA集群环境。

2.文件配置

  Hadoop的相关配置文件主要包括core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml和workers这5个文件,下面依次介绍每个文件的配置内容。

   (1) 配置core-site.xml。

    注意:如果打开的文件是一个空白文件,说明是新建了该文件,不保存退出,检查路径或文件名是否有错
[root@master ~]# cd /export/servers/hadoop-3.1.3/etc/hadoop/
[root@master hadoop]# vi core-site.xml
    <configuration>
     <!-- 指定HDFS的nameservice为ns -->
     <property>
             <name>fs.defaultFS</name>
             <value>hdfs://ns</value>
     </property>
     <!-- 指定Hadoop运行时产生文件的存储目录 -->
     <property>
             <name>hadoop.tmp.dir</name>
             <value>/export/servers/hadoop-3.1.3/tmp</value>
     </property>

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

(2)  配置hdfs-site.xml。
[root@master hadoop]# vi hdfs-site.xml
<configuration>
     <property>
                <name>dfs.replication</name>
                <value>3</value>
     </property>
  <property>
     <name>dfs.nameservices</name>
     <value>ns</value>
 </property>
 <!-- 集群中NameNode节点名称 -->
 <property>
     <name>dfs.ha.namenodes.ns</name>
     <value>nn1,nn2</value>
 </property>
<property> <name>dfs.namenode.rpc-address.ns.nn1</name> <value>master:8020</value> </property> <property> <name>dfs.namenode.rpc-address.ns.nn2</name> <value>slave1:8020</value> </property> <property> <name>dfs.namenode.http-address.ns.nn1</name> <value>master:50070</value> </property>
 <property>
       <name>dfs.namenode.http-address.ns.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/ns</value>
 </property>

<!-- 开启NameNode故障时自动切换 -->
<property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property>
<!-- 访问代理类:client,mycluster,active配置失败自动切换实现方式-->
 <property>
       <name>dfs.client.failover.proxy.provider.ns</name>
      <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
 </property>
 <!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 -->
<property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/export/servers/hadoop-3.1.3/ha/journal</value> </property> <property> <name>dfs.permissinos.enabled</name> <value>false</value> </property> </configuration>

(3)配置yarn-site.xml。

[root@master hadoop]# vi yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property>
 <property>
               <name>yarn.log-aggregation-enable</name>
                <value>true</value>
     </property>
 </configuration>

(4) 配置mapred-site.xml。

[root@master hadoop]# vi mapred-site.xml
    <configuration>
             <!-- 指定MR运行在Yarn上 -->
             <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>
[root@master hadoop]# vi workers

(5)配置workers文件。打开该配置文件,然后配置以下内容:

    master

  slave1
  slave2

    该文件中写入哪个主机名,哪个主机就会存在datanode节点。

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

(6)定义root用户操作hdfs namenode等将以下内容写入配置文件profile末尾,并让修改后的文件生效

[root@master ~]# vi /etc/profile
[root@master ~]# source /etc/profile
  export HDFS_NAMENODE_USER=root
   export HDFS_DATANODE_USER=root
   export HDFS_SECONDARYNAMENODE_USER=root
   export YARN_RESOURCEMANAGER_USER=root
   export YARN_NODEMANAGER_USER=root

 export HDFS_ZKFC_USER=root
  export HDFS_JOURNALNODE_USER=root

(7)使用scp命令将配置好的hadoop和/etc/profile文件分发到slave1和slave2节点。

[root@master hadoop]# cd ..
[root@master etc]# scp -r hadoop slave1:/export/servers/hadoop-3.1.3/etc/
[root@master etc]# scp -r hadoop slave2:/export/servers/hadoop-3.1.3/etc/
[root@master etc]# scp  /etc/profile slave1:/etc/
[root@master etc]# scp  /etc/profile slave2:/etc/
[root@master etc]# source  /etc/profile 
[root@slave1 etc]# source  /etc/profile 
[root@slave2 etc]# source  /etc/profile 

3.启动集群

(1) 启动ZooKeeper

分别在master、slave1和slave2节点输入以下命令。
[root@master ~]# zkServer.sh start

如果显示一个leader和两个follower,则表示zookeeper启动成功。

(2) 启动JournalNode

分别在master、slave1和slave2节点输入以下命令。
[root@master ~]# hadoop-daemons.sh start journalnode

输入jps.sh脚本命令,查看节点启动情况。

(3)格式化HDFS

 删除mater、slave1和slave2安装目录下tmp、log和ha文件夹。
[root@master ~]# cd /export/servers/hadoop-3.1.3/
[root@master hadoop-3.1.3]# ls
append.txt  include      logs        share
bin         lib          NOTICE.txt  tmp
etc         libexec      README.txt  sbin
ha          LICENSE.txt
[root@master hadoop-3.1.3]# rm -rf tmp   
[root@master hadoop-3.1.3]# rm -rf logs
[root@master hadoop-3.1.3]# rm -rf ha       
[root@slave1 ~]# cd /export/servers/hadoop-3.1.3/
[root@slave1 hadoop-3.1.3]# ls
append.txt  include      logs        share
bin         lib          NOTICE.txt  tmp
etc         libexec      README.txt  sbin
ha          LICENSE.txt
[root@slave1 hadoop-3.1.3]# rm -rf tmp   
[root@slave1 hadoop-3.1.3]# rm -rf logs
[root@slave1 hadoop-3.1.3]# rm -rf ha 
[root@slave2 ~]# cd /export/servers/hadoop-3.1.3/
[root@slave2 hadoop-3.1.3]# ls
append.txt  include      logs        share
bin         lib          NOTICE.txt  tmp
etc         libexec      README.txt  sbin
ha          LICENSE.txt
[root@slave2 hadoop-3.1.3]# rm -rf tmp   
[root@slave2 hadoop-3.1.3]# rm -rf logs
[root@slave2 hadoop-3.1.3]# rm -rf ha 
[root@master hadoop-3.1.3]# hdfs namenode -format
    输入对应命令后,若出现图4-1所示标志,说明NameNode格式化成功。

图3-1 格式化NameNode成功界面

为了slave1和master主机NameNode保持一致,需要将master主机上hadoop-3.1.3目录下的tmp文件夹分发给slave1

[root@master hadoop-3.1.3]# scp -r tmp slave1:/export/servers/hadoop-3.1.3/

(4) 格式化ZKFC

[root@master hadoop-3.1.3]# hdfs zkfc -formatZK

(5) 整体启动hdfs和yarn。

[root@master hadoop-3.1.3]# start-dfs.sh
[root@master hadoop-3.1.3]# start-yarn.sh
     输入jps命令,查看主机节点启动情况。
[root@master hadoop-3.1.3]# jps.sh
**********master**********
14192 NameNode
14357 DataNode
14806 DFSZKFailoverController
13752 JournalNode
15144 NodeManager
13450 QuorumPeerMain
14989 ResourceManager
15503 Jps
**********slave1**********
7971 JournalNode
7829 QuorumPeerMain
8696 DFSZKFailoverController
8936 Jps
8793 NodeManager
8395 NameNode
8491 DataNode
**********slave2**********
13424 QuorumPeerMain
14259 NodeManager
14391 Jps
14072 DataNode
13657 JournalNode
[root@master hadoop-3.1.3]#
    若需关闭集群,在主机上输入相应关闭的命令。启动集群是先hdfs后yarn,关闭集群是先yarn后hdfs。

4.查看集群

若要配置yarn ha 环境,只需要在hdfs ha基础上,更改yarn-site.xml文件。

<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <property> <name>yarn.resourcemanager.cluster-id</name> <value>RM_CLUSTER</value> </property> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property>
 <!-- 配置rm1,rm2的主机 -->
     <property>
     <name>yarn.resourcemanager.hostname.rm1</name>
     <value>master</value>
  </property>
      <property>
      <name>yarn.resourcemanager.hostname.rm2</name>
      <value>slave1</value>
    </property>

   <!-- 配置YARN的http端口 -->
       <property>
       <name>yarn.resourcemanager.webapp.address.rm1</name>
       <value>master:8088</value>
       </property>
     <property>
   <name>yarn.resourcemanager.webapp.address.rm2</name>
       <value>slave1:8088</value>
    </property>
<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>
<property>
     <name>yarn.resourcemanager.store.class</name>
     <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
 </property>
     <property>
               <name>yarn.log-aggregation-enable</name>
                <value>true</value>
     </property>
</configuration>

再将更改后的yarn-site.xml文件分发给slave1和slave2。

标签: hdfs hadoop 大数据

本文转载自: https://blog.csdn.net/m0_37658639/article/details/130676931
版权归原作者 EsmeZhao 所有, 如有侵权,请联系我们删除。

“HDFS 高可用的环境搭建”的评论:

还没有评论