Hadoop 2.x中的Secondary NameNode用法和高可用性

时间:2015-11-03 08:43:58

标签: hadoop hdfs hadoop2

请你帮我解决下面的情况。

1)在使用Hadoop V2时,我们是否在生产环境中使用Secondary NameNode?

2)对于Hadoop V2,假设我们在主动/被动连接中使用muliple NameNodes以获得高可用性,并且当编辑日志文件变得越来越大时,

如何将编辑日志应用于fsimage?如果是这样,那么在Namenode启动期间将巨大的Edits日志应用于Namenode会非常耗时吗? (我们在hadoop v1中使用了Secondary NameNode来解决这个问题)

2 个答案:

答案 0 :(得分:4)

您的查询答案:

1)在使用Hadoop V2时,我们是否在生产环境中使用Secondary NameNode?

如果为“名称”节点的“高可用性”部署StandByName节点,则生产环境中不需要辅助名称节点。

2)如果没有辅助节点,编辑日志如何应用于fsimage?

要回答此查询,您必须了解Hadoop中以两种不同方式实现高可用性的方式。 :High Availability with QJMHigh Availability with NFS Federation

但在这两种方法中,首选QJM( Quorum期刊经理)。

  

在典型的HA群集中,两台独立的计算机配置为NameNode。在任何时间点,其中一个NameNode处于活动状态,另一个处于待机状态。 Active NameNode负责集群中的所有客户端操作,而Standby只是作为从属服务器,维护足够的状态以在必要时提供快速故障转移。

为了使备用节点保持其状态与Active节点同步,两个节点都与一组名为“JournalNodes”(JN)的独立守护进程通信。

当Active节点执行任何名称空间修改时,它会将修改记录持久地记录到大多数这些JN中。 Standby节点从JN读取这些编辑并应用于自己的名称空间。

如果发生故障转移,Standby将确保在将自身升级为Active状态之前已读取JounalNodes的所有编辑内容。这可确保在发生故障转移之前完全同步命名空间状态。

对于HA群集而言,一次只有一个NameNode处于活动状态至关重要。 ZooKeeper已被用于避免裂脑情况,因此名称节点状态不会因故障转移而分歧。

我已经在我的其他StackOverFlow问题中详细解释了Name节点的故障转移过程:How does Hadoop Namenode failover process works?

答案 1 :(得分:1)

1)在使用Hadoop V2时,我们是否在生产环境中使用Secondary NameNode?

这完全取决于您的生产环境设置。如果您将Hadoop V2与HA一起使用,则不需要在生产中使用Secondary NameNode,因为您的Slave NameNode将以最佳方式执行与Secondary NameNode相同的任务。但是,如果您的生产设置不利用NameNode HA,则必须使用Secondary NameNode进行检查点操作。有关详细信息,请参阅 Understanding Hadoop 2.x Architecture 及其恶魔。

2)对于Hadoop V2,假设我们在主动/被动连接中使用muliple NameNodes以获得高可用性,并且当编辑日志文件变得越来越大时,

根据我的理解,您的主要关注点是"如何使用Hadoop V2中的NameNode HA管理编辑日志?"

答案如下:可以使用Quorum Journal Manager(QJM)或NFS共享存储来完成编辑日志管理

使用QJM,有一组名为JournalNode(JN)的恶魔正在与活动的NameNode进行通信。该组一直在寻找活动NameNode所做的任何更新并维护状态。 StandBy NameNode不断从JN获取编辑日志更新并维护更新的editlog文件。

使用NFS Shared Storage,Active NameNode和StandBy NameNode都可以访问共享存储上的特定目录(即网络文件系统)。如果NameNode完成任何更新,它会将事件记录到共享目录中。另一方面,StandBy NameNode正在同一共享目录中查找更新并同时更新编辑日志。

我希望这会有所帮助......