Hadoop 高可用(HA)的自动容灾配置

时间:2023-01-24 17:30:26

参考链接

  Hadoop 完全分布式安装

  ZooKeeper 集群的安装部署


0. 说明

  在 Hadoop 完全分布式安装 & ZooKeeper 集群的安装部署的基础之上进行 Hadoop 高可用(HA)的自动容灾配置

  Hadoop 高可用

  High Availablility 相当于再配置一台 NameNode

  单节点模式容易产生单点故障

  冷备份和热备份的区别

  热备份:有两个 NameNode 同时工作,其中一台机器处于 active 状态,另一台机器处于 standby 状态。
      两个节点数据是即时同步的,起同步作用的进程成为 JournalNode

  冷备份:相当于 SecondaryNameNode


1. NameNode & DataNode 多目录配置

  0. 关闭集群

stop-all.sh

  1. NameNode 多目录配置

  目的:用于冗余,存储多个镜像文件副本

# 编辑 hdfs-site.xml
sudo vim /soft/hadoop/etc/hadoop/hdfs-site.xml <property>
<name>dfs.namenode.name.dir</name>
<value>/home/centos/hadoop/dfs/name1,/home/centos/hadoop/dfs/name2</value>
</property>

  分发配置文件

xsync.sh /soft/hadoop/etc/hadoop/hdfs-site.xml

  重命名 name 文件夹为 name1 ( 在 /home/centos/hadoop/dfs 目录执行以下操作 )

mv name name1

  拷贝 name1 文件夹到 name2

cp -r name1 name2

2. DataNode 多目录配置

  目的:用于扩容,将所有数据文件存放在不同的磁盘设备上,如 SSD 等等

# 编辑 hdfs-site.xml
sudo vim /soft/hadoop/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/centos/hadoop/dfs/data1,/home/centos/hadoop/dfs/data2</value>
</property>

  分发配置文件

xsync.sh /soft/hadoop/etc/hadoop/hdfs-site.xml

  重命名 data 文件夹为 data1

xcall.sh mv /home/centos/hadoop/dfs/data /home/centos/hadoop/dfs/data1

  启动 HDFS

start-dfs.sh

3. 配置高可用(冷备份)

  3.0 拷贝 full 文件夹到 ha

# 复制 Hadoop 配置文件
cp -r /soft/hadoop/etc/full /soft/hadoop/etc/ha # 更改软链接
ln -sfT /soft/hadoop/etc/ha /soft/hadoop/etc/hadoop

  3.1 修改 hdfs-site.xml

<?xml version="1.0"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>s105:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/centos/ha/dfs/name1,/home/centos/ha/dfs/name2</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/centos/ha/dfs/data1,/home/centos/ha/dfs/data2</value>
</property> <!-- hdfs高可用配置 -->
<property>
<name>dfs.nameservices</name>
<value>mycluster</value>
</property>
<property>
<name>dfs.ha.namenodes.mycluster</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn1</name>
<value>s101:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2</name>
<value>s105:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn1</name>
<value>s101:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.mycluster.nn2</name>
<value>s105:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://s102:8485;s103:8485;s104:8485/mycluster</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>shell(/bin/true)</value>
</property>
</configuration>

  3.2 修改 core-site.xml

<?xml version="1.0"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/centos/ha/dfs/journal/node/local/data</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/centos/ha</value>
</property>
</configuration>

  3.3  修改 slaves 文件

s102
s103
s104

  3.4 配置 s105 的 SSH 免密登陆

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

ssh-copy-id centos@s101
ssh-copy-id centos@s102
ssh-copy-id centos@s103
ssh-copy-id centos@s104
ssh-copy-id centos@s105

  3.5 将 s101 的工作目录发送给 s105

  删除 s102-s105 的配置文件,不要用 xcall.sh 脚本

ssh s102 rm -rf /soft/hadoop/etc
ssh s103 rm -rf /soft/hadoop/etc
ssh s104 rm -rf /soft/hadoop/etc
ssh s105 rm -rf /soft/hadoop/etc

  将 s101 配置文件分发

xsync.sh /soft/hadoop/etc

  3.6 启动 JournalNode

hadoop-daemons.sh start journalnode

  3.7 格式化 NameNode

hdfs namenode -format

  3.8 将 s101 的 ha 目录发送给 s105

scp -r ~/ha centos@s105:~

  3.9 启动 HDFS ,观察 s101 和 s105 的 NameNode 情况

