hadoop HA机制_hadoop的ha设置通常采用什么组件实现-程序员宅基地

技术标签: Hadoop  HA  高可用  

HADOOP HA机制

回顾:
今天任务
1.什么是HA
2.HA的实现场景
3.配置HA环境
教学目标
1.理解HA的机制
2.掌握HA环境的配置流程
第一节:HADOOP HA概述
1.1 背景

​ 在Hadoop 2.0.0之前,NameNode是HDFS集群中的单点故障(SPOF)。每个群集都有一个NameNode,如果该机器或进程不可用,整个群集将不可用,直到NameNode重新启动或在单独的计算机上启动为止。这在两个主要方面影响了HDFS集群的总体可用性:

  • 在计划外事件(例如机器崩溃)的情况下,直到操作员重新启动NameNode后,群集才可用。
  • 计划的维护事件(如NameNode计算机上的软件或硬件升级)将导致群集停机时间窗口。

HDFS高可用性功能通过提供在具有热备用的主动/被动配置中的同一群集中运行两个(以及3.0.0多于两个)冗余NameNode的选项来解决上述问题。这允许在计算机崩溃的情况下快速故障转移到新的NameNode,或者为计划维护目的而进行正常的管理员启动的故障转移。

1.2 HA(High Available)概念
  • hadoop-HA集群运作机制介绍

    所谓HA,即高可用(7*24小时不中断服务)(secondarynamenode只是保证了“可靠性”)实现高可用最关键的是消除单点故障,hadoop-ha严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HA。

  • HDFS的HA机制详解

    通过双namenode消除单点故障,双namenode协调工作的要点:

    • 元数据管理方式需要改变
    • 需要一个状态管理功能模块
第二节 HA集群配置
2.1 基础配置
  • 创建7台机器,设置静态ip分别如下:

    | 机器名                        | ip             |
    | ----------------------------- | -------------- |
    | CentOs6.4_min_java_hadoop_ha1 | 192.168.18.171 |
    | CentOs6.4_min_java_hadoop_ha2 | 192.168.18.172 |
    | CentOs6.4_min_java_hadoop_ha3 | 192.168.18.173 |
    | CentOs6.4_min_java_hadoop_ha4 | 192.168.18.174 |
    | CentOs6.4_min_java_hadoop_ha5 | 192.168.18.175 |
    | CentOs6.4_min_java_hadoop_ha6 | 192.168.18.176 |
    | CentOs6.4_min_java_hadoop_ha7 | 192.168.18.177 |
    
  • 设置每台机器的hostname

    vi /etc/sysconfig/network    #编辑network文件,修改内容如下
    	NETWORKING=yes
    	HOSTNAME=ha1
      
    #分别在7台机器上执行上述命令,使得各台机器的hostname对应关系如下:
      
    | 机器名                        | hostname |
    | ----------------------------- | -------- |
    | CentOs6.4_min_java_hadoop_ha1 | ha1      |
    | CentOs6.4_min_java_hadoop_ha2 | ha2      |
    | CentOs6.4_min_java_hadoop_ha3 | ha3      |
    | CentOs6.4_min_java_hadoop_ha4 | ha4      |
    | CentOs6.4_min_java_hadoop_ha5 | ha5      |
    | CentOs6.4_min_java_hadoop_ha6 | ha6      |
    | CentOs6.4_min_java_hadoop_ha7 | ha7      |
    
  • 修改各个机器的主机名和ip的映射(修改每台机器的hosts文件)

    vi /etc/hosts   #为hosts文件添加如下内容
      
    	192.168.18.171 ha1
    	192.168.18.172 ha2
    	192.168.18.173 ha3
    	192.168.18.174 ha4
    	192.168.18.175 ha5
    	192.168.18.176 ha6 
    	192.168.18.177 ha7
    
  • 为每台机器创建一个名为hadoop的用户

    useradd hadoop  #添加hadoop用户
    passwd hadoop   #给hadoop用户 设置密码
    
  • 为每台机器的hadoop用户配置sudo权限

    vi /etc/sudoers   #使用root用户编辑 添加如下内容:
    	hadoop ALL=(ALL) ALL
    
  • 关闭每台机器的防火墙

    #查看防火墙状态
    service iptables status
      
    #关闭防火墙
    service iptables stop
      
    #查看防火墙开机启动状态
    chkconfig iptables --list
      
    #关闭防火墙开机启动
    chkconfig iptables off
    
  • 每台机器安装JDK

    #创建文件夹
    mkdir /home/hadoop/develop_env
      
    #解压
    tar -zxvf jdk-7u55-linux-i586.tar.gz -C /home/hadoop/develop_env
    
  vim /etc/profile    #将java添加到环境变量中在文件最后添加
      export JAVA_HOME=/home/hadoop/develop_env/jdk1.7.0_65
      export PATH=$PATH:$JAVA_HOME/bin

  #刷新配置
  source /etc/profile
