Hadoop 文档

General

Common

HDFS

MapReduce

MapReduce REST APIs

YARN

YARN REST APIs

YARN Service

Submarine

Hadoop Compatible File Systems

Auth

Tools

Reference

Configuration

介绍

HDFS滚动升级允许升级单个HDFS守护程序。例如,可以独立于名称节点升级数据节点。可以独立于其他名称节点升级名称节点。名称节点可以独立于数据节点和日记节点进行升级。

升级

在Hadoop v2中,HDFS支持高可用性(HA)名称节点服务和线路兼容性。这两个功能使升级HDFS变得可行,而不会导致HDFS停机。为了在不停机的情况下升级HDFS群集,必须使用HA设置群集。

如果新软件版本中启用了任何新功能,则升级后可能无法与旧软件版本一起使用。在这种情况下,应按照以下步骤进行升级。

  1. 禁用新功能。
  2. 升级集群。
  3. 启用新功能。

请注意,仅从Hadoop-2.4.0起才支持滚动升级。

无需停机即可升级

在HA群集中,有两个或多个NameNode(NN),许多DataNode(DN),一些JournalNode(JN)和一些ZooKeeperNode(ZKN)JN相对稳定,在大多数情况下,升级HDFS时不需要升级。在滚动升级过程这里介绍,仅神经网络DN的考虑,但JNSZKNs都没有。升级JNZKN可能会导致群集停机。

升级非联合集群

假设有两个名称节点NN1NN2,其中NN1NN2分别处于活动和备用状态。以下是升级HA群集的步骤:

  1. 准备滚动升级
    1. 运行“ hdfs dfsadmin -rollingUpgrade prepare ”以创建用于回滚的fsimage。
    2. 运行“ hdfs dfsadmin -rollingUpgrade query ”以检查回滚映像的状态。等待并重新运行命令,直到显示“ Proceeding with Rolling Upgrade ”消息。
  2. 升级活动和备用NN
    1. 关闭并升级NN2
    2. 开始NN2与待机“ -rollingUpgrade开始 ”选项。
    3. NN1NN2的故障转移,以便NN2变为活动状态,而NN1变为待机状态。
    4. 关闭并升级NN1
    5. 开始NN1与待机“ -rollingUpgrade开始 ”选项。
  3. 升级DN
    1. 选择一小部分数据节点(例如,特定机架下的所有数据节点)。
      1. 运行“ hdfs dfsadmin -shutdownDatanode <DATANODE_HOST:IPC_PORT> upgrade ”以关闭所选的数据节点之一。
      2. 运行“ hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT> ”进行检查,然后等待数据节点关闭。
      3. 升级并重启数据节点。
      4. 对子集中的所有选定数据节点并行执行以上步骤。
    2. 重复上述步骤,直到升级群集中的所有数据节点。
  4. 完成滚动升级
    1. 运行“ hdfs dfsadmin -rollingUpgrade finalize ”完成滚动升级。

升级联合集群

在联合群集中,有多个名称空间以及每个名称空间的一对活动和备用NN。升级联盟群集的过程类似于升级非联盟群集的过程,不同之处在于,对每个名称空间执行步骤1和步骤4,并对每对活动和备用NN进行步骤2 ,即

  1. 为每个命名空间准备滚动升级
  2. 升级每个命名空间的活动和备用NN
  3. 升级DN
  4. 完成每个命名空间的滚动升级

停机升级

对于非HA群集,无法在没有停机的情况下升级HDFS,因为它需要重新启动名称节点。但是,数据节点仍可以滚动方式升级。

升级非HA群集

在非HA群集中,有一个NameNode(NN)SecondaryNameNode(SNN)和许多DataNodes(DN)。升级非HA群集的过程与升级HA群集的过程类似,不同之处在于,将步骤2“升级活动和备用NN升级”更改为以下内容:

  • 升级NNSNN
    1. 关闭SNN
    2. 关闭并升级NN
    3. 使用“ -rollingUpgrade已启动 ”选项启动NN
    4. 升级并重新启动SNN

降级和回滚

如果不希望使用升级版本,或者在某些不太可能的情况下,升级失败(由于新版本中的错误),管理员可以选择将HDFS降级到升级前版本,或将HDFS回滚到升级前版本和升级前的状态。

请注意,降级可以滚动方式进行,但不能回滚。回滚要求集群停机。

