大数据集群节点多块磁盘负载不均衡怎么办?

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 大数据集群节点多块磁盘负载不均衡怎么办?

大家好,我是明哥!

“大数据集群节点磁盘负载不均衡”的问题,相信大数据集群管理员并不陌生, 本片文章,我们就简单分享下,如何应对上述问题。

问题现象

大数据集群使用一段时间后,有时我们会发现大数据集群中某些节点的多块磁盘的负载不均衡,比如某些磁盘使用率达到了百分之七八十,有的才百分之二三十。

问题原因

造成以上问题的背景和原因,很多时候是因为,我们在使用过程中,发现某些磁盘损坏后,使用新磁盘进行了替换,或者当发现HDFS容量不够需要扩展空间时,由运维管理人员陆陆续续为 datanode 节点增加了多块磁盘,并将这些磁盘挂载到了不同目录比如 /mnt/disk1, /mnt/disk2;此后由大数据系统管理人员配置 HDFS 使用了这些新的磁盘上的目录 (比如配置 dfs.datanode.data.dir=/mnt/disk1/dfs/data,/mnt/disk2/dfs/data,/mnt/disk3/dfs/data),并重启了 hdfs 服务使配置生效。

但是hdfs经过上述配置更改并重启生效之后,只有新增加的HDFS文件才会存储在新增加的目录下,已经存在的HDFS历史文件,其对应的底层数据是不会从原有目录移动到新增目录的。

即使使用了命令 hdfs balancer 来在集群内重新分布 HDFS 文件,由于该命令只会在不同host之间移动数据,也就是主要做的是 host 节点级别的负载均衡,上述单节点中多磁盘之间的负载不均衡问题,也不会由太大缓解。

注意:在 CDH 中,上述节点级别的负载均衡,除了在后台使用命令触发执行,也可以通过如下页面触发执行:

为达到上述单节点中多磁盘之间的负载均衡,我们需要在单节点的多个磁盘目录之间,根据其使用率的差异,在磁盘目录之间移动数据。

该功能可以使用 Hdfs 的 hdfs diskbalancer 来实现, 该工具是 hadoop 3.0 通过 HDFS-1312 引入的新功能。

技术背景-HDFS-1312

hdfs diskbalancer 工具是 hadoop 3.0 通过 HDFS-1312 引入的新功能:

image

幸运的是,在 CDH 平台中,即使我们使用的不是 hadoop 3.x, 在某些 hadoop 2.x 系列中,由于 Cloudera cherry pick 了上述功能,我们仍然可以使用上述命令实现磁盘级别的负载均衡:

image

问题解决

在 CDH 6.3 及以前的版本中,上述但节点磁盘级别的负载均衡工具 hdfs diskbalancer, 并没有像节点级别的负载均衡工具 hdfs balancer 一样集成到 web 页面中,所以我们只能在后台通过命令来触发执行。

具体来讲,需要安装一下步骤进行操作:

  1. 确保hdfs-site.xml中的配置 dfs.disk.balancer.enabled=true
  2. 使用命令生成 balancer plan 文件:hdfs diskbalancer -plan target-node //target-node是需要均衡的节点,该命令会生成一个*.plan.json的文件
  3. 使用命令执行balance plan文件,进行均衡操作:hdfs diskbalancer -execute target-node.plan.json
  4. 查询均衡操作的完成状态:hdfs diskbalancer -query target-node // DONE 的时候表示已经执行完毕

注意:

  • CDH6.3等版本中配置dfs.disk.balancer.enabled,需要在hdfs-site.xml的高级配置代码段中配置:
  • 如果 dfs.disk.balancer.enabled=false,执行相关命令时会报以下错误:
  • 如果节点的磁盘负载差异不大,执行命令时会报信息“DiskBalancing not needed for node:”:
  • 由于磁盘均衡过程中,磁盘IO、网络IO占用都会比较高,建议尽量在集群负载不高时进行;
  • 可以通过命令行参数 -bandwidth, 或配置文件参数 dfs.disk.balancer.max.disk.throughputInMBperSe 控制 diskbalancer 的均衡速度阈值//参数 dfs.datanode.balance.bandwidthPerSec 控制的是节点级别 balancer 的均衡速度阈值;
  • 可同时配置磁盘的选择策略 dfs.datanode.fsdataset.volume.choosing.policy(默认 rg.apache.hadoop.hdfs.server.datanode.fsdataset.RoundRobinVolumeChoosingPolicy,可选 org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy);
  • 完整命令行参数和配置文件参数,如下:


  • 相关命令示例如下:
  • hdfs diskbalancer -plan node1.mycluster.com
  • hdfs diskbalancer -execute /system/diskbalancer/nodename.plan.json
  • hdfs diskbalancer -query nodename.mycluster.com
  • hdfs diskbalancer -cancel planID -node nodename
  • hdfs diskbalancer -fs http://namenode.uri -report -node <file://> | [<DataNodeID|IP|Hostname>,...]
  • hdfs diskbalancer -fs http://namenode.uri -report -top topnum
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
zdl
|
1月前
|
消息中间件 运维 大数据
大数据实时计算产品的对比测评:实时计算Flink版 VS 自建Flink集群
本文介绍了实时计算Flink版与自建Flink集群的对比,涵盖部署成本、性能表现、易用性和企业级能力等方面。实时计算Flink版作为全托管服务,显著降低了运维成本,提供了强大的集成能力和弹性扩展,特别适合中小型团队和业务波动大的场景。文中还提出了改进建议,并探讨了与其他产品的联动可能性。总结指出,实时计算Flink版在简化运维、降低成本和提升易用性方面表现出色,是大数据实时计算的优选方案。
zdl
159 56
|
8天前
|
存储 负载均衡 监控
揭秘 Elasticsearch 集群架构,解锁大数据处理神器
Elasticsearch 是一个强大的分布式搜索和分析引擎,广泛应用于大数据处理、实时搜索和分析。本文深入探讨了 Elasticsearch 集群的架构和特性,包括高可用性和负载均衡,以及主节点、数据节点、协调节点和 Ingest 节点的角色和功能。
24 0
|
1月前
|
SQL 存储 大数据
单机顶集群的大数据技术来了
大数据时代,分布式数仓如MPP成为热门技术,但其高昂的成本让人望而却步。对于多数任务,数据量并未达到PB级,单体数据库即可胜任。然而,由于SQL语法的局限性和计算任务的复杂性,分布式解决方案显得更为必要。esProc SPL作为一种开源轻量级计算引擎,通过高效的算法和存储机制,实现了单机性能超越集群的效果,为低成本、高效能的数据处理提供了新选择。
|
1月前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
2月前
|
存储 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
45 1
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
|
2月前
|
分布式计算 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
56 5
|
2月前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
58 4
|
2月前
|
资源调度 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
52 2
|
1月前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
362 7
|
1月前
|
存储 分布式计算 大数据
大数据 优化数据读取
【11月更文挑战第4天】
54 2