HDFS Rolling Upgrade

HDFS Rolling Upgrade

Introduction

HDFS 滚动升级允许单独升级每一个HDFS进程。例如,DataNode可以独立于NameNode升级。一个NameNode可以独立于其他的NameNode升级。NameNode可以独立于DataNode和JournalNode升级。

Upgrade

在Hadoop V2中,HDFS支持NameNode服务的HA和前后兼容。这两个能力使在线升级HDFS成为可能。为了在线升级一个HDFS集群,集群必须以HA安装。

Upgrade without Downtime

在HA的集群中,有两个或者更多的NameNode,很多DataNode,几个JournalNode和几个ZookeeperNode。JNs是相对稳定的,在大多数情况下,升级HDFS不需要升级JNs。这里描述滚动升级的过程,只考虑NameNode和DataNode,不考虑JNs和ZKNs。升级JNs和ZKNs可能会引起停机时间。

Upgrading Non-Federated Clusters

假设有两个NameNode NN1和NN2,NN1和NN2分别处在Active和Standby状态。下面是升级一个HA集群的步骤:

1.      准备滚动升级

1.      运行命令“hdfs dfsadmin-rollingUpgrade
prepare”,为滚动创建一个FsImage。

2.      运行命令“hdfsdfsadmin -rollingUpgrade
query”,检查滚动Image的状态。等一会接着重新运行这个命令直到“Proceed with rolling upgrade”消息出现。

2 .升级Active和Standby NNs

1.      关闭NN2,然后升级NN2

2.      用“-rollingUpgrade started”选项,启动NN2作为StandbyNameNode。

3.      从NN1故障转移到NN2,以使NN2处于Active,NN1处于Standby。

4.      关闭NN1,然后升级NN1。

5.      用"rollingUpgrade
started
”选项,启动NN1作为Standby“。

3 . 升级DNs

1.      选择一小部分DataNode(所有的DataNode都在一个特定的机架上)。

1.      运行命令“hdfsdfsadmin -shutdownDatanode
<DATANODE_HOST:IPC_PORT> upgrade”,关闭选中的DataNode

2.      运行命令“hdfsdfsadmin -getDatanodeInfo
<DATANODE_HOST:IPC_PORT>”检查等待DataNode关闭

3.      升级和重新启动DataNode

4.      在所有选中的机器上运行上边的步骤,一次选中的DataNode可以并行操作。

2.      重新运行上边的步骤直到集群中的所有DataNode被升级。

4 . 结束滚动升级

1.      运行“hdfsdfsadmin -rollingUpgrade
finalize”结束滚动操作。

Upgrade Federated Clusters

在联邦的集群中,有多个命名空间,每一个命名空间都有一对NN,一个Active,一个Standby。升级一个联邦的集群和升级一个非联邦的集群除了步骤1和步骤4需要运行在每一个命名空间,步骤2运行在每一个NNs对之外,其余是相同的。

1.      准备每一个命名空间的滚动升级

2.      升级每一个命名空间的Active和Standby NN。

3.      升级DNs。

4.      结束每一个命名空间的滚动升级。

Upgrade with Downtime

对于非HA的集群,没有停机时间升级HDFS是不可能的,因为升级需要重新启动NameNode。但是,DataNode仍然可以以滚动的方式升级。

Upgrading Non-HA Clusters

在一个非HA的集群中,只有一个NN,一个SNN和多个DN。升级一个非HA集群与升级一个HA的集群类似,除了步骤2,升级Active和Standby NN被改为下面这样:

u  升级一个NN和SNN

1.      关闭SNN

2.      关闭和升级NN

3.      用“-rollingUpgrade started”选项启动NN

4.      升级和重启SNN

Downgrade and Rollback

当升级后的版本不尽人意或者,在一些看似不太可能的情况下,升级失败(因为新版本的bug),管理员可能选择降级HDFS到之前的版本,或者回滚HDFS到升级之前的版本和升级之前的状态。不管是降级还是回滚都需要集群停机时间,不能以滚动的方式完成。

注意降级和滚回操作只能发生在滚动升级开始之后,升级结束之前。一次升级过程可被finalize或者downgrade或者rollback结束。因此,在finalize或者downgrade之后运行rollback是不可能的,在finalize之后执行downgrade也是不可能的。

Downgrade

Downgrade将软件恢复到升级之前的版本同时保存用户数据。假设时间T是滚动升级的开始时间,升级被Downgrade结束。然后,在T之前或之后创建的文件在HDFS中都可用。在T之前或之后删除的文件,就保持删除。

如果NameNode的版本和DataNode的版本在两个HDFS版本中没有没改,一个新版本可以降级到升级之前的版本。下面是降级的步骤:

u  降级HDFS

1.      关闭所有的NN和DN

2.      在所有的机器上恢复到升级之前的版本。

3.      用“-rollingUpgrade rollback”选项启动NN

4.      正常启动DN

RollBack

Rollback恢复HDFS的状态到升级之前的版本,但是会将用户数据重置会升级之前的状态。假设时间T是滚动升级的开始时间,升级被Rollback结束。在T之前创建的文件被保存,在T之后创建的文件将变得不可用。在T之前删除的文件保持删除,在T之后删除的文件会被恢复。

从一个新版本回滚回升级之前的状态总是被支持的。下面是回滚的步骤:

u  Rollback HDFS

1.      关闭所有的NN和DN

2.      恢复所有机器上升级之前的HDFS版本

3.      用-rollingUpgrade rollback选项启动NN

4.      正常启动DN