还请注意,只有在开始滚动升级之后且终止升级之前,才可以进行降级和回滚。可以通过完成,降级或回滚来终止升级。因此,可能无法在完成或降级之后执行回滚,或者在完成后无法执行降级。

降级

降级会将软件还原回升级前的版本,并保留用户数据。假设时间T是滚动升级开始时间,并且升级通过降级终止。然后,在T之前或之后创建的文件在HDFS中仍然可用。在T之前或之后删除的文件在HDFS中仍然被删除。

仅当两个版本之间的namenode布局版本和datanode布局版本均未更改时,才可以将较新的版本降级为升级前的版本。

在高可用性群集中,当正在进行从旧软件版本到新软件版本的滚动升级时,可以滚动方式将升级后的计算机降级到旧软件版本。与之前相同,假设NN1NN2分别处于活动状态和待机状态。以下是在不停机的情况下进行降级的步骤:

  1. 降级DN
    1. 选择一小部分数据节点(例如,特定机架下的所有数据节点)。
      1. 运行“ hdfs dfsadmin -shutdownDatanode <DATANODE_HOST:IPC_PORT> upgrade ”以关闭所选的数据节点之一。
      2. 运行“ hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT> ”进行检查,然后等待数据节点关闭。
      3. 降级并重新启动datanode。
      4. 对子集中的所有选定数据节点并行执行以上步骤。
    2. 重复上述步骤,直到集群中所有升级的数据节点降级。
  2. 降级活动和备用NN
    1. 关闭并降级NN2
    2. 正常启动NN2作为待机。
    3. NN1NN2的故障转移,以便NN2变为活动状态,而NN1变为待机状态。
    4. 关闭并降级NN1
    5. 正常启动NN1作为待机。
  3. 完成滚动降级
    1. 运行“ hdfs dfsadmin -rollingUpgrade finalize ”以完成滚动降级。

请注意,在降级名称节点之前,必须先降级数据节点,因为协议可以以向后兼容的方式更改,但不能向前兼容,即旧的数据节点可以与新的名称节点对话,反之则不行。

回滚

回滚将软件还原到升级前的版本,但也将用户数据还原到升级前的状态。假设时间T为滚动升级开始时间,并且升级通过回滚终止。T之前创建的文件在HDFS中仍然可用,但T之后创建的文件不可用。T之前删除的文件在HDFS中仍然被删除,但是T之后删除的文件被恢复。

始终支持从较新版本回滚到升级前版本。但是,这不能以滚动方式完成。它需要集群停机。假设NN1NN2分别处于活动状态和待机状态。以下是回滚的步骤:

  • 回滚HDFS
    1. 关闭所有NNDN
    2. 在所有计算机上还原升级前的版本。
    3. 开始NN1为活动的“ -rollingUpgrade回滚 ”选项。
    4. 在NN2上运行`-bootstrapStandby'并以待机状态正常启动。
    5. 使用“ -rollback ”选项启动DN

滚动升级的命令和启动选项

DFSAdmin命令

dfsadmin -rollingUpgrade

hdfs dfsadmin -rollingUpgrade <查询|准备|完成>

执行滚动升级操作。

  • 选项:
    询问 查询当前滚动升级状态。
    准备 准备新的滚动升级。
    完成 完成当前的滚动升级。

dfsadmin -getDatanodeInfo

hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT>

获取有关给定datanode的信息。该命令可以像Unix ping命令一样用于检查数据节点是否处于活动状态。

dfsadmin -shutdownDatanode

hdfs dfsadmin -shutdownDatanode <DATANODE_HOST:IPC_PORT> [升级]

提交给定datanode的关闭请求。如果指定了可选的升级参数,则建议访问数据节点的客户端等待其重启,然后启用快速启动模式。如果重启不及时,客户端将超时并忽略数据节点。在这种情况下,快速启动模式也将被禁用。

请注意,该命令不等待数据节点关闭完成。“ dfsadmin -getDatanodeInfo ”命令可用于检查数据节点关闭是否完成。

NameNode启动选项

namenode -rollingUpgrade

hdfs namenode -rollingUpgrade <回滚|开始>

在进行滚动升级时,-rollingUpgrade namenode启动选项用于指定各种滚动升级选项。

  • 选项:
    回滚 将namenode还原回升级前的版本,但也将用户数据还原回升级前的状态。
    开始了 指定已经开始的滚动升级,以便namenode在启动期间应允许具有不同布局版本的映像目录。

警告:降级选项已过时。不必显式地使用降级选项启动namenode。