【云小课】EI第43课 MRS基础操作之配置DataNode容量均衡

Hello EI 发表于 2022/05/30 16:01:09 2022/05/30
【摘要】 HDFS集群可能出现DataNode节点间磁盘利用率不平衡的情况,比如集群中添加新数据节点的场景。如果HDFS出现数据不平衡的状况,可能导致多种问题,比如MapReduce应用程序无法很好地利用本地计算的优势、数据节点之间无法达到更好的网络带宽使用率或节点磁盘无法利用等等。所以系统管理员需要定期检查并保持DataNode数据平衡。

HDFS集群可能出现DataNode节点间磁盘利用率不平衡的情况,比如集群中添加新数据节点的场景。如果HDFS出现数据不平衡的状况,可能导致多种问题,比如MapReduce应用程序无法很好地利用本地计算的优势、数据节点之间无法达到更好的网络带宽使用率或节点磁盘无法利用等等。所以系统管理员需要定期检查并保持DataNode数据平衡。

HDFS提供了一个容量均衡程序Balancer。通过运行这个程序,可以使得HDFS集群达到一个平衡的状态,使各DataNode磁盘使用率与HDFS集群磁盘使用率的偏差不超过阈值。如下图1和图2分别是Balance前后DataNode的磁盘使用率变化。

图1 执行均衡操作前DataNode的磁盘使用率

图2 执行均衡操作后DataNode的磁盘使用率

均衡操作时间估算受两个因素影响:

  1. 需要迁移的总数据量:

    每个DataNode节点的数据量应大于(平均使用率-阈值)*平均数据量,小于(平均使用率+阈值)*平均数据量。若实际数据量小于最小值或大于最大值即存在不平衡,系统选择所有DataNode节点中偏差最多的数据量作为迁移的总数据量。

  2. Balancer的迁移是按迭代(iteration)方式串行顺序处理的,每个iteration迁移数据量不超过10GB,每个iteration重新计算使用率的情况。

因此针对集群情况,可以大概估算每个iteration耗费的时间(可以通过执行Balancer的日志观察到每次iteration的时间),并用总数据量除以10GB估算任务执行时间。

由于按iteration处理,Balancer可以随时启动或者停止。

配置DataNode容量均衡

创建集群购买一个MRS集群,例如购买MRS 3.1.0版本集群,集群包含HDFS等组件,该集群已开启Kerberos认证。

已安装HDFS客户端,可参考安装客户端,例如客户端安装目录为“/opt/client”。

  1. 使用客户端安装用户登录客户端所在节点。执行命令切换到客户端安装目录,例如/opt/client

    cd /opt/client
  2. 执行以下命令配置环境变量。

    source bigdata_env
  3. 执行以下命令认证hdfs身份。hdfs用户默认密码请参考用户帐号一览表章节获取。首次认证需要修改密码。

    kinit hdfs
  4. 执行以下命令,启动Balance任务。

    bash /opt/client/HDFS/hadoop/sbin/start-balancer.sh -threshold <threshold of balancer>

    <threshold of balancer>:表示HDFS数据达到平衡状态时DataNode磁盘使用率偏差值,各个DataNode节点磁盘的使用率和整体HDFS集群的磁盘空间平均使用率偏差小于此阈值时,系统认为HDFS集群已经达到了平衡的状态并结束Balance任务。

    例如,需要设置偏差率为5%,则执行:

    bash /opt/client/HDFS/hadoop/sbin/start-balancer.sh -threshold 5

    如果需要停止Balance任务,请执行以下命令:

    bash /opt/client/HDFS/hadoop/sbin/stop-balancer.sh
  5. 用户在执行了启动Balance任务的脚本后,会在客户端安装目录/opt/client/HDFS/hadoop/logs下生成名为hadoop-root-balancer-主机名.out日志。执行以下命令打开该日志。

    vi /opt/client/HDFS/hadoop/logs/hadoop-root-balancer-主机名.out

    日志出现“Balancing took xxx seconds”信息表示均衡操作已完成。

    Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved NameNode
    The cluster is balanced. Exiting...
    May 25, 2022 5:01:21 PM 0 0 B 0 B 0 B hdfs://hacluster
    May 25, 2022 5:01:21 PM Balancing took 1.456 seconds
    ......
    可以看到如下字段信息:
    • Time Stamp:时间戳

    • Bytes Already Moved:已经移动的字节数

    • Bytes Left To Move:待移动的字节数

    • Bytes Being Moved:正在移动的字节数

好了,本期云小课就介绍到这里,快去体验MapReduce(MRS)更多功能吧!猛戳这里

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。