一.介绍
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可能会导致群集停机。
降级非联邦集群
假如有两个名称节点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实现滚动降级。
- 筹备滚动降级
- 降级联邦集群
在联邦集群中,有多个名称空间以及每个名称空间的一对Active和StandBy NN。降级联结群集的 过程相似于降级非联邦群集的过程,不同之处在于
为每个命名空间筹备滚动降级
降级每个命名空间的Active和StandBy NN
降级DN
实现每个命名空间的滚动降级
2. 停机降级
对于非HA群集,无奈在没有停机的状况下降级HDFS,因为它须要重新启动NN。然而,DN仍能够滚动形式降级。
降级非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>
- 降级NN和SNN