Hadoop生态圈(十一)- HDFS集群滚动升级

Hadoop生态圈(十一)- HDFS集群滚动升级,第1张

Hadoop生态圈(十一)- HDFS集群滚动升级

目录

1. 介绍2. 升级

2.1 不停机升级

2.1.1 升级非联邦集群2.1.2 升级联邦集群 2.2 停机升级

2.2.1 升级非HA集群 3. 降级和回滚

3.1 降级3.2 回滚 4. 滚动升级相关命令

4.1 dfsadmin –rollingUpgrade4.2 dfsadmin –getDatanodeInfo4.3 dfsadmin –shutdownDatanode4.4 namenode –rollingUpgrade

1. 介绍

  HDFS 滚动升级允许升级单个 HDFS 守护程序。例如,可以独立于 NameNodes 升级 DataNodes。也可以独立于其他 NameNodes 升级单独 NameNode。也可以独立于 DataNodes 和 journal nodes 升级 NameNodes。

2. 升级

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

2.1 不停机升级

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

2.1.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 upgrade以关闭所选的 DN。运行hdfs dfsadmin -getDatanodeInfo 进行检查,然后等待 DN 关闭。升级并重启 DN 节点。对子集中的所有选定 DN 节点并行执行以上步骤。重复上述步骤,直到升级群集中的所有 DN 节点。 完成滚动升级

运行hdfs dfsadmin -rollingUpgrade finalize完成滚动升级。 2.1.2 升级联邦集群

  在联邦集群中,有多个名称空间以及每个名称空间的一对 Active 和 StandBy NN。升级联合群集的过程类似于升级非联邦群集的过程,不同之处在于:

为每个命名空间准备滚动升级升级每个命名空间的Active和StandBy NN升级DN完成每个命名空间的滚动升级 2.2 停机升级

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

2.2.1 升级非HA集群

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

升级NN和SNN

关闭 SNN关闭并升级 NN使用-rollingUpgrade started选项启动 NN升级并重新启动 SNN 3. 降级和回滚

  如果不希望使用升级版本,或者在某些不太可能的情况下,升级失败(由于较新版本中的错误),管理员可以选择将 HDFS 降级到升级前版本,或将 HDFS 回滚到升级前版本和升级前的状态。
  请注意,降级可以滚动方式进行,但不能回滚。回滚要求集群停机。
  还请注意,只有在开始滚动升级之后且终止升级之前,才可以进行降级和回滚。可以通过完成,降级或回滚来终止升级。因此,可能无法在完成或降级之后执行回滚,或者在完成后无法执行降级。

3.1 降级

  降级会将软件还原回升级前的版本,并保留用户数据。假设时间 T 是滚动升级开始时间,并且升级通过降级终止。然后,在 T 之前或之后创建的文件在 HDFS 中仍然可用。在 T 之前或之后删除的文件在 HDFS 中仍然被删除。
  仅当两个版本之间的 namenode 布局版本和 datanode 布局版本均未更改时,才可以将较新的版本降级为升级前的版本。
  在高可用性集群中,当正在进行从旧软件版本到新软件版本的滚动升级时,可以滚动方式将升级后的计算机降级到旧软件版本。与之前相同,假设 NN1 和 NN2 分别处于活动状态和待机状态。以下是在不停机的情况下进行降级的步骤:

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

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

3.2 回滚

  回滚将软件还原到升级前的版本,但也将用户数据还原到升级前的状态。假设时间T是滚动升级开始时间,并且升级通过回滚终止。T 之前创建的文件在 HDFS 中仍然可用,但 T 之后创建的文件不可用。T 之前删除的文件在 HDFS 中仍然被删除,但是 T 之后删除的文件被恢复。
  始终支持从较新版本回滚到升级前版本。但是,这不能以滚动方式完成。它需要集群停机。假设 NN1 和 NN2 分别处于活动状态和待机状态。以下是回滚的步骤:

回滚 HDFS关闭所有 NN 和 DN在所有计算机上还原升级前的版本。开始 NN1 为活动的-rollingUpgrade回滚选项。在 NN2 上运行-bootstrapStandby并以待机状态正常启动。使用-rollback选项启动 DN。 4. 滚动升级相关命令 4.1 dfsadmin –rollingUpgrade

  hdfs dfsadmin -rollingUpgrade

4.2 dfsadmin –getDatanodeInfo

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

4.3 dfsadmin –shutdownDatanode

  hdfs dfsadmin -shutdownDatanode [upgrade]
  提交给定 datanode 的关闭请求。如果指定了可选的升级参数,则建议访问数据节点的客户端等待其重启,然后启用快速启动模式。如果重启不及时,客户端将超时并忽略数据节点。在这种情况下,快速启动模式也将被禁用。
  请注意,该命令不会等待数据节点关闭完成。dfsadmin -getDatanodeInfo命令可用于检查数据节点关闭是否完成。

4.4 namenode –rollingUpgrade

  hdfs namenode -rollingUpgrade

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5708765.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存