未加星标

[译] Hadoop 3 中的磁盘管理大招解密

字体大小 | |
[数据库(综合) 所属分类 数据库(综合) | 发布者 店小二05 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏

[译] Hadoop 3 中的磁盘管理大招解密

译者:王辉 校对:胥峰

1、前言

本文深入研究 HDFS 磁盘平衡的新特性,这是 Hadoop3 中加入的一个特性。

HDFS 现在包括(在 CDH 5. 8. 2 和更高版本中发布)用于跨节点移动数据的全面的存储容量管理方法。

在 HDFS 中,DataNode 将数据块分散到本地文件系统目录中,这可以使用 hdfs-site.xml 文件的 dfs.datanode.data.dir 参数指定。

在典型的安装中,每个目录(在 HDFS 术语中称为卷)位于不同的设备上(例如,在单独的 HDD 和 SSD 上)。

当向 HDFS 写入新块时,DataNode 使用卷选择策略为块选择磁盘。

当前支持两种此类策略类型:

轮询(round-robin)

可用空间(available space)(HDFS-1804)

简而言之,如图1所示,轮询策略在可用磁盘上均匀分布新块,而可用空间策略优先将数据写入具有最大可用空间(按百分比)的磁盘。


[译] Hadoop 3 中的磁盘管理大招解密

图1

默认情况下,DataNode 使用基于轮询的策略写入新块。但是,在长期运行的集群中,由于 HDFS 中大规模文件删除或通过磁盘热交换特性添加新 DataNode 磁盘等事件,DataNode 仍然可能创建了显著不平衡的卷。

即使您使用基于可用空间的卷选择策略,卷不平衡仍然可能导致效率较低的磁盘 I / O。

例如:每个新写入将转到新添加的空磁盘,而其他磁盘在此期间是空闲的,这会在新磁盘造成瓶颈。

最近,Apache Hadoop 社区开发了服务器离线脚本(在 HDFS-1312,[email protected] mailing list 和 GitHub 中所讨论的),以缓解数据不平衡问题。

但是,由于处于 HDFS 代码库之外,这些脚本要求 DataNode 在磁盘之间移动数据之前脱机。

因此,HDFS-1312 还引入了一种在线磁盘平衡器,旨在根据各种指标重新平衡正在运行的 DataNode 上的卷。

与 HDFS 平衡器类似,HDFS 磁盘平衡器作为 DataNode 中的线程运行,以便在具有相同存储类型的卷之间移动块文件。

在本文的剩余部分,您将了解为什么以及如何使用此新特性。

2、如何使用磁盘平衡器?

让我们通过一个例子逐步探讨这个有用的特性。

首先,确认在所有 DataNode 上配置 dfs.disk.balancer.enabled 设置为 true。

从 CDH 5.8.2 起,用户可以通过 Cloudera Manager 中的 HDFS 安全阀片段指定此配置:


[译] Hadoop 3 中的磁盘管理大招解密

在此示例中,我们将向预加载的 HDFS DataNode 添加一个新磁盘(/mnt/disk1),并将新磁盘挂载到 /mnt/disk2。

在 CDH 中,每个 HDFS 数据目录位于单独的磁盘上,因此可以使用 df 显示磁盘使用情况:
[译] Hadoop 3 中的磁盘管理大招解密

显然,是时候让磁盘平衡了!

典型的磁盘平衡器任务涉及三个步骤(通过 HDFS diskbalancer 命令实现):计划,执行和查询。

在第一步中,HDFS 客户端从 NameNode 读取关于指定的 DataNode 的必要信息,以生成执行计划:
[译] Hadoop 3 中的磁盘管理大招解密

从输出中可以看出,HDFS 磁盘平衡器使用计划器来计算指定 DataNode 上数据移动计划的步骤,这是通过使用 DataNode 向 NameNode 报告的磁盘使用信息来完成的。

每个步骤指定要移动数据的源卷和目标卷,以及预计移动的数据量。

在编写本文时,HDFS 支持的唯一计划器是 GreedyPlanner ,它不断将数据从最常用的设备移动到最少使用的设备,直到全部数据均匀分布在所有设备上。

用户还可以在计划命令中指定空间利用率的阈值;因此,如果空间利用率的差异低于阈值,则计划器认为磁盘是平衡的。

另一个值得注意的选项是通过在计划过程中指定― bandwidth 来限制磁盘平衡器任务 I/O,以便磁盘平衡器 I/O 不会影响前台工作。

磁盘平衡器执行计划生成为存储在 HDFS 中的 JSON 文件。

默认情况下,计划文件保存在 /system/diskbalancer 目录下:


[译] Hadoop 3 中的磁盘管理大招解密

要在 DataNode 上执行计划,请运行:


[译] Hadoop 3 中的磁盘管理大招解密

此命令将 JSON 计划文件提交给 DataNode,DataNode 在后台 BlockMover 线程中执行它。

检查 DataNode 上磁盘平衡器任务的状态,请使用 query 命令:
[译] Hadoop 3 中的磁盘管理大招解密
输出(PLAN_DONE)表示磁盘平衡任务已完成。要验证磁盘平衡器的有效性,请再次使用 df -h 查看跨两个本地磁盘的数据分布:
[译] Hadoop 3 中的磁盘管理大招解密

输出确认磁盘平衡器成功地将卷之间的磁盘空间使用率差异降低到10%以下。任务完成!

要阅读有关 HDFS 磁盘均衡器的更多详细信息,请阅读 Cloudera 文档和上游文档。

3、总结

随着 HDFS-1312 中引入期待已久的内部 DataNode 磁盘平衡器特性,CDH 5.8.2 及更高版本中带来的 HDFS 版本提供了一个全面的存储容量管理解决方案,可以实现以下3种数据移动:跨节点(平衡器)、存储类型(Mover)和单个 DataNode 中的磁盘(磁盘平衡器)。

4、感谢

HDFS-1312由来自Hortonworks的Anu工程师、Zhou Xiaobin和Arpit Agarwal以及来自Cloudera 的 Lei(Eddy)Xu和Manoj Govindasamy合作开发。

胥峰 盛大游戏高级研究员

linux 运维最佳实践》作者、《 DevOps: A Software Architect'sPerspective 》译者,拥有 10 年运维经验。

中英文对照版PDF下载链接:

https://pan.baidu.com/s/1o7EJIae

密码: ws93

GOPS2017 深圳站,带你领略最新的技术


[译] Hadoop 3 中的磁盘管理大招解密

GOPS2017深圳站

GOPS

有你想不到的运维新技术

会议地点: 南山区圣淘沙酒店(翡翠店)

会议时间:2017年4月21日-22日

现在购票,您将享受 88折 ( 截止2月19日), 您可点击 “阅读原文” 链接直接享用:

本文数据库(综合)相关术语:系统安全软件

主题: HDFSHadoop数据理大LinuxGit服务器GitHub深圳中大
分页:12
转载请注明
本文标题:[译] Hadoop 3 中的磁盘管理大招解密
本站链接:http://www.codesec.net/view/534295.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(综合) | 评论(0) | 阅读(90)