乐趣区

关于hadoop:Hadoop-入门笔记-十三-HDFS集群滚动升级

一. 介绍

HDFS 滚动降级容许降级单个 HDFS 守护程序 。例如, 能够独立于 NameNodes 降级 DataNodes。也能够独立于其余 NameNodes 降级独自 NameNode。也能够独立于 DataNodes 和 journal nodes 降级 NameNodes。

二. 降级

在 Hadoop v2 中,HDFS 反对 NameNode 高可用(HA)和线路兼容性(wire compatibility)。这两个性能使降级 HDFS 变得可行,且不会导致 HDFS 停机。为了 在不停机的状况下降级 HDFS 群集,必须应用 HA 设置群集。
如果新软件版本中启用了任何新性能,则降级后可能无奈与旧软件版本一起应用。 在这种状况下,应依照以下步骤进行降级。
禁用新性能、降级集群、启用新性能。
请留神,仅从 Hadoop-2.4.0 起才反对滚动降级。

1. 不停机降级

在 HA 群集中,有两个或多个 NameNode(NN),许多 DataNode(DN),一些 JournalNode(JN)和一些 ZooKeeperNode(ZKN)。JN 绝对稳固,在大多数状况下,降级 HDFS 时不须要降级 。滚动降级过程中, 仅针对 NNs 和 DNs,JNS 和 ZKNs 都没有。降级 JN 和 ZKN 可能会导致群集停机。

  1. 降级非联邦集群
    假如有两个名称节点 NN1 和 NN2,其中 NN1 和 NN2 别离处于 Active 和 StandBy 状态。以下是降级 HA 群集的步骤:

    • 筹备滚动降级
      运行 hdfs dfsadmin -rollingUpgrade prepare 以创立用于回滚的 fsimage
      运行 hdfs dfsadmin -rollingUpgrade query 以查看回滚 fsimage 的状态。期待
      并从新运行命令,直到显示 Proceeding with Rolling Upgrade 信息。
    • 降级 Active 和 standBy NN
      敞开并降级 NN2。
      启动 NN2 成为 StandBy 状态通过 -rollingUpgrade started 选项。
      从 NN1 到 NN2 的故障转移,以便 NN2 变为活动状态,而 NN1 变为待机状态。
      敞开并降级 NN1。
      启动 NN1 成为 StandBy 状态通过 -rollingUpgrade started 选项。
    • 降级 DN
      抉择一小部分 DN 节点(例如,特定机架下的所有数据节点)。
      运行 hdfs dfsadmin -shutdownDatanode <DATANODE_HOST:IPC_PORT> upgrade 以敞开所选的 DN。
      运行 hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT> 进行查看,而后期待 DN 敞开。
      降级并重启 DN 节点。
      对子集中的所有选定 DN 节点并行执行以上步骤。
      反复上述步骤,直到降级群集中的所有 DN 节点。
    • 实现滚动降级
      运行 hdfs dfsadmin -rollingUpgrade finalize 实现滚动降级。
  2. 降级联邦集群
    在联邦集群中,有多个名称空间以及每个名称空间的一对 Active 和 StandBy NN。降级联结群集的 过程相似于降级非联邦群集的过程,不同之处在于
    为每个命名空间筹备滚动降级
    降级每个命名空间的 Active 和 StandBy NN
    降级 DN
    实现每个命名空间的滚动降级

2. 停机降级

