阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。
摘要:当HDFS集群出现DataNode节点间磁盘利用率不平衡时,会导致MapReduce应用程序无法很好地利用本地计算的优势、数据节点之间无法达到更好的网络带宽使用率等问题。因此管理员需要定期检查并保持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”。
cd /opt/client
2.执行以下命令配置环境变量。
source bigdata_env
3.执行以下命令认证hdfs身份。hdfs用户默认密码请参考MRS用户指南中的“用户帐号一览表”章节获取。首次认证需要修改密码。
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.用户在执行了步骤4的脚本后,会在客户端安装目录“/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)更多功能吧!