您的位置:首页 > 大数据 > Hadoop

HDFS Rolling Upgrade

2015-11-28 16:57 453 查看


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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: