在高可用性中使用Journal节点

时间:2017-05-18 14:39:32

标签: hadoop2 high-availability

Journal节点有什么需要 为什么我们在高可用性中配置三个日志节点。 它只用于复制吗?

1 个答案:

答案 0 :(得分:0)

Journal节点的作用是保持两个Namenodes同步并通过仅允许Active NN写入日志来避免hdfs拆分大脑场景。

来自Apache Hadoop Documentations

在Hadoop 2.0之前,NameNode是HDFS集群中的单点故障(SPOF)。每个群集都有一个NameNode,如果该计算机不可用,则整个群集将不可用,直到NameNode重新启动或在单独的计算机上启动。在传统HA群集中,两台独立的计算机配置为NameNode。在任何时候,其中一个NameNode将处于活动状态而另一个将处于待机状态。 Active NameNode负责集群中的所有客户端操作,而Standby只是作为从属服务器,维护足够的状态以提供快速故障转移。

为了使备用节点保持其状态与Active节点协调,两个节点都与一组称为“JournalNodes”(JN)的独立守护进程通信。当Active节点执行任何名称空间修改时,它会在JournalNodes中记录所做更改的记录。备用节点能够从JN读取修改后的信息,并定期监视它们的变化。当备用节点看到更改时,它会将它们应用到自己的命名空间。如果发生故障转移,Standby将确保在将状态更改为“活动状态”之前已从JounalNodes读取所有更改。这可以保证在发生故障转移之前完全同步命名空间状态。

JournalNode计算机 - 运行JournalNodes的计算机。 JournalNode守护程序相对轻量级,因此这些守护程序可以合理地与其他Hadoop守护程序并置在机器上,例如NameNodes,JobTracker或YARN ResourceManager。 注意:必须至少有3个JournalNode守护进程,因为编辑日志修改必须写入大多数JN。这将允许系统容忍单台机器的故障 。您还可以运行3个以上的JournalNodes,但为了实际增加系统可以容忍的失败次数,您应该运行奇数个JN(即3,5,7等)。请注意,当使用N个JournalNodes运行时,系统最多可以容忍(N-1)/ 2个故障并继续正常运行。

这里还有一些关于JournalNode的好的外部链接

https://www.edureka.co/blog/namenode-high-availability-with-quorum-journal-manager-qjm/

https://community.hortonworks.com/articles/27225/how-qjm-works-in-namenode-ha.html