HDFS HA集群管理

翻译: 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。这对计划中的停机时间很有用 - 用于主要主机的硬件更改,配置更改或软件升级。

  1. 转到HDFS服务。
  2. 单击Instances 选项卡。
  3. 点击 Federation and High Availability.
  4. 找到要在NameNode上进行故障转移的Nameservice行。(在使用HDFS联合时会显示多行。)
  5. 选择Actions > Manual Failover.。(如果未为群集启用HA,则不会显示此选项。)
  6. 从弹出窗口中选择应该激活的NameNode,然后单击Manual Failover

注意: 仅限高级用户:您可以设置Force Failover复选框,以强制选定的NameNode处于活动状态,无论其状态或其他NameNode的状态如何。强制进行故障转移将首先尝试将选定的NameNode故障转移到活动模式,并将另一个NameNode故障转移到待机模式。即使选定的NameNode处于安全模式,它也会这样做。如果失败,它将继续将选定的NameNode转换为活动模式。为避免使两个NameNode处于活动状态,只有在另一个NameNode完全停止或者可以通过第一个故障转移步骤转换到待机模式时,才使用它。

  1. 当所有步骤完成后,点击完成

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(如果您正在移动它)。继续如下。

  1. 停止NameNode守护进程:
$ sudo service hadoop-hdfs-namenode stop
  1. 如果ZKFC守护进程正在运行,请停止它:
$ sudo service hadoop-hdfs-zkfc stop
  1. 停止JournalNode守护程序,如果它正在运行:
$ sudo service hadoop-hdfs-journalnode stop 
  1. 确保这些服务未设置为在引导时重新启动。如果你不打算使用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安装并启动它。继续如下。

  1. 启动JournalNode守护进程:
$ sudo service hadoop-hdfs-journalnode start 
  1. 启动NameNode守护进程:
$ sudo service hadoop-hdfs-namenode start
  1. 启动ZKFC守护进程:
$ sudo service hadoop-hdfs-zkfc start
  1. 将这些服务设置为在引导时重启; 例如在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。

  1. 禁用HA。
  2. 尽管备用NameNode角色已删除,但其名称目录不会被删除。清空这些目录。
  3. 启用基于Quorom-based的HA。

使用命令行将NFS共享编辑目录转换为基于Quorum-based存储

要从使用NFS的共享存储切换到基于Quorum-based存储,请按照下列步骤操作:

  1. 禁用HA。
  2. 使用基于Quorum-based存储重新部署HA。

你可能感兴趣的:(HDFS HA集群管理)