Hadoop3.2.0 HDFS DataNode管理员指南

概观

Hadoop分布式文件系统(HDFS)名称节点维护所有数据节点的状态。有两种类型的状态。第一种类型描述了datanode的活跃性,指示节点是活的,死的还是陈旧的。第二种类型描述了管理状态,指示节点是在服务中,退役还是在维护中。

当管理员停用datanode时,datanode将首先转换为DECOMMISSION_INPROGRESS状态。在属于该datanode的所有块已根据每个块的复制因子完全复制到其他位置之后。datanode将转换为DECOMMISSIONED状态。之后,管理员可以关闭节点以执行可能需要数天或数周的长期维修和维护。机器修好后,机器可以重新调试回集群。

有时管理员只需要将数据节点缩短几分钟/小时即可执行短期维修/维护。在这种情况下,退役引起的HDFS块复制开销可能不是必需的,并且需要轻量级过程。这就是维护状态的用途。当管理员将datanode置于维护状态时,datanode将首先转换为ENTERING_MAINTENANCE状态。只要属于该datanode的所有块都在其他地方进行了最低限度的复制,datanode将立即转换为IN_MAINTENANCE州。维护完成后,管理员可以使datanode退出维护状态。此外,维护状态支持超时,允许管理员配置允许datanode保持维护状态的最长持续时间。超时后,数据节点将由HDFS自动转换为维护状态,无需人工干预。

总之,datanode管理操作包括以下内容:

  • 退役
  • Recommission
  •  
  •  
  • Decommission .  退役
  • Recommission .  重新挂载
  • Putting nodes in maintenance state .  将节点置于维护状态
  • Taking nodes out of maintenance state .     使节点退出维护状态

 

datanode管理员状态包括以下内容:

  • NORMAL       节点正在使用中。
  • DECOMMISSIONED       节点已退役。
  • DECOMMISSION_INPROGRESS       节点正在转换为 DECOMMISSIONED 状态。
  • IN_MAINTENANCE       节点处于维护状态。
  • ENTERING_MAINTENANCE        节点正在转换为维护状态。

主机级设置

要执行任何datanode管理操作,有两个步骤。

  • 更新主机级配置文件以指示目标数据节点的所需管理状态。配置文件有两种支持的格式。

    • 仅限主机名配置。每行包括datanode的 hostname/ip 。这是默认格式。
    • 基于JSON的配置。配置采用JSON格式。每个元素映射到一个datanode,每个datanode可以有多个属性。将datanode置于维护状态需要此格式。
  • 运行以下命令让namenode重新加载主机级配置文件。hdfs dfsadmin [-refreshNodes]

Host-level  配置

这是namenode使用的默认配置。它只支持节点退役和重新启动; 它不支持与维护状态相关的管理操作。使用dfs.hosts和dfs.hosts.exclude,如hdfs-default.xml中所述

在以下示例中,host1和host2需要在服务中。host3和host4需要处于退役状态。

dfs.hosts文件

host1
host2
host3
host4

dfs.hosts.exclude文件

host3
host4

基于JSON的配置

基于JSON的格式是支持datanode上的通用属性的新配置格式。设置以下配置以启用基于JSON的格式,如hdfs-default.xml中所述

设置
dfs.namenode.hosts.provider.classname org.apache.hadoop.hdfs.server.blockmanagement.CombinedHostFileManager
dfs.hosts json主机文件的路径

以下是HDFS当前支持的属性列表。

属性 描述
hostName 需要。datanode的主机名。
upgradeDomain 可选的。datanode的升级域ID。
adminState 可选的。预期的管理状态。默认值为NORMAL ; 退役的退役; IN_MAINTENANCE用于维护状态。
port 可选的。datanode的端口号
maintenanceExpireTimeInMS 可选的。以毫秒为单位的纪元时间,直到datanode保持维护状态。默认值是永久的。

在以下示例中,host1和host2需要服务。host3需要处于退役状态。host4需要处于维护状态。

dfs.hosts文件

[
  {
    "hostName": "host1"
  },
  {
    "hostName": "host2",
    "upgradeDomain": "ud0"
  },
  {
    "hostName": "host3",
    "adminState": "DECOMMISSIONED"
  },
  {
    "hostName": "host4",
    "upgradeDomain": "ud2",
    "adminState": "IN_MAINTENANCE"
  }
]

群集级别设置

有几个与datanode管理相关的集群级设置。对于常见用例,您应该依赖于默认值。有关说明和默认值,请参阅hdfs-default.xml

dfs.namenode.maintenance.replication.min
dfs.namenode.decommission.interval
dfs.namenode.decommission.blocks.per.interval
dfs.namenode.decommission.max.concurrent.tracked.nodes

度量

管理状态是namenode的webUI和JMX的一部分。如HDFSCommands.html中所述,您还可以使用以下命令验证管理状态。

使用dfsadmin检查群集级别的管理状态。

hdfs dfsadmin -report

使用fsck检查存储特定路径数据的datanode的管理状态。为了向后兼容,需要特殊标志来返回维护状态。

hdfs fsck <path> // only show decommission state
hdfs fsck <path> -maintenance // include maintenance state

 

 

 

原文链接: https://hadoop.apache.org/docs/r3.2.0/

展开阅读全文

没有更多推荐了,返回首页