start-dfs.sh

  Hadoop 高可用(HA)的自动容灾配置     Hadoop 高可用(HA)的自动容灾配置

  3.10 手动切换 s101 的 NameNode 为 active 状态

hdfs haadmin -transitionToActive nn1

  Hadoop 高可用(HA)的自动容灾配置


4. 配置高可用(热备份)

  4.0 说明

  Hadoop 高可用热备份的配置建立在冷备份的配置基础之上

  4.1 关闭 Hadoop

stop-all.sh

  4.2 启动 s102-s104 的 ZooKeeper

zkServer.sh start

  4.3 修改 hdfs-site.xml ,添加以下内容

<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>

  4.4 修改 core-site.xml ,添加以下内容

<property>
<name>ha.zookeeper.quorum</name>
<value>s102:,s103:,s104:</value>
</property>

  4.5 分发配置文件

xsync.sh /soft/hadoop/etc/hadoop/hdfs-site.xml
xsync.sh /soft/hadoop/etc/hadoop/core-site.xml

  4.6 初始化 ZooKeeper

hdfs zkfc -formatZK

  4.7 启动 HDFS

start-dfs.sh

  4.8 查看进程

xcall.sh jps

  Hadoop 高可用(HA)的自动容灾配置

  4.9 启动 Zookeeper 命令行脚本 zkCli.sh

zkCli.sh

  Hadoop 高可用(HA)的自动容灾配置


5. 测试 Hadoop 高可用(HA)的自动容灾

  5.0 说明

  通过关闭 s101 的 NameNode 进程验证 Hadoop 高可用的自动容灾

  5.1 通过 Web 查看 Hadoop 两个节点 s101 、s105 的状态

  http://192.168.23.101:50070

  http://192.168.23.105:50070

  Hadoop 高可用(HA)的自动容灾配置

  Hadoop 高可用(HA)的自动容灾配置

  5.2 关闭 s101 

  已知 s101 的 NameNode 进程 id 为 3478

kill - 

  5.3 再次查看 Hadoop 两个节点 s101 、s105 的状态

  通过 Web 可以看出 s105 的状态为 active ,实现了自动容灾

Hadoop 高可用(HA)的自动容灾配置

  Hadoop 高可用(HA)的自动容灾配置


6. 查看 Hadoop 高可用文件

  在 s102 启动 ZooKeeper 命令行( zkCli.sh ),再执行以下操作

  其中:

  1. ActiveStandbyElectorLock 是临时结点,负责存储 active 状态下的节点地址
  2. ActiveBreadCrumb 是永久结点,负责在 ZooKeeper 会话关闭时,下一次启动状态下正确分配 active 节点,避免脑裂(brain-split),即两个 active 节点状态