2.2 hadoop配置
  • 集群规划
主机名 安装的软件 运行的进程
ha1 hadoop NameNode、DFSZKFailoverController(zkfc)
ha2 hadoop NameNode、DFSZKFailoverController(zkfc)
Ha3 hadoop ResourceManager
Ha4 hadoop ResourceManager
Ha5 hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
Ha6 hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain
Ha7 hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain

1.在hadoop2.0中通常由两个NameNode组成,一个处于active状态(激活状态),另一个处于standby状态(后备状态)。ActiveNameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步active namenode的状态,以便能够在它失败时快速进行切换。

hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode(jounal 日志)同步元数据信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode

这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当ActiveNameNode挂掉了,会自动切换Standby NameNode为standby状态

2.hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.4.1解决了这个问题,有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调

  • 安装步骤

    1. 安装配置zooekeeper集群(在ha5上)(更详细zookeeper安装步骤参见zookeeper安装)

      1.1解压

      #上传zookeeper-3.4.7.tar.gz到/home/hadoop/develop_env
      tar -zxvf zookeeper-3.
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36643786/article/details/84932367

智能推荐

class和struct的区别-程序员宅基地

文章浏览阅读101次。4.class可以有⽆参的构造函数,struct不可以,必须是有参的构造函数,⽽且在有参的构造函数必须初始。2.Struct适⽤于作为经常使⽤的⼀些数据组合成的新类型,表示诸如点、矩形等主要⽤来存储数据的轻量。1.Class⽐较适合⼤的和复杂的数据,表现抽象和多级别的对象层次时。2.class允许继承、被继承,struct不允许,只能继承接⼝。3.Struct有性能优势,Class有⾯向对象的扩展优势。3.class可以初始化变量,struct不可以。1.class是引⽤类型,struct是值类型。

android使用json后闪退,应用闪退问题:从json信息的解析开始就会闪退-程序员宅基地

