Hadoop 中的辅助 NameNode 使用和高可用性 2.x
Secondary NameNode usage and High availability in Hadoop 2.x
你能帮我解决以下情况吗?
1) 在使用Hadoop V2时,生产环境是否使用Secondary NameNode?
2) 对于 Hadoop V2,假设我们在 active/passive 连接中使用多个 NameNode 以实现高可用性,并且当编辑日志文件变得越来越大时,
编辑日志如何应用到 fsimage?如果是这样,那么在 Namenode 启动期间将巨大的 Edits 日志应用到 Namenode 会很耗时吗? (我们在hadoop v1中有Secondary NameNode来解决这个问题)
1)在使用Hadoop V2时,生产环境是否使用Secondary NameNode?
这完全取决于您的生产环境设置。如果您使用具有 HA 的 Hadoop V2,您不需要在生产中使用 Secondary NameNode,因为您的 Slave NameNode 将以最佳方式执行与 Secondary NameNode 相同的任务。但是,如果您的生产设置没有利用 NameNode HA,那么您必须使用 Secondary NameNode 进行检查点。参考 Understanding Hadoop 2.x Architecture 和它的 Demons 了解更多信息。
2) 对于 Hadoop V2,假设我们在 active/passive 连接中使用多个 NameNode 以实现高可用性,并且当编辑日志文件变得越来越大时,
据我了解,您主要关心的是 "how edit logs are managed with NameNode HA in Hadoop V2?"
答案如下:可以使用 Quorum Journal Manager (QJM) 或 NFS 共享存储来完成编辑日志管理
使用QJM,有一群叫做JournalNode (JN) 的恶魔正在与活跃的NameNode 通信。该组不断寻找活动 NameNode 完成的任何更新并维护状态。 StandBy NameNode 不断从 JNs 获取编辑日志更新,并维护更新后的编辑日志文件。
使用 NFS 共享存储,Active NameNode 和 StandBy NameNode 都可以访问共享存储(即网络文件系统)上的特定目录。如果 NameNode 完成任何更新,它将事件记录到共享目录。另一方面,StandBy NameNode 正在同一共享目录上寻找更新并同时更新编辑日志。
希望对您有所帮助...
您的问题的答案:
1)在使用Hadoop V2时,生产环境是否使用Secondary NameNode?
如果为名称节点的高可用性部署 StandByName 节点,则生产环境中不需要辅助名称节点。
2) 在没有辅助节点的情况下,编辑日志如何应用到 fsimage?
要回答这个问题,您必须了解如何在 Hadoop 中以两种不同的方式实现高可用性。 : High Availability with QJM and High Availability with NFS Federation
但是在这两种方法中,QJM(Quorum Journal Manager)是首选。
In a typical HA cluster, two separate machines are configured as NameNodes. At any point in time, exactly one of the NameNodes is in an Active state, and the other is in a Standby state. The Active NameNode is responsible for all client operations in the cluster, while the Standby is simply acting as a slave, maintaining enough state to provide a fast failover if necessary.
为了让备用节点保持其状态与活动节点同步,两个节点都与一组称为“JournalNodes”(JNs)的独立守护进程进行通信。
当主动节点执行任何 namespace 修改时,它会持久地将修改记录记录到这些 JN 中的大多数。 Standby 节点从 JN 中读取这些编辑并应用到它自己的名称 space.
如果发生故障转移,Standby 将确保在将自己提升为 Active 状态之前已从 JounalNodes 读取所有编辑。这确保在发生故障转移之前名称space 状态完全同步。
对于 HA 集群来说,一次只有一个 NameNode 处于活动状态是至关重要的。 ZooKeeper 已用于避免脑裂情况,因此名称节点状态不会因故障转移而发生分歧。
我已经在我的另一个 Whosebug 问题中详细解释了名称节点的故障转移过程:
你能帮我解决以下情况吗?
1) 在使用Hadoop V2时,生产环境是否使用Secondary NameNode?
2) 对于 Hadoop V2,假设我们在 active/passive 连接中使用多个 NameNode 以实现高可用性,并且当编辑日志文件变得越来越大时,
编辑日志如何应用到 fsimage?如果是这样,那么在 Namenode 启动期间将巨大的 Edits 日志应用到 Namenode 会很耗时吗? (我们在hadoop v1中有Secondary NameNode来解决这个问题)
1)在使用Hadoop V2时,生产环境是否使用Secondary NameNode?
这完全取决于您的生产环境设置。如果您使用具有 HA 的 Hadoop V2,您不需要在生产中使用 Secondary NameNode,因为您的 Slave NameNode 将以最佳方式执行与 Secondary NameNode 相同的任务。但是,如果您的生产设置没有利用 NameNode HA,那么您必须使用 Secondary NameNode 进行检查点。参考 Understanding Hadoop 2.x Architecture 和它的 Demons 了解更多信息。
2) 对于 Hadoop V2,假设我们在 active/passive 连接中使用多个 NameNode 以实现高可用性,并且当编辑日志文件变得越来越大时,
据我了解,您主要关心的是 "how edit logs are managed with NameNode HA in Hadoop V2?"
答案如下:可以使用 Quorum Journal Manager (QJM) 或 NFS 共享存储来完成编辑日志管理
使用QJM,有一群叫做JournalNode (JN) 的恶魔正在与活跃的NameNode 通信。该组不断寻找活动 NameNode 完成的任何更新并维护状态。 StandBy NameNode 不断从 JNs 获取编辑日志更新,并维护更新后的编辑日志文件。
使用 NFS 共享存储,Active NameNode 和 StandBy NameNode 都可以访问共享存储(即网络文件系统)上的特定目录。如果 NameNode 完成任何更新,它将事件记录到共享目录。另一方面,StandBy NameNode 正在同一共享目录上寻找更新并同时更新编辑日志。
希望对您有所帮助...
您的问题的答案:
1)在使用Hadoop V2时,生产环境是否使用Secondary NameNode?
如果为名称节点的高可用性部署 StandByName 节点,则生产环境中不需要辅助名称节点。
2) 在没有辅助节点的情况下,编辑日志如何应用到 fsimage?
要回答这个问题,您必须了解如何在 Hadoop 中以两种不同的方式实现高可用性。 : High Availability with QJM and High Availability with NFS Federation
但是在这两种方法中,QJM(Quorum Journal Manager)是首选。
In a typical HA cluster, two separate machines are configured as NameNodes. At any point in time, exactly one of the NameNodes is in an Active state, and the other is in a Standby state. The Active NameNode is responsible for all client operations in the cluster, while the Standby is simply acting as a slave, maintaining enough state to provide a fast failover if necessary.
为了让备用节点保持其状态与活动节点同步,两个节点都与一组称为“JournalNodes”(JNs)的独立守护进程进行通信。
当主动节点执行任何 namespace 修改时,它会持久地将修改记录记录到这些 JN 中的大多数。 Standby 节点从 JN 中读取这些编辑并应用到它自己的名称 space.
如果发生故障转移,Standby 将确保在将自己提升为 Active 状态之前已从 JounalNodes 读取所有编辑。这确保在发生故障转移之前名称space 状态完全同步。
对于 HA 集群来说,一次只有一个 NameNode 处于活动状态是至关重要的。 ZooKeeper 已用于避免脑裂情况,因此名称节点状态不会因故障转移而发生分歧。
我已经在我的另一个 Whosebug 问题中详细解释了名称节点的故障转移过程: