Centos 7 Hadoop3.x HA 高可用搭建教程

Centos7 Hadoop3.x HA 高可用搭建教程

什么是HDFS高可用?

1.NameNode存在单点失效问题,如果NameNode失效了,那么所有的客户端和mapreduce均无法读写文件,因为NameNode是唯一存储元数据与文件到数据块映射的地方。HDFS高可用是配置了一对活动-备用(active-standby) 的NameNode,当活动的NameNode挂掉时,备用NameNode就会接管它的任务并开始服务于来自客户端的请求,不会有任何明显的中断。

Hadoop3.x高可用架构图

在这里插入图片描述
在这里解释一下每个角色:
1.NameNode:两个名称节点,有active和standby两种状态。
2.JournalNode:用于共享edits文件,不但会给standby主机发一份,自己也会存一份。借此来做元数据的实时热备,这里JN也是个集群。
3.Zookeeper:zookeeper究竟是怎么监控各个主机的状态的?答案是通过监测临时节点,当我们启动集群时,会向zookeeper中注射一个节点:hadoop-ha,每个namenode启动时都会向该节点下注射自己的临时节点信息,如果该节点信息消失,那么zookeepr就知道这台主机挂掉了。所以zookeeper在Hadoop HA环境下的主要任务是用来做主备切换。
4.失败恢复进程类(FailOverController):zookeeper一旦检测到有active主机挂掉,就会通知standby状态的主机中的该进程,把standby转换为active,继续进行服务。而已经挂掉的那台不能让它一直宕机,我们需要单独启动,启动后状态会由active转变为standby。
5.NodeManager:该进程为要启动的任务准备好运行环境,并且将启动命令写在一个脚本中来运行。NodeManager会通过心跳信息向ResourceManager汇报自己所在节点的资源使用情况。
6.ResourceManager:该进程完成整个集群的资源管理和调度。
7.从上可以看出,搭建一个完整的HA系统,最少要14台主机。

但是在这里我们使用三台虚拟机完成Hadoop HA的搭建

以下简单操作需自行完成:

1.这里默认你的三台虚拟机安装好jdk1.8配好环境变量并且可以使用。
2.要熟悉基本的linux操作。
3.安装好Hadoop-3.1.2配好环境变量。
4.安装好zookeeper-3.4.6。
5.给自己的三台主机host改名为master,slave1,slave2
(三台主机都要有环境)

Hadoop核心配置文件介绍
文件名称 描述
hadoop-env.sh 脚本中要用到的环境变量,以运行hadoop
mapred-env.sh 脚本中要用到的环境变量,以运行mapreduce(覆盖hadoop-env.sh中设置的变量)
yarn-env.sh 脚本中要用到的环境变量,以运行YARN(覆盖hadoop-env.sh中设置的变量)
core.site.xml Hadoop Core的配置项,例如HDFS,MAPREDUCE,YARN中常用的I/O设置等
hdfs-site.xml Hadoop守护进程的配置项,包括namenode和datanode等
mapred-site.xml MapReduce守护进程的配置项,包括job历史服务器
yarn-site.xml Yarn守护进程的配置项,包括资源管理器和节点管理器
workers 具体运行datanode和节点管理器的主机名称
1.hadoop-env.sh配置

在文件结尾处添加:

export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_ZKFC_USER=root
export HDFS_JOURNALNODE_USER=root

java_home配成你自己的路径即可。

2.core-site.xml配置
<configuration>
   <property>
        <name>fs.defaultFS</name>
        <value>hdfs://ns</value>
   </property>


 <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/utils/hadoopdata</value>
   </property>
<property>
    <name>ha.zookeeper.quorum</name>
    <value>master:2181,slave1:2181,slave2:2181</value>
</property>

<property>
  <name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>

</configuration>

ns是集群的名称,hadoop.tmp.dir是存储临时数据的目录,ha.zookeeper.quorum下要配置zookeeper集群:主机名:2181,2181是zookeeper的默认端口,不要改。

3.hdfs-site.xml配置
<configuration>
  <!-- 与前面配置的匹配-->
  <property>
    <name>dfs.nameservices</name>
    <value>ns</value>
</property>

 <!--给两个namenode起别名nn1,nn2这个名字不固定,可以自己取 -->
<property>
    <name>dfs.ha.namenodes.ns</name>
<value>nn1,nn2</value>
</property>

 <!--nn1的rpc通信端口 -->
  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值