HDFS集群滚动升级

简介: HDFS集群滚动升级

1 介绍

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


2 升级

在Hadoop v2中,HDFS支持NameNode高可用(HA)和线路兼容性(wirecompatibility)。这两个功能使升级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 <DATANODE_HOST:IPC_PORT> upgrade以

关闭所选的DN。

运行hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT>进行检查,

然后等待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 <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 ”以完成滚动降级。

请注意,在降级名称节点之前,必须先降级数据节点,因为协议可以以向后兼容

的方式更改,但不能向前兼容,即,旧的数据节点可以与新的名称节点对话,反之则

不行。


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 <query|prepare|finalize>


51b79e427da940d79c1e83385870c9e3.png

4.2 dfsadmin –getDatanodeInfo

hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT>

获取有关给定datanode的信息。该命令可以像Unix ping命令一样用于检查数据

节点是否处于活动状态。


4.3 dfsadmin –shutdownDatanode

hdfs dfsadmin -shutdownDatanode <DATANODE_HOST:IPC_PORT> [upgrade]

提交给定datanode的关闭请求。如果指定了可选的升级参数,则建议访问数据节

点的客户端等待其重启,然后启用快速启动模式。如果重启不及时,客户端将超时并

忽略数据节点。在这种情况下,快速启动模式也将被禁用。

请注意,该命令不会等待数据节点关闭完成。dfsadmin -getDatanodeInfo命令可

用于检查数据节点关闭是否完成。


4.4 namenode –rollingUpgrade

hdfs namenode -rollingUpgrade <rollback|started>


a6013d74508a41ce898bf33ecf6351e1.png

目录
相关文章
|
4月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
241 6
|
4月前
|
消息中间件 分布式计算 关系型数据库
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
80 0
|
4月前
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
119 5
|
4月前
|
资源调度 数据可视化 大数据
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
52 4
|
4月前
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
231 5
|
4月前
|
XML 资源调度 网络协议
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
224 4
|
4月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
148 4
|
4月前
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
156 3
|
4月前
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
Hadoop-09-HDFS集群 JavaClient 代码上手实战!详细附代码 安装依赖 上传下载文件 扫描列表 PUT GET 进度条显示(二)
64 3
|
4月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
79 2