云小课|MRS 基础操作之配置 DataNode 容量均衡
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击此处。
摘要:当 HDFS 集群出现 DataNode 节点间磁盘利用率不平衡时,会导致 MapReduce 应用程序无法很好地利用本地计算的优势、数据节点之间无法达到更好的网络带宽使用率等问题。因此管理员需要定期检查并保持 DataNode 数据平衡。
本文分享自华为云社区《【云小课】EI第43课 MRS基础操作之配置DataNode容量均衡》,原文作者:阅识风云
HDFS 集群可能出现 DataNode 节点间磁盘利用率不平衡的情况,比如集群中添加新数据节点的场景。如果 HDFS 出现数据不平衡的状况,可能导致多种问题,比如 MapReduce 应用程序无法很好地利用本地计算的优势、数据节点之间无法达到更好的网络带宽使用率或节点磁盘无法利用等等。所以系统管理员需要定期检查并保持 DataNode 数据平衡。
HDFS 提供了一个容量均衡程序 Balancer。通过运行这个程序,可以使得 HDFS 集群达到一个平衡的状态,使各 DataNode 磁盘使用率与 HDFS 集群磁盘使用率的偏差不超过阈值。如下图 1 和图 2 分别是 Balance 前后 DataNode 的磁盘使用率变化。
图 1 执行均衡操作前 DataNode 的磁盘使用率
图 2 执行均衡操作后 DataNode 的磁盘使用率
均衡操作时间估算受两个因素影响:
需要迁移的总数据量:
每个 DataNode 节点的数据量应大于(平均使用率-阈值)*平均数据量,小于(平均使用率+阈值)*平均数据量。若实际数据量小于最小值或大于最大值即存在不平衡,系统选择所有 DataNode 节点中偏差最多的数据量作为迁移的总数据量。
Balancer 的迁移是按迭代(iteration)方式串行顺序处理的,每个 iteration 迁移数据量不超过 10GB,每个 iteration 重新计算使用率的情况。
因此针对集群情况,可以大概估算每个 iteration 耗费的时间(可以通过执行 Balancer 的日志观察到每次 iteration 的时间),并用总数据量除以 10GB 估算任务执行时间。
由于按 iteration 处理,Balancer 可以随时启动或者停止。
配置 DataNode 容量均衡
参考 MRS 快速入门的“创建集群”章节购买一个 MRS 集群,例如购买 MRS 3.1.0 版本集群,集群包含 HDFS 等组件,该集群已开启 Kerberos 认证。
已安装 HDFS 客户端,可参考 MRS 用户指南的“安装客户端”章节,例如客户端安装目录为“/opt/client”。
1.使用客户端安装用户登录客户端所在节点。执行命令切换到客户端安装目录,例如“/opt/client”。
2.执行以下命令配置环境变量。
3.执行以下命令认证 hdfs 身份。hdfs 用户默认密码请参考 MRS 用户指南中的“用户帐号一览表”章节获取。首次认证需要修改密码。
4.执行以下命令,启动 Balance 任务。
<threshold of balancer>:表示 HDFS 数据达到平衡状态时 DataNode 磁盘使用率偏差值,各个 DataNode 节点磁盘的使用率和整体 HDFS 集群的磁盘空间平均使用率偏差小于此阈值时,系统认为 HDFS 集群已经达到了平衡的状态并结束 Balance 任务。
例如,需要设置偏差率为 5%,则执行:
如果需要停止 Balance 任务,请执行以下命令:
5.用户在执行了步骤 4 的脚本后,会在客户端安装目录“/opt/client/HDFS/hadoop/logs”目录下生成名为 hadoop-root-balancer-主机名.out 日志。执行以下命令打开该日志。
日志出现“Balancing took xxx seconds”信息表示均衡操作已完成。
可以看到如下字段信息:
Time Stamp:时间戳
Bytes Already Moved:已经移动的字节数
Bytes Left To Move:待移动的字节数
Bytes Being Moved:正在移动的字节数
好了,本期云小课就介绍到这里,快去体验 MapReduce(MRS)更多功能吧!猛戳这里
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/b894bbf6c6f887025367dba39】。文章转载请联系作者。
评论