NameNode之间共享数据(NFS 、Quorum Journal Node(用得多))

两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信。当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了。

上面在Active Namenode与StandBy Namenode之间的绿色区域就是JournalNode,当然数量不一定只有1个,作用相当于NFS共享文件系统.Active Namenode往里写editlog数据,StandBy再从里面读取数据进行同步.

NameNode之间共享数据(NFS 、Quorum Journal Node(用得多))

两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信。当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了。

Hadoop中的NameNode好比是人的心脏,非常重要,绝对不可以停止工作

hadoop2.2.0(HA)中HDFS的高可靠指的是可以同时启动2个NameNode。其中一个处于工作状态,另一个处于随时待命状态。这样,当一个NameNode所在的服务器宕机时,可以在数据不丢失的情况下,手工或者自动切换到另一个NameNode提供服务。

这些NameNode之间通过共享数据,保证数据的状态一致。多个NameNode之间共享数据,可以通过Nnetwork File System或者Quorum Journal Node。前者是通过linux共享的文件系统,属于操作系统的配置;后者是hadoop自身的东西,属于软件的配置。

我们这里讲述使用Quorum Journal Node的配置方式,方式是手工切换。

集群启动时,可以同时启动2个NameNode。这些NameNode只有一个是active的,另一个属于standby状态。active状态意味着提供服务,standby状态意味着处于休眠状态,只进行数据同步,时刻准备着提供服务,如图2所示。

图2

架构

在一个典型的HA集群中,每个NameNode是一台独立的服务器。在任一时刻,只有一个NameNode处于active状态,另一个处于standby状态。其中,active状态的NameNode负责所有的客户端操作,standby状态的NameNode处于从属地位,维护着数据状态,随时准备切换。

两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信。当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了,如图3所示。

图3

为了确保快速切换,standby状态的NameNode有必要知道集群中所有数据块的位置。为了做到这点,所有的datanodes必须配置两个NameNode的地址,发送数据块位置信息和心跳给他们两个。

对于HA集群而言,确保同一时刻只有一个NameNode处于active状态是至关重要的。否则,两个NameNode的数据状态就会产生分歧,可能丢失数据,或者产生错误的结果。为了保证这点,JNs必须确保同一时刻只有一个NameNode可以向自己写数据。

最新文章

  1. 你买了多少ERP?
  2. android最常用的退出方法
  3. html 关于内部是float元素的外部div高度为0的解决方法!
  4. 延迟加载并渐现内容的jquery插件lazyFade
  5. java --- 对象的创建过程
  6. centos 7用ss命令来查看端口占用和对应进程
  7. 关于WebSocket需要知道
  8. python一直放弃到双数的day10
  9. LINUX 查看当前系统的内存使用情况 free
  10. 洛谷P2822 组合数问题
  11. ninja-build环境安装
  12. Django中的class Meta
  13. FBI树(第一次做建树题)
  14. Windows下 VS2015编译boost1.62
  15. Freemarker详解一
  16. Flask之笔记集合
  17. vue ios自带拼音全键输入法模糊查询兼容性问题
  18. Python basic (from learn python the hard the way)
  19. WEB应用从服务器主动推送的方法
  20. main方法中sleep

热门文章

  1. MP4
  2. Jmeter和LoadRunner的区别
  3. ECharts.js学习(二)动态数据绑定
  4. python的os和sys模块
  5. 查看linux上面是否有安装redis,redis启动
  6. JavaScript浏览器检测之navigator 对象
  7. angularJs的$scope.$apply
  8. Pygame碰撞检测
  9. 【[CQOI2011]动态逆序对】
  10. C/C++——指针,引用做函数形参