文章浏览阅读586次。想实现的功能是点击顶部按钮之后按关键字进行搜索,已经可以从服务器收到反馈的json信息,但从json信息的解析开始就会闪退,加载listview也不知道行不行public abstract class loadlistview{public ListView plv;public String js;public int listlength;public int listvisit;public..._rton转json为什么会闪退

如何使用wordnet词典,得到英文句子的同义句_get_synonyms wordnet-程序员宅基地

文章浏览阅读219次。如何使用wordnet词典,得到英文句子的同义句_get_synonyms wordnet

系统项目报表导出功能开发_积木报表 多线程-程序员宅基地

文章浏览阅读521次。系统项目报表导出 导出任务队列表 + 定时扫描 + 多线程_积木报表 多线程

ajax 如何从服务器上获取数据?_ajax 获取http数据-程序员宅基地

文章浏览阅读1.1k次,点赞9次,收藏9次。使用AJAX技术的好处之一是它能够提供更好的用户体验,因为它允许在不重新加载整个页面的情况下更新网页的某一部分。另外,AJAX还使得开发人员能够创建更复杂、更动态的Web应用程序,因为它们可以在后台与服务器进行通信,而不需要打断用户的浏览体验。在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种常用的技术,用于在不重新加载整个页面的情况下,从服务器获取数据并更新网页的某一部分。使用AJAX,你可以创建异步请求,从而提供更快的响应和更好的用户体验。_ajax 获取http数据

Linux图形终端与字符终端-程序员宅基地

文章浏览阅读2.8k次。登录退出、修改密码、关机重启_字符终端

随便推点

Python与Arduino绘制超声波雷达扫描_超声波扫描建模 python库-程序员宅基地

文章浏览阅读3.8k次,点赞3次,收藏51次。前段时间看到一位发烧友制作的超声波雷达扫描神器,用到了Arduino和Processing,可惜啊,我不会Processing更看不懂人家的程序,咋办呢?嘿嘿,所以我就换了个思路解决,因为我会一点Python啊,那就动手吧!在做这个案例之前先要搞明白一个问题:怎么将Arduino通过超声波检测到的距离反馈到Python端?这个嘛,我首先想到了串行通信接口。没错!就是串口。只要Arduino将数据发送给COM口,然后Python能从COM口读取到这个数据就可以啦!我先写了一个测试程序试了一下,OK!搞定_超声波扫描建模 python库

凯撒加密方法介绍及实例说明-程序员宅基地

文章浏览阅读4.2k次。端—端加密指信息由发送端自动加密,并且由TCP/IP进行数据包封装,然后作为不可阅读和不可识别的数据穿过互联网,当这些信息到达目的地,将被自动重组、解密,而成为可读的数据。不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统重新识别后,才能真正解密。2.使用时,加密者查找明文字母表中需要加密的消息中的每一个字母所在位置,并且写下密文字母表中对应的字母。_凯撒加密

工控协议--cip--协议解析基本记录_cip协议embedded_service_error-程序员宅基地

文章浏览阅读5.7k次。CIP报文解析常用到的几个字段:普通类型服务类型:[0x00], CIP对象:[0x02 Message Router], ioi segments:[XX]PCCC(带cmd和func)服务类型:[0x00], CIP对象:[0x02 Message Router], cmd:[0x101], fnc:[0x101]..._cip协议embedded_service_error

如何在vs2019及以后版本(如vs2022)上添加 添加ActiveX控件中的MFC类_vs添加mfc库-程序员宅基地

文章浏览阅读2.4k次,点赞9次,收藏13次。有时候我们在MFC项目开发过程中,需要用到一些微软已经提供的功能,如VC++使用EXCEL功能,这时候我们就能直接通过VS2019到如EXCEL.EXE方式,生成对应的OLE头文件,然后直接使用功能,那么,我们上篇文章中介绍了vs2017及以前的版本如何来添加。但由于微软某些方面考虑,这种方式已被放弃。从上图中可以看出,这一功能,在从vs2017版本15.9开始,后续版本已经删除了此功能。那么我们如果仍需要此功能,我们如何在新版本中添加呢。_vs添加mfc库

frame_size (1536) was not respected for a non-last frame_frame_size (1024) was not respected for a non-last-程序员宅基地

文章浏览阅读785次。用ac3编码,执行编码函数时报错入如下:[ac3 @ 0x7fed7800f200] frame_size (1536) was not respected for anon-last frame (avcodec_encode_audio2)用ac3编码时每次送入编码器的音频采样数应该是1536个采样,不然就会报上述错误。这个数字并非刻意固定,而是跟ac3内部的编码算法原理相关。全网找不到,国内音视频之路还有很长的路,音视频人一起加油吧~......_frame_size (1024) was not respected for a non-last frame

Android移动应用开发入门_在安卓移动应用开发中要在活动类文件中声迷你一个复选框变量-程序员宅基地

文章浏览阅读230次,点赞2次,收藏2次。创建Android应用程序一个项目里面可以有很多模块,而每一个模块就对应了一个应用程序。项目结构介绍_在安卓移动应用开发中要在活动类文件中声迷你一个复选框变量

推荐文章

热门文章

相关标签