翻译: https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_hag_hdfs_ha_admin.html
管理HDFS高可用性群集
继续阅读:
- 手动切换到备用NameNode
- 将HA NameNode移动到新主机
- 其他HDFS haadmin命令
- 启用HA后使用dfsadmin命令
- 从NFS目录转换为基于Quorum-based存储
手动切换到备用NameNode
使用Cloudera Manager手动故障转移到备用NameNode
如果您正在运行启用了HA的HDFS服务,则可以手动使活动的NameNode故障切换到备用NameNode。这对计划中的停机时间很有用 - 用于主要主机的硬件更改,配置更改或软件升级。
- 转到HDFS服务。
- 单击Instances 选项卡。
- 点击 Federation and High Availability.
- 找到要在NameNode上进行故障转移的Nameservice行。(在使用HDFS联合时会显示多行。)
- 选择Actions > Manual Failover.。(如果未为群集启用HA,则不会显示此选项。)
- 从弹出窗口中选择应该激活的NameNode,然后单击Manual Failover。
注意: 仅限高级用户:您可以设置Force Failover复选框,以强制选定的NameNode处于活动状态,无论其状态或其他NameNode的状态如何。强制进行故障转移将首先尝试将选定的NameNode故障转移到活动模式,并将另一个NameNode故障转移到待机模式。即使选定的NameNode处于安全模式,它也会这样做。如果失败,它将继续将选定的NameNode转换为活动模式。为避免使两个NameNode处于活动状态,只有在另一个NameNode完全停止或者可以通过第一个故障转移步骤转换到待机模式时,才使用它。
- 当所有步骤完成后,点击完成。
Cloudera Manager将您选择的NameNode转换为活动NameNode,将另一个NameNode转换为备用NameNode。HDFS应该永远不会有两个活动NameNodes。
使用命令行手动故障转移到备用NameNode
要在两个NameNode之间启动故障转移,请运行该命令 hdfs haadmin -failover.
此命令会导致从第一个提供的NameNode到第二个的故障转移。如果第一个NameNode处于Standby状态,则此命令只是将第二个NameNode转换为Active状态而不会出错。如果第一个NameNode处于Active状态,则会尝试将其正常转换到Standby状态。如果失败,则fencing method (由 dfs.ha.fencing.methods配置)将按顺序尝试,直到其中一种方法成功。只有在这个过程之后,第二个NameNode才会转换到活动状态。如果没有fencing method 成功,则第二个NameNode不会转换为活动状态,并且会返回错误。
注意:无论是使用Cloudera Manager 或 命令行配置HA,都可以运行hdfs haadmin -failover 。这意味着即使Cloudera Manager不可用,也可以手动启动故障转移。
将HA NameNode移动到新主机
使用Cloudera Manager将HA NameNode移动到新主机
请参阅使用迁移角色向导移动高可用NameNode,故障转移控制器和JournalNode角色。
使用命令行将HA NameNode移动到新主机
使用以下步骤将其中一个NameNode移动到新主机。
在这个例子中,当前的NameNodes称为nn1 和 nn2 ,新的NameNode称为 nn2-alt。这个例子假定nn2-alt 已经是此CDH 5 HA群集的成员,已配置自动故障转移并且 nn2上的JournalNode 将被移到
nn2-alt 。
该过程将NameNode和JournalNode服务从nn2转移到nn2-alt , 重新配置nn1以识别JournalNode的新目录,重启nn1 和 nn2-alt 。
第1步:确保nn1是活动的NameNode
确保不会移动的NameNode 处于活动状态; 在这个例子中,nn1 必须活跃。您可以使用NameNodes的Web UI查看哪些是活动的; 请参阅启动NameNodes。
如果 nn1 不是活动的NameNode,请使用 hdfs haadmin -failover 命令来启动故障转移:
hdfs haadmin -failover nn2 nn1
第2步:在nn2上停止服务
一旦确定要移动的节点处于不活动状态,请停止该节点上的服务:在本例中,停止服务nn2 。停止NameNode,ZKFC守护程序(如果是自动故障转移部署)以及JournalNode(如果您正在移动它)。继续如下。
- 停止NameNode守护进程:
$ sudo service hadoop-hdfs-namenode stop
- 如果ZKFC守护进程正在运行,请停止它:
$ sudo service hadoop-hdfs-zkfc stop
- 停止JournalNode守护程序,如果它正在运行:
$ sudo service hadoop-hdfs-journalnode stop
- 确保这些服务未设置为在引导时重新启动。如果你不打算使用nn2作为NameNode,您可能需要删除这些服务。
第3步:在nn2-alt上安装NameNode后台进程
请参阅安装说明 步骤3:使用YARN安装CDH 5或步骤4:使用MRv1安装CDH 5 来安装 hadoop-hdfs-namenode 。
第4步:在nn2-alt上配置HA
请参阅启用HDFS HA 在core-site.xml和hdfs-site.xml中配置nn2-alt 。您应该复制已经在nn2相应文件中设置的值。
- 如果您要将JournalNode重新定位到 nn2-alt ,按照这些指示安装它,但不要启动它。
- 如果您使用自动故障转移功能,请确保按照说明在nn2-alt上配置必要的属性 并在ZooKeeper中初始化HA状态。
注意:如果已配置自动故障转移,则无需关闭群集即可执行此操作; 仅当您从手动切换到自动故障切换时才需要关闭。
第5步:将dfs.name.dir和dfs.journalnode.edits.dir目录的内容复制到nn2-alt
使用rsync或类似的工具来复制内容dfs.name.dir 目录,如果您正在移动JournalNode到nn2-alt ,dfs.journalnode.edits.dir目录也需要复制。
第6步:如果您正在移动JournalNode,请更新nn1上的dfs.namenode.shared.edits.dir
更新nn1上hdfs-site.xml文件中的 dfs.namenode.shared.edits.dir 值,有关更多信息,请参阅本节。
步骤7:如果您使用自动故障转移,请在nn2-alt上安装zkfc守护程序
有关说明,请参阅部署自动故障转移(如果已配置),但不要启动守护程序。
第8步:在nn2-alt上启动服务
启动NameNode; 启动ZKFC进行自动故障切换; 如果你想运行JournalNode,请在nn2-alt安装并启动它。继续如下。
- 启动JournalNode守护进程:
$ sudo service hadoop-hdfs-journalnode start
- 启动NameNode守护进程:
$ sudo service hadoop-hdfs-namenode start
- 启动ZKFC守护进程:
$ sudo service hadoop-hdfs-zkfc start
- 将这些服务设置为在引导时重启; 例如在RHEL兼容系统上:
$ sudo chkconfig hadoop-hdfs-namenode on
$ sudo chkconfig hadoop-hdfs-zkfc on
$ sudo chkconfig hadoop-hdfs-journalnode on
第9步:如果您要重新部署JournalNode,请故障转移到nn2-alt
hdfs haadmin -failover nn1 nn2-alt
步骤10:如果您要重新安置JournalNode,请重新启动nn1
重新启动NameNode nn1 的守护进程,强制它重新读取配置:
$ sudo service hadoop-hdfs-namenode stop
$ sudo service hadoop-hdfs-namenode start
其他HDFS haadmin命令
HA NameNode配置并启动后,您将有权访问一些其他命令来管理HA HDFS集群。具体来说,你应该熟悉 hdfs haadmin 的子命令。
本页介绍一些重要子命令的高级用法。有关每个子命令的具体使用信息,您应该运行 hdfs haadmin -help
getServiceState
getServiceState - 确定给定的NameNode是活动还是备用
连接到提供的NameNode以确定其当前状态,会在STDOUT 打印“standby”或“active” 。此子命令可由cron作业或监视脚本使用,这些脚本需要根据NameNode当前处于活动状态还是处于待机状态而具有不同的行为。
checkHealth
checkHealth - 检查给定NameNode的健康状况
连接到提供的NameNode以检查其健康状况。NameNode能够对自身执行一些诊断,包括检查内部服务是否按预期运行。如果NameNode健康,该命令将返回0,否则返回非零值。可将此命令用于监视目的。
启用HA后使用dfsadmin命令
默认情况下,dfsadmin命令会对活动和备用NameNode都起作用。要将选项限制为特定的NameNode,请使用 -fs选项。例如,
要为两个NameNode打开安全模式,请运行:
hdfs dfsadmin -safemode enter
要打开单个NameNode的安全模式,请运行:
hdfs dfsadmin -fs hdfs://: -safemode enter
有关dfsadmin命令选项的完整列表,请运行:hdfs dfsadmin -help.
从NFS共享编辑目录转换为基于Quorum-based存储
使用Cloudera Manager从NFS共享编辑目录转换为基于Quorum-based存储
将HA配置从使用NFS共享编辑目录转换为基于Quorum-based的存储涉及禁用当前HA配置,然后使用基于Quorum的存储启用HA。
- 禁用HA。
- 尽管备用NameNode角色已删除,但其名称目录不会被删除。清空这些目录。
- 启用基于Quorom-based的HA。
使用命令行将NFS共享编辑目录转换为基于Quorum-based存储
要从使用NFS的共享存储切换到基于Quorum-based存储,请按照下列步骤操作:
- 禁用HA。
- 使用基于Quorum-based存储重新部署HA。