hadoop2.x中的辅助namenode用法和高可用性

kyvafyod  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(268)

你能帮我解决以下情况吗。
1) 在使用hadoopv2时,是否在生产环境中使用辅助namenode?
2) 对于hadoop v2,假设我们在主动/被动连接中使用多个namenodes以获得高可用性,并且当编辑日志文件越来越大时,
编辑日志如何应用于fsimage?如果是这样的话,那么在namenode的启动过程中,将巨大的编辑日志应用到namenode会很费时吗(我们在hadoop v1中有辅助namenode来解决这个问题)

k4ymrczo

k4ymrczo1#

回答您的问题:
1) 在使用hadoopv2时,是否在生产环境中使用辅助namenode?
如果部署备用名称节点以实现名称节点的高可用性,则生产环境中不需要辅助名称节点。
2) 在没有辅助节点的情况下,如何将编辑日志应用于fsimage?
要回答这个问题,您必须了解hadoop是如何以两种不同的方式实现高可用性的:qjm的高可用性和nfs联合的高可用性
但在这两种方法中,qjm(quorum日志管理器)是首选。
在典型的ha集群中,两个独立的机器被配置为namenodes。在任何时间点,namenodes中只有一个处于活动状态,另一个处于备用状态。活动namenode负责集群中的所有客户机操作,而备用节点只是充当从节点,维护足够的状态以在必要时提供快速故障切换。
为了使备用节点保持其状态与活动节点同步,两个节点都与一组称为“journalnodes”(jns)的独立守护进程通信。
当活动节点执行任何名称空间修改时,它会将修改的记录持久地记录到这些jn中的大多数。备用节点从jns读取这些编辑并应用到自己的名称空间。
在发生故障转移的情况下,备用服务器将确保在将自身提升到活动状态之前,它已读取journalnodes中的所有编辑。这样可以确保在发生故障转移之前完全同步命名空间状态。
对于ha集群来说,一次只有一个namenodes处于活动状态是至关重要的。zookeeper被用来避免大脑分裂的情况,这样名称节点的状态就不会因为故障转移而出现分歧。
在我的另一个stackoverflow问题:hadoopnamenode故障转移过程是如何工作的?我已经详细地解释了namenode的故障转移过程?

ujv3wf0j

ujv3wf0j2#

1) 在使用hadoopv2时,是否在生产环境中使用辅助namenode?
这完全取决于生产环境的设置。如果您将hadoopv2与ha一起使用,那么在生产中不需要secondary namenode,因为从属namenode将以最佳方式执行与secondary namenode相同的任务。但是,如果生产设置没有利用namenode ha,则必须使用辅助namenode进行检查点。请参阅了解Hadoop2.x体系结构及其恶魔,以获取更多信息。
2) 对于hadoop v2,假设我们在主动/被动连接中使用多个namenodes以获得高可用性,并且当编辑日志文件越来越大时,
据我所知,您主要关心的是“如何在hadoopv2中使用namenodeha管理编辑日志?”
答案是:编辑日志管理可以通过仲裁日志管理器(qjm)或nfs共享存储完成
使用qjm,有一组名为journalnode(jn)的恶魔正在与活动namenode通信。此组正在持续查找活动namenode所做的任何更新并保持状态。备用namenode不断地从jns获取编辑日志更新,并维护更新的editlog文件。
使用nfs共享存储,活动namenode和备用namenode都可以访问共享存储(即网络文件系统)上的特定目录。如果namenode进行了任何更新,它会将事件记录到共享目录中。另一方面,standby namenode正在同一共享目录中查找更新的日志,并同时更新编辑日志。
我希望这有助于。。。

相关问题