[zk: localhost:(CONNECTED) ] ls /
[zookeeper, hadoop-ha]
[zk: localhost:(CONNECTED) ] ls /hadoop-ha
[mycluster]
[zk: localhost:(CONNECTED) ] ls /hadoop-ha/mycluster
[ActiveBreadCrumb, ActiveStandbyElectorLock]
[zk: localhost:(CONNECTED) ] get /hadoop-ha/mycluster/ActiveBreadCrumb myclusternn1s101 �>(�>
cZxid = 0x500000008
ctime = Thu Sep :: CST
mZxid = 0x500000016
mtime = Thu Sep :: CST
pZxid = 0x500000008
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x0
dataLength =
numChildren =
[zk: localhost:(CONNECTED) ] get /hadoop-ha/mycluster/ActiveStandbyElectorLock myclusternn1s101 �>(�>
cZxid = 0x500000015
ctime = Thu Sep :: CST
mZxid = 0x500000015
mtime = Thu Sep :: CST
pZxid = 0x500000015
cversion =
dataVersion =
aclVersion =
ephemeralOwner = 0x666618cd7c5a0005
dataLength =
numChildren =

Hadoop 高可用(HA)的自动容灾配置的更多相关文章

  1. 大数据入门第十天——hadoop高可用HA

    一.HA概述 1.引言 正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制 2.运行机制 实现高可用最关键的是消除单点故障 hadoop-ha严格来说应该分成各个组件的HA机制——H ...

  2. &lbrack;大数据&rsqb; hadoop高可用&lpar;HA&rpar;部署(未完)

    一.HA部署架构 如上图所示,我们可以将其分为三个部分: 1.NN和DN组成Hadoop业务组件.浅绿色部分. 2.中间深蓝色部分,为Journal Node,其为一个集群,用于提供高可用的共享文件存 ...

  3. hadoop高可用HA的配置

    zk3 zk4 zk5 配置hadoop的HA大概可以分为以下几步: 配置zookpeer(namenode之间的通信要靠zk来实现) 配置hadoop的 hadoop-env.sh hdfs-sit ...

  4. Rancher安装多节点高可用&lpar;HA&rpar;

    Rancher版本:Rancher v1.0.1 基本配置需求 多节点的HA配置请参照单节点需求 节点需要开放的端口 全局访问:TCP 端口22,80,443,18080(可选:用于在集群启动前 查看 ...

  5. hadoop在zookeeper上的高可用HA

    (参考文章:https://www.linuxprobe.com/hadoop-high-available.html) 一.技术背景 影响HDFS集群不可用主要包括以下两种情况:一是NameNode ...

  6. hadoop学习笔记(七):hadoop2&period;x的高可用HA(high avaliable)和联邦F&lpar;Federation&rpar;

    Hadoop介绍——HA与联邦 0.1682019.06.04 13:30:55字数 820阅读 138 Hadoop 1.0中HDFS和MapReduce在高可用.扩展性等方面存在问题: –HDFS ...

  7. centos7搭建hadoop2&period;10高可用&lpar;HA&rpar;

    本篇介绍在centos7中搭建hadoop2.10高可用集群,首先准备6台机器:2台nn(namenode);4台dn(datanode):3台jns(journalnodes) IP hostnam ...

  8. HADOOP高可用机制

    HADOOP高可用机制 HA运作机制 什么是HA HADOOP如何实现HA HDFS-HA详解 HA集群搭建 目标: 掌握分布式系统中HA机制的思想 掌握HADOOP内置HA的运作机制 掌握HADOO ...

  9. 【Hadoop】2、Hadoop高可用集群部署

    1.服务器设置 集群规划 Namenode-Hadoop管理节点 10.25.24.92 10.25.24.93 Datanode-Hadoop数据存储节点 10.25.24.89 10.25.24. ...

随机推荐

  1. WebAPI中无法获取Session对象的解决办法

    在MVC的WebApi中默认是没有开启Session会话支持的.需要在Global中重写Init方法来指定会话需要支持的类型 public override void Init() { PostAut ...

  2. Coding&period;net 代码管理快速入门

    当项目创建好了之后,我们该如何上传代码到 coding 上呢? Coding 网站使用“ Git 仓库”(类似 github )来管理代码. 其操作原理在于:利用 git 服务,将本地的项目目录下的文 ...

  3. go的优缺点

    1.1 不允许左花括号另起一行1.2 编译器莫名其妙地给行尾加上分号1.3 极度强调编译速度,不惜放弃本应提供的功能1.4 错误处理机制太原始1.5 垃圾回收器(GC)不完善.有重大缺陷1.6 禁止未 ...

  4. error LNK2019&colon; 无法解析的外部符号 &lowbar;&lowbar;imp&lowbar;&lowbar;&lowbar;CrtDbgReportW

    error LNK2005 and error LNK2019 error LNK2019: unresolved external symbol __imp___CrtDbgReportW refe ...

  5. &lbrack;暂停一天&rsqb;从零开始PHP学习 - 第六天

    今天这个系列没有时间去写了 在公司完善一个项目     已经备好6瓶咖啡 两天 + 一夜 完成这个项目  真是苦逼 诶 反正这几天 明白一个道理:别以为你多牛B 你不会的东西多了!  比你牛B的人也多 ...

  6. 解决vue解析出现闪烁

    原因:  在使用vuejs.angularjs开发时,经常会遇见在如Chrome这类能够快速解析的浏览器上出现表达式({{ express }} ),或者是模块(div)的闪烁.对于这个问题由于Jav ...

  7. Service启动,绑定与交互

    1. Service的启动方式有startServcie和bindService两种. startService时,会经历onCreate—onStartCommand—onDestroy生命周期, ...

  8. bzoj1030【JSOI2007】文本生成器

    1030: [JSOI2007]文本生成器 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 2891  Solved: 1193 [Submit][St ...

  9. &lbrack;JAVA&rsqb;JAVA多线程实现方法之——实现Runnable接口

    public class MultiThread { public static void main(String[] args) { Thread t1 = new Thread(new Threa ...

  10. googletest进行单元测试(使用cmake编译)

    一.前提: 1.假定你的系统为centos6系列 2.假定你已经安装了基本的编译环境,gcc,g++4.4.7 3.假定你已经设置了环境变量:KDS_MOBILE_STOCK_HOME 4.假定你已经 ...