当前位置: 首页 > news >正文

HDFS High Availability Using the Quorum Journal Manager

http://hadoop.apache.org/docs/r2.9.0/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

背景

在Hadoop 2.0.0以前,在一个HDFS集群中NameNode存在单点故障。每个集群中只有一个NameNode,如果这个机器不可用的话,那么整个集群将不可用,直到这个机器被重启或者其它的机器来替代它。这就意味着:

  • 万一NameNode机器宕机了,那么整个集群不可用
  • NameNode机器上的软件或者硬件升级的时候,集群不得不停止运行

HDFS HA在每个集群中运行两个NameNode,一个是Active的,一个Passive的,作为热备。

架构

在典型的HA集群中,两个分开的机器均被配置为NameNode。在任意时刻,只有一个NameNode处于活动状态,另一个处于备用状态。处于活动状态的NameNode负责处理集群中所有客户端操作,此时处于备用状态的NameNode只是扮演者slave的角色。这个备用的NameNode维护足够的状态,以防快速容灾。

备用NameNode为了保持和活动NameNode的状态同步,这两个节点用一组单独的后台进程进行通信,这个守护进程被叫做“JournalNodes”(简称JNs)。当处于活动状态的NameNode做了任何修改以后,它将修改的日志传给大部分JNs。备用的NameNode从JNs中读取这种修改,并且会把这种改变写到EditLog中。因为备用NameNode看到这些编辑,所有它将这种改变应用到自己的namespace中。

要想保住HA集群正确的操作,至关重要的一点是,同一时间集群中只能有一个NameNode处于活动状态。为了保证这一点,JournalNodes只允许同一时间只有一个NameNode可以写。

硬件资源

为了部署一个HA集群,你需要准备下列资源:

  • NameNode machines:运行活动的和备用的NameNode的机器的硬件配置应该是相等的
  • JournalNode machines:必须至少3个JournalNode,因为Edit Log必须被写到大多数JNs上。也就是说,可以容忍单个机器失败。你也可以运行3个以上的JournalNode,但是为了能够增加系统承受失败的数量,你应该运行奇数个JNs(比如:3,5,7等等)。当运行的JournalNode数量是N的时候,系统最多可以容忍(N - 1)/ 2个失败,并且正常服务。

 

其它参考

http://blog.csdn.net/strongerbit/article/details/7013221/

 

相关文章:

  • 浏览器的渲染:过程与原理
  • StructureMap
  • linux的PHP扩展模块安装
  • hadoop3.0.0测验
  • 安装oracle数据库字符集编码
  • Kubernetes 中的服务发现与负载均衡
  • hdu2045
  • 高阶函数、返回函数、闭包、匿名函数、装饰器、偏函数
  • 应用脚手架创建一个React项目
  • Swift中字典的实现原理
  • mybatis之trim prefix= suffix= suffixOverrides= prefixOverrides=/trim的含义
  • derby常用语法
  • express中使用高德地图
  • 学习linux年薪轻松20万
  • 使用Notepad++开发C#,一个复杂点的csscript脚本
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • Android Volley源码解析
  • crontab执行失败的多种原因
  • CSS3 变换
  • Java面向对象及其三大特征
  • JDK 6和JDK 7中的substring()方法
  • Redash本地开发环境搭建
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 反思总结然后整装待发
  • 判断客户端类型,Android,iOS,PC
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • gunicorn工作原理
  • Java总结 - String - 这篇请使劲喷我
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (Oracle)SQL优化技巧(一):分页查询
  • (solr系列:一)使用tomcat部署solr服务
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (三)mysql_MYSQL(三)
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • ******之网络***——物理***
  • .net core 连接数据库,通过数据库生成Modell
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET中两种OCR方式对比
  • [ C++ ] STL---仿函数与priority_queue
  • [ACTF2020 新生赛]Upload 1
  • [HITCON 2017]SSRFme perl语言的 GET open file 造成rce
  • [hive] posexplode函数
  • [JavaEE]线程的状态与安全
  • [LeetCode]Spiral Matrix
  • [NOI 2016]循环之美
  • [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟
  • [SpringBoot笔记] SpringBoot-01-快速入门案例
  • [Swift学习] 访问控制 Access Control, private、public、filePrivate等修饰符