整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

10.3.3升级

升级HDFS和MapReduce集群需要细致的规划,特别是HDFS的升级。如 果文件系统的布局的版本发生变化,升级操作会自动将文件系统数据和元 数据迁移到兼容新版本的格式。与其他涉及数据迁移的过程相似,升级操 作暗藏数据丢失的风险,因此需要确保数据和元数据都已经备份完毕。参 见10.3.1节对日常管理过程的讨论。

规划过程最好包括在一个小型测试集群上的测试过程,以评估是否能够承 担(可能的)数据丢失的损失。测试过程使用户更加熟悉升级过程、了解如何 配置本集群和工具集,从而为在产品集群上进行升级工作消除技术障碍。 此外,一个测试集群也有助于测试客户端的升级过程。用户可以阅读5.2.2 节对客户端兼容性的讨论。

如果文件系统的布局并未改变,升级集群就非常容易:在集群上安装新的 HDFS和MapReduce(客户端也同步安装),关闭旧的守护进程,升级配置文 件,启动新的守护进程,令客户端使用新的库。整个过程是可逆的,换言 之,也可以方便地还原到旧版本。

成功升级版本之后,还需要执行两个清理步骤。

(1)从集群中移除旧的安装和配置文件。

(2)在代码和配置文件中针对“被弃用”(deprecation)警告信息进行 修复。

HDFS的数据和元数据升级

如果采用前述方法来升级HDFS,且新旧HDFS的文件系统布局恰巧不同, 则namenode无法正常工作,在其日志文件中产生如下信息:

File system image contains an old layout version -16.
An upgrade to version -18 is required.
Please restart NameNode with -upgrade option.

最可靠的判定文件系统升级是否必要的方法是在一个测试集群做实验。

升级HDFS会保留前一版本的元数据和数据的复本,但这并不意味着需要 两倍的存储开销,因为datanode使用硬链接保存指向同一块的两个应用(分 别为当前版本和前一版本),从而能够在需要时方便地回滚到前一版本。需 要强调的是,系统回滚到旧版本之后,原先的升级改动都将被取消。

用户可以保留前一个版本的文件系统,但无法回滚多个版本。为了执行 HDFS数据和元数据上的另一次升级任务,需要删除前一版本,该过程被称 为“定妥升级”(finalizing the upgrade)。一旦执行该操作,就无法再回滚到 前一个版本。

一般来说,升级过程可以忽略中间版本(例如,从0.18.3升级到0.20.0不需 要先升级到0.19.x)。但在某些情况下还是需要先升级到中间版本,这种情 况会在发布说明文件中清晰指出。

仅当文件系统健康时,才可升级,因此有必要在升级之前调用fsck工具全 面检査文件系统的状态(参见10.M节对fsck工具的讨论)。此外,最好保 留fsck的输出报告,该报告列举了所有文件和块信息;在升级之后,再次 运行力fsck新建一份输出报告并比较两份报告的内容。

在升级之前最好清空临时文件,包括HDFS的MapReduce系统目录和本地 临时文件等。 

综上所述,如果升级集群会导致文件系统的布局变化,则需要采用下述步 骤进行升级。

(1)在执行升级任务之前,确保前一升级已经定妥。

(2)关闭MapReduce ,终止在tasktracker上运行的任何孤儿任务 (orphaned task)。

(3)关闭HDFS,并备份namenode目录。

(4)在集群和客户端安装新版本的Hadoop HDFS和MapReduce。

(5)使用-upgrade选项启动HDFS。

(6)等待,直到升级完成。

(7)检验HDFS是否运行正常。

(8)启动 MapReduce。

(9)回滚或定妥升级任务(可选的)。

运行升级任务时,最好移除PATH环境变量下的Hadoop脚本,这样的话, 用户就不会混淆针对不同版本的脚本。通常可以为新的安装目录定义两个 环境变量。在后续指令中,我们定义了 OLD_HADOOP_INSTALL和 NEW_HADOOP_INSTALL 两个环境变量。

启动升级为了执行升级,可运行以下命令(即前述的步骤5):

% $NEW_HADOOP_INSTALL/bin/start-dfs.sh -upgrade

该命令的结果是让namenode升级元数据,将前一版本放在名为的 新目录中:

${dfs.name.dir}/current/VERSION
/edits 
/fsimage 
/fstime
/previous/VERSION
/edits
/fsimage
/fstime

类似地datanode升级存储目录,保留原先的复本,将其存放在 previous目录中。

等待,直到升级完成升级过程并非一蹴即就,可以用dfsadmin查看升级 进度,升级事件同时也出现在守护进程的日志文件中,步骤(6):

% $NEW_HADOOP_INSTALL/bin/hadoop dfsadmin -upgradeProgress status
Upgrade for version -18 has been completed.
Upgrade is not finalized.

查验升级情况显示升级完毕。在本阶段中,用户可以检査文件系统的状 态,例如使用fsck(一个基本的文件操作)检验文件和块,参见步骤(7)。检验 系统状态时,最好让HDFS进入安全模式(所有数据只读),以防止其他用户 修改数据。

回滚升级(可选的)如果新版本无法正确工作,可以回滚到前一版本,参见 步骤(9),前提是尚未定妥更新。

回滚操作会将文件系统的状态转回到升级之前的状态,同期所做的 任何改变都会丢失。换句话说,将回滚到文件系统的前一状态,而 非将当前的文件系统降级到前一版本

首先,关闭新的守护进程:

% $NEW_HAD00P_IN5TALL/bin/stop-dfs.sh

其次,使用-rollback选项启动旧版本的HDFS:

% $OLD_HADOOP_INSTALL/bin/start-dfs.sh -rollback

该命令会让namenode和datanode使用升级前的复本替换当前的存储目录。 文件系统返回之前的状态。

定妥升级(可选)如果用户满意于新版本的HDFS,可以定妥升级,参见步 骤(9),以移除升级前的存储目录。

一且升级定妥,就再也无法回滚到前一版本。

在执行新的升级任务之前,必须执行这一步:

% $NEW_HADOOP_INSTALL/bin/hadoop dfsadmin -finalizeUpgrade 
% $NEW_HADOOP__INSTALL/bin/hadoop dfsadmin -upgradeProgress status
There are no upgrades in progress.

现在HDFS已经完全升级到新版本了。

转载请注明:全栈大数据 » 10.3.3升级

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址