对于非 HA 群集,无奈在没有停机的状况下降级 HDFS,因为它须要重新启动 NN。然而,DN 仍能够滚动形式降级。

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

    • 降级 NN 和 SNN
      敞开 SNN
      敞开并降级 NN。
      应用 -rollingUpgrade started 选项启动 NN。
      降级并重新启动 SNN

    三. 降级和回滚

    如果不心愿应用降级版本,或者在某些不太可能的状况下,降级失败(因为较新版本中的谬误),管理员能够抉择将 HDFS 降级到降级前版本,或将 HDFS 回滚到降级前版本和降级前的状态。
    请留神,降级能够滚动形式进行,但不能回滚。回滚要求集群停机。
    还请留神,只有在开始滚动降级之后且终止降级之前,才能够进行降级和回滚。能够通过实现,降级或回滚来终止降级。因而,可能无奈在实现或降级之后执行回滚,或者在实现后无奈执行降级。

    1. 降级

    降级会将软件还原回降级前的版本,并保留用户数据。假如工夫 T 是滚动降级开始工夫,并且降级通过降级终止。而后,在 T 之前或之后创立的文件在 HDFS 中依然可用。在 T 之前或之后删除的文件在 HDFS 中依然被删除。
    仅当两个版本之间的 namenode 布局版本和 datanode 布局版本均未更改时,才能够将较新的版本降级为降级前的版本。
    在高可用性集群中,当正在进行从旧软件版本到新软件版本的滚动降级时,能够滚动形式将降级后的计算机降级到旧软件版本。与之前雷同,假如 NN1 和 NN2 别离处于活动状态和待机状态。以下是在不停机的状况下进行降级的步骤:
    降级 DN
    抉择一小部分数据节点(例如,特定机架下的所有数据节点)。
    运行“hdfs dfsadmin -shutdownDatanode <DATANODE_HOST:IPC_PORT> upgrade”以敞开所选的数据节点之一。
    运行“hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT>”进行查看,而后期待数据节点敞开。
    降级并重新启动 datanode。
    对子集中的所有选定数据节点并行执行以上步骤。
    反复上述步骤,直到集群中所有降级的数据节点降级。
    降级流动和备用 NN
    敞开和降级 NN2。
    失常启动 NN2 作为待机。
    从 NN1 到 NN2 的故障转移,以便 NN2 变为活动状态,而 NN1 变为待机状态。
    敞开并降级 NN1。
    失常启动 NN1 作为待机。
    实现滚动降级
    运行“hdfs dfsadmin -rollingUpgrade finalize”以实现滚动降级。
    请留神,在降级名称节点之前,必须先降级数据节点,因为协定能够以向后兼容的形式更改,但不能向前兼容,即,旧的数据节点能够与新的名称节点对话,反之则不行。

    2. 回滚

    回滚将软件还原到降级前的版本,但也将用户数据还原到降级前的状态。假如工夫 T 是滚动降级开始工夫,并且降级通过回滚终止。T 之前创立的文件在 HDFS 中依然可用,但 T 之后创立的文件不可用。T 之前删除的文件在 HDFS 中依然被删除,然而 T 之后删除的文件被复原。
    始终反对从较新版本回滚到降级前版本。然而,这不能以滚动形式实现。它须要集群停机。假如 NN1 和 NN2 别离处于活动状态和待机状态。以下是回滚的步骤:
    回滚 HDFS
    敞开所有 NN 和 DN。
    在所有计算机上还原降级前的版本。
    开始 NN1 为流动的“-rollingUpgrade 回滚”选项。
    在 NN2 上运行 `-bootstrapStandby’ 并以待机状态失常启动。
    应用“-rollback”选项启动 DN。

    四. 滚动降级相干命令

    1. dfsadmin –rollingUpgrade

    hdfs dfsadmin -rollingUpgrade <query|prepare|finalize>

    2. dfsadmin –getDatanodeInfo

    hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT>
    获取无关给定 datanode 的信息。该命令能够像 Unix ping 命令一样用于检查数据节点是否处于活动状态。

    3. dfsadmin –shutdownDatanode

    hdfs dfsadmin -shutdownDatanode <DATANODE_HOST:IPC_PORT> [upgrade]
    提交给定 datanode 的敞开申请。如果指定了可选的降级参数,则倡议拜访数据节点的客户端期待其重启,而后启用疾速启动模式。如果重启不及时,客户端将超时并疏忽数据节点。在这种状况下,疾速启动模式也将被禁用。
    请留神,该命令不会期待数据节点敞开实现。dfsadmin -getDatanodeInfo 命令可用于检查数据节点敞开是否实现。

    4. namenode –rollingUpgrade

    hdfs namenode -rollingUpgrade <rollback|started>

退出移动版