Commands and Startup Options forRolling Upgrade

DFSAdmin Commands

dfsadmin-rollingUpgrade

hdfs dfsadmin-rollingUpgrade <query|start|finalize>

执行滚动升级操作

u  选项


query


Query the current rolling upgrade status.


prepare


Prepare a new rolling upgrade.


finalize


Finalize the current rolling upgrade.

dfsadmin –getDatanodeInfo

hdfs dfsadmin -getDatanodeInfo <DATANODE_HOST:IPC_PORT>

获取指定DataNode的信息。这个命令可被用来检出一个DataNode是否是alive,类似于Unix的ping命令。

dfsadmin-shutdownDatanode

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

向给定的DataNode提交一个关机请求,如果,可选参数upgrade被指定。访问DataNode的客户端将被建议等待直到DataNode重启同时开启快速启动模式。当重启没有及时的发生,客户端超时,然后忽视这个DataNode。在这种情况下,快速启动模式将被禁止。

注意:命令不能等到DataNode关闭来完成。如果DataNode关闭没有完成,命令“dfsadmin
-getDatanodeInfo”可被用来检查DataNode状态。

NameNode Startup Options

namenode-rollingUpgrade

hdfs namenode -rollingUpgrade <downgrade|rollback|started>

当滚动升级正在进行中时,启动选项-rollingUpgrade用来指定不同的滚动升级:


downgrade


Restores the namenode back to the pre-upgrade release and preserves the user data.


rollback


Restores the namenode back to the pre-upgrade release but also reverts the user data back to the pre-upgrade state.


started


Specifies a rolling upgrade already started so that the namenode should allow image directories with different layout versions during startup.

HDFS Rolling Upgrade

时间: 2024-10-01 02:50:07

HDFS Rolling Upgrade的相关文章

Hadoop HDFS源码分析 读取命名空间镜像和编辑日志数据

读取命名空间镜像和编辑日志数据 1.读取命名空间镜像 类FSImage是 命名空间镜像的java实现,在源码中,英文注释为, /** * FSImage handles checkpointing and logging of the namespace edits. * */ FSImage.loadFSImage(FSNamesystem, StartupOption, MetaRecoveryContext) 读取命名空间镜像. 1 private boolean loadFSImage(

HDFS Scribe Integration 【转】

It is finally here: you can configure the open source log-aggregator, scribe, to log data directly into the Hadoop distributed file system. Many Web 2.0 companies have to deploy a bunch of costly filers to capture weblogs being generated by their app

hdfs命令大全

hdfs常用命令: 第一部分:hdfs文件系统命令 第一类:文件路径增删改查系列: hdfs dfs -mkdir dir  创建文件夹 hdfs dfs -rmr dir  删除文件夹dir hdfs dfs -ls  查看目录文件信息 hdfs dfs -lsr  递归查看文件目录信息 hdfs dfs -stat path 返回指定路径的信息 第二类:空间大小查看系列命令: hdfs dfs -du -h dir 按照适合阅读的形式人性化显示文件大小 hdfs dfs -dus uri 

Upgrade Windows Server 2016 to Windows Server 2019

Pre-Upgrade Upgrade path: Windows Server 2016 can be upgraded to Windows 2019 in a single upgrade process. Support: In-place Upgrade is supported for Windows Server 2016 on physicaL hardware, and in Virtual Machines. Public and private cloud companie

Java之美[从菜鸟到高手演练]之Hadoop常用命令

作者:二青 邮箱:[email protected]     微博:http://weibo.com/xtfggef 这篇文章主要是讲一下位于bin下的hadoop命令,我们可以直接输入hadoop无任何参数看一下: 用法就是:hadoop [---config confdir] COMMAND此处COMMAND就是下面列出来的那些,fs, version,jar 等等. 用户命令 fs 目前版本的hadoop已经摒弃了fs命令,取而代之的是hdfs dfs. Usage: hdfs dfs [

Kafka Connect REST Interface

Since Kafka Connect is intended to be run as a service, it also supports a REST API for managing connectors. By default this service runs on port 8083. When executed in distributed mode, the REST API will be the primary interface to the cluster. You

Windows Server 2016技术预览

Windows Server 2016是微软将于2016年9月份发布的最新服务器操作系统.目前微软官方发布了许多Windows Server 2016新的功能和特性,下面我们来简单看下: 主要内容 预览版界面 系统需求及安装 服务器管理变化 新特性及变化 预览版界面 服务器界面,沉浸而不渲染 登录界面,色调变得活泼起来,用户图像由原先Windows2012的方块变成圆形 继续 进入系统,乍一看,以为是WIN10呢,注意右下角 如此做法,似乎在传递win10的最佳服务器系统就是他了 开始菜单,Al

nova分析(5)—— nova-conductor

nova-conductor是nova-compute之上的一个服务,这个服务比较简单,主要封装了DB访问和动态迁移相关的代码.转来一篇文章看看它是如何工作的. 更新记录:1. 2013.4.19  增加对nova-conductor的优势和劣势分析 正文:在Grizzly版的Nova中,取消了nova-compute的直接数据库访问.大概两个原因:1. 安全考虑.Benefit:因为compute节点通常会运行不可信的用户负载,一旦服务被攻击或用户虚拟机的流量溢出,则数据库会面临直接暴露的风险

Oracle Extended Tracing

http://thatoracledude.blogspot.jp/2014/08/oracle-extended-tracing.html Definitions A trace file is a file that contains diagnostic data used to investigate problems. Also, trace files can provide guidance for tuning applications or an instance. Types