好程序员大数据学习路线分享Hadoop阶段的高可用配置

大数据学习路线分享Hadoop阶段的高可用配置,什么是Hadoop的HA机制

  Ha机制即Hadoop的高可用(7*24小时不中断服务)

  正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制

  hadoop-ha严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HA

HDFS的HA机制详解
HDFS 的HA主要是通过双namenode协调工作实现

双namenode协调工作的要点:
A、元数据管理方式需要改变:

内存中各自保存一份元数据

Edits日志只能有一份,只有Active状态的namenode节点可以做写操作

两个namenode都可以读取edits

共享的edits放在一个共享存储中管理(qjournal和NFS两个主流实现)

B、需要一个状态管理功能模块

实现了一个zkfailover,常驻在每一个namenode所在的节点

每一个zkfailover负责监控自己所在namenode节点,利用zk进行状态标识

当需要进行状态切换时,由zkfailover来负责切换

切换时需要防止brain split脑裂现象的发生

Namenode的运行原理
两台服务器上都存在一个namenode ,其中一台Namenode 处于active状态,一台处于standby状态,两台服务器数据共享,两台服务器各自存有一份元数据,但是edit数据只有一份,两台服务器只有处于active状态的namenode服务器可以对edit进行写操作,另一台服务器只能对edit进行读操作,而共享的edit放到一个共享存储中进行管理。共享存储由文件管理系统qjournal和NFS来实现。

而两台服务器的active standby状态如何管理,则需要一个管理模块:ZKFC (zookeeper failover controller) 来管理。每一个zkfc负责监控自己所在namenode节点,利用zk进行状态标识。当需要进行状态切换时,由zkfailover来负责切换

切换时需要防止brain split脑裂现象的发生。
什么是脑裂现象

脑裂现象就是两台namenode都处于active状态,产生冲突,这就是脑裂。Hadoop的高可用配置要注意解决脑裂状态。

脑裂状态如何产生

当一台active状态的namenode服务器处于假死状态,那么另一台namenode服务器的zkfc收到信息,把属于他的namenode状态改变为active状态,第一台处于假死状态的namdenode又醒过来,就会产生脑裂。

脑裂如何解决
第二台namenode的zkfc此时就会一不做二不休,把第一台处于假死状态的namenode杀掉 运用ssh kill -9 namenode ,直接杀掉第一台服务器的namenode进行补刀,如果补刀不成功的话,zkfc进入第一台服务器,直接调用用户的自定义脚本程序 /home/Hadoop/kill/poweroff.sh 杀-掉假-死的namenode。

原文地址:https://blog.51cto.com/14479068/2433327

时间: 2024-12-24 19:31:25

好程序员大数据学习路线分享Hadoop阶段的高可用配置的相关文章

好程序员大数据学习路线分享hive的运行方式

好程序员大数据学习路线分享hive的运行方式,hive的属性设置: 1.在cli端设置 (只针对当前的session) 3.在java代码中设置 (当前连接) 2.在配置文件中设置 (所有session有效) 设置属性的优先级依次降低. cli端只能设置非hive启动需要的属性.(log属性,元数据连接属性) 查找所有属性: hive>set; 查看当前属性的值:通常是hadoop hive> set -v; 模糊查找属性: hive -S -e "set" | grep

好程序员大数据学习路线分享高阶函数

好程序员大数据学习路线分享高阶函数,我们通常将可以做为参数传递到方法中的表达式叫做函数 高阶函数包含:作为值的函数.匿名函数.闭包.柯里化等等. 定义函数时格式:val 变量名 =?(输入参数类型和个数)?=>?函数实现和返回值类型和个数 "="表示将函数赋给一个变量 "=>"左面表示输入参数名称.类型和个数,右边表示函数的实现和返回值类型和参数个数 作为值的函数 定义函数 scala> val func = (x:Int) => x * x

好程序员大数据学习路线分享MAPREDUCE

好程序员大数据学习路线分享MAPREDUCE,需求:统计大量的文本文件中的单词出现的次数 1)整个运算需要分阶段 阶段一:并行局部运算 阶段二 :汇总处理,不同的阶段需要开发不同的程序 2)阶段之间的调用 3)业务程序(task程序)如何并发到集群并启动程序 4)如何监控task程序的运行状态,如何处理异常 ::这些问题是开发分布式程序都会面临的问题,完全可以封装成框架::MR 的结构 一个完整的MapReduce运行时有三类实例进程: 1)MRAppMaster : 负责整个程序的过程调度和状

好程序员大数据学习路线分享Scala分支和循环

好程序员大数据学习路线分享Scala分支和循环3.3. 条件表达式表达式:一个具有执行结果的代码块.结果是具体的值或者() 表达式的思考方式:以表达式为中心的编程思想 1.表达式和语句的区别:表达式有返回值,语句被执行.表达式一般是一个语句块,执行后,返回一个值 2.不使用return语句,最后一个表达式即返回值 if/else表达式有值,这个值就是跟在if或者else之后的表达式的值 object ConditionDemo {def main(args: Array[String]){var

好程序员大数据学习路线分享Scala系列之泛型

好程序员大数据学习路线分享Scala系列之泛型,带有一个或多个类型参数的类是泛型的. 泛型类的定义: //带有类型参数A的类定义class Stack[A] {private var elements: List[A] = Nil//泛型方法def push(x: A) { elements = x :: elements }def peek: A = elements.headdef pop(): A = {val currentTop = peekelements = elements.ta

好程序员大数据学习路线分享Scala系列之集合操作函数

好程序员大数据学习路线继续为大家分享Scala系列之集合操作函数4.6 集合的重要函数4.6.1sum/max/min/count在序列中查找最大或最小值是一个极常见的需求,如下:val numbers = Seq(11, 2, 5, 1, 6, 3, 9) numbers.max //11 numbers.min //1 更高级的例子,其中包含一个书的序列case class Book(title: String, pages: Int) val books = Seq( Book("Futu

好程序员大数据学习路线分享HDFS读流程

1.客户端或者用户通过调用FileSystem对象的Open()方法打开需要读取的文件,这时就是HDSF分布式系统所获取的一个对象 2.FileSystem通过远程协议调用NameNode确定文件的前几个Block的位置,对于每一个block,NameNode返回一个含有Block的元数据信息,接下来DataNode按照上面定义的距离(offSet偏移量)进行排序,如果Client本身即是一个DataNode,那么就会优先从本地DataNode节点读取数据. HDFS完成上面的工作之后返回一个F

好程序员大数据学习路线分享scala单列和伴生对象

scala单例 object SingletonDemo { ??def main(args: Array[String]): Unit = { ????val s = SessionFactory ????println(s.getSession) ????println(s.getSession.size) ?//.size得到几个session对象 ??} } object SessionFactory{ ??println("SessionFactory 被执行了") ?? ?

好程序员大数据学习路线Hadoop学习干货分享

好程序员大数据学习路线Hadoop学习干货分享,Apache Hadoop 为可靠的,可扩展的分布式计算开发开源软件.Apache Hadoop软件库是一个框架,它允许使用简单的编程模型跨计算机群集分布式处理大型数据集(海量的数据).包括这些模块: Hadoop Common:支持其他Hadoop模块的常用工具. Hadoop分布式文件系统(HDFS?):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问. Hadoop YARN:作业调度和集群资源管理的框架. Hadoop MapRedu