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

智能推荐

Dubbo源码分析,读完定能有所收获_dubbo源码和-程序员宅基地

文章浏览阅读6.1k次,点赞25次,收藏29次。Dubbo、源码、调用关系、整体设计、分层、服务注册与消费源码分析、注册中心Zookeeper剖析、目录结构、注册过程分析、URL规则分析、消费过程分析、拓展SPI源码分析、getExtensionLoader加载过程、Adaptive功能实现原理、集群容错源码分析、信息缓存Directory、路由规则实现原理、Cluster组件、负载均衡源码分析、Invoker执行逻辑、网络通信原理剖析、数据包结构分析、数据协议详解、粘包和拆包问题_dubbo源码和

x722网卡支持百兆吗_英特尔(Intel)X722-DA2以太网网络适配器万兆服务器网卡X722DA2...-程序员宅基地

文章浏览阅读1.4k次。英特尔 以太网网络适配器 X722-DA2基本要素产品集700 系列网络适配器(高达 40GbE)状态Launched发行日期:Q4'18垂直市场:Server中等电缆:Copper布线类型:SFP+ Direct Attached Twinaxial Cabling up to 10m支架高度:Low Profile and Full Height支持的操作系统订购与规格信息Intel Et..._塔式服务器中的intel(r) ethernet connection x722 for 1gbe是网线接口吗

Docker容器下Redis/ES/RabbitMQ/MongoDB/FastDFS启动命令总结_bitnami etcd镜像地址-程序员宅基地

文章浏览阅读1k次。1.Docker启动命令介绍例:docker run -d --name myredis -p 6379:6379 redis 命令解析: run:运行容器 -d:表示后台运行,守护进程 --name [myredis]:自定义一个名称 //[中括号内的是自己写,且命令里面没有中括号] -p 6379:6379 容器里面的端口映射到外部电脑的端口2.Docker中..._bitnami etcd镜像地址

git 使用场景 本地分支 关联 远程分支-程序员宅基地

文章浏览阅读796次,点赞8次,收藏7次。【代码】git 使用场景 本地分支 关联 远程分支。

【IDE 小程序】小程序控制台 不打印 console.log问题_微信小游戏 真机调试 无法打印任何log-程序员宅基地

文章浏览阅读1.2k次。全局搜索compress.drop_console(一般在config文件中),设置为false,再重新打开小程序即可。_微信小游戏 真机调试 无法打印任何log

整合ssm使用Vue实现前后端数据交互(详细版)_ssmvue前后端怎么连接-程序员宅基地

文章浏览阅读9.2k次,点赞19次,收藏83次。使用vue 实现前后端数据的交互创建vue工程创建ssm项目结果创建vue工程一.创建webpack骨架类型的vue项目格式参考如下:二.npm操作:安装vue-router:npm install vue-router --save-dev安装element-ui:npm i element-ui -S安装SAss加载器:npm install sass-loader node-sass --save-dev安装axios:npm install --save axios vu_ssmvue前后端怎么连接

随便推点

python图形化界面pyqt_python pyqt5 图形化界面编程-程序员宅基地

文章浏览阅读116次。库的成功融合。Qt库是目前最强大的库之一。PyQt是由Phil Thompson开发。#说到PyQt,我们不妨了解一下什么是Qt# Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta ObjectCompiler,...

html 如何给图片打标签,图文详解HTML页面中添加图片的三种方法-程序员宅基地

文章浏览阅读6k次。在页面布局时,经常需要在页面中插入图片,那你知道如何在HTML中添加图片吗?这篇文章就给大家介绍HTML页面中插入图片的三种方法,感兴趣的朋友可以参考一下,希望对你有所帮助。方法一、用HTML中的img标签添加图片最简单,最常用的就是直接使用img标签,并且可以根据需要设置图片的大小,代码如下: 效果图:方法二、用JavaScript创建一个img元素来导入图片先创建一个img元素,再设置这个i..._html图片插入标签

oracle内核+相克军Oracle视频 看懂绝对是高级DBA了-程序员宅基地

文章浏览阅读1.3k次。1.行删除后回滚中间表exchange partition这种按月分区吧2.system的buffer cache2.索引读取次数i/o出问题指标等待事件oracle知道的,主动登记的 i./o network等待事件表gdbkslwtbctx kslwait 等待任务利用sid 找错误 spid..._相克军

【NOIP2015模拟11.2晚】舳舻牌-程序员宅基地

文章浏览阅读908次。DescriptionAlice和Bob,哦不,CZL和YYY在玩一个游戏。桌上有n张牌,每张牌对两人各有一个诱惑值,和它自己的价值。CZL先手,每次操作方喊出一个值X,然后把桌上剩下的对他诱惑值<=X的牌全部收走(至少一张),并获得其的价值。 求CZL的最大得分。Solution博弈,倒着DP。 首先把诱惑值离散化。 设Fi,j表示CZL喊到i,YYY喊道j,CZL的最大收益;Gi,j表示Y

十四、 jeecgboot路由缓存,切换Tab不刷新页面内容,保持用户选择_jeecgboot 页面切换不要刷新数据-程序员宅基地

文章浏览阅读725次,点赞9次,收藏9次。页面缓存保留用户输入数据不丢失_jeecgboot 页面切换不要刷新数据

springboot配置两个parent的方法_pom多个parent-程序员宅基地

文章浏览阅读6.4k次,点赞3次,收藏8次。在向pom.xml 文件中添加依赖之前需要先添加spring-boot-starter-parent。springboot-starter- parent主要提供了如下默认配置: .Java版本默认使用1.8.编码格式默认使用 UTF-8.提供Dependency Management进行项目依赖的版本管理。默认的资源过滤与插件配置。spring-boot-starter-paren..._pom多个parent

推荐文章

热门文章

相关标签