Cris 玩转大数据系列之 Hadoop HA 实现

本文详细介绍了Cris在Hadoop高可用(HA)方面的实践,涵盖HDFS和YARN的HA原理、手动与自动故障转移过程,以及Federation架构设计。通过学习,读者将能理解和实施Hadoop HA解决方案。
摘要由CSDN通过智能技术生成

零、序

强烈建议看完 Cris 小哥哥的 Linux 学习笔记以及 ZooKeeper 和 Hadoop 的学习笔记再来看这篇笔记,否则你几乎不可能看懂~

1. Hadoop 实现 HA 原理

1.1 什么是 HA?

1)所谓HA(high available),即高可用(7*24小时不中断服务)。

2)实现高可用最关键的策略是消除单点故障(single point of failure,SPOF)。单点故障是一个组件发生故障,就会导致整个系统无法运行。HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA。

3)Hadoop2.0之前,在HDFS集群中NameNode存在单点故障。

4)NameNode主要在以下两个方面影响HDFS集群
​ NameNode机器发生意外,如宕机,集群将无法使用,直到管理员重启
​ NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用

HDFS HA功能通过配置Active/Standby两个nameNodes实现在集群中对NameNode的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode很快的切换到另外一台机器

1.2 HA 工作机制

​ 配置两个 namenode,通过双 namenode 消除单点故障

2. HDFS-HA 手动故障转移(了解)

实际生产中,都是使用自动故障转移,这里给出手动故障转移的操作流程是希望大家知其所以然~

2.1 要点

1)元数据管理方式需要改变:
​ 内存中各自保存一份元数据;
Edits 日志只有 Active 状态的 namenode 节点可以做写操作;
​ 两个 namenode 都可以读取 edits
​ 共享的 edits 放在一个共享存储中管理(qjournalNFS 两个主流实现);

2)必须保证两个 NameNode 之间能够 ssh 无密码登录。

3)隔离(Fence),即同一时刻仅仅有一个 NameNode 对外提供服务,防止脑裂(split-brain)

2.2 环境准备

  1. 修改 IP
  2. 修改主机名及主机名和 IP 地址的映射
  3. 关闭防火墙
  4. ssh 免密登录
  5. 安装 JDK,配置环境变量等

如果不会的同学请参考 Cris 小哥哥的 Hadoop 学习笔记

2.3 测试集群规划

hadoop101 hadoop102 hadoop103
HDFS NameNode DataNode JournalNode NameNode DataNode JournalNode DataNode JournalNode
YARN NodeManager ResourceManager NodeManager NodeManager

2.4 配置 HDFS-HA 集群

  1. 首先应该做好虚拟机的快照!!! 防止出现问题随时回滚 ?

  2. /opt/module/ 目录下创建一个 HA 文件夹

    mkdir HA
    

    然后将我们之前就装好的 Hadoop 的文件夹拷贝到 HA 目录里去

    cp -r zookeeper-3.4.10/ HA/
    

mark

  1. 确保配置 hadoop-env.sh 中的 JAVA_HOME 变量为 Linux 安装的 jdk 目录

    mark

  2. 配置 core-site.xml,具体配置参数如下

    <configuration>
    <!-- 把两个NameNode的地址组装成一个集群mycluster -->
            <property>
                    <name>fs.defaultFS</name>
                    <value>hdfs://mycluster</value>
            </property>
    
            <!-- 声明journalnode服务本地文件系统存储目录-->
            <property>
                    <name>dfs.journalnode.edits.dir</name>
                    <value>/opt/module/HA/hadoop-2.7.2/data/jn</value>
            </property>
    
            <!-- 指定hadoop运行时产生文件的存储目录 -->
            <property>
                    <name>hadoop.tmp.dir</name>
                    <value>/opt/module/HA/hadoop-2.7.2/data/tmp</value>
            </property>
    </configuration>
    
  3. 配置 hdfs-site.xml

    <configuration>
    <!-- 完全分布式集群名称 -->
            <property>
                    <name>dfs.nameservices</name>
                    <value>mycluster</value>
            </property>
    
            <!-- 该nameservice下NameNode节点都有哪些 -->
            <property>
                    <name>dfs.ha.namenodes.mycluster</name>
                    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值