hdfs disk balancer 磁盘均衡器
1、背景
在我们的hadoop集群运行一段过程中,由于多种原因,数据在DataNade的磁盘之间的分布可能是不均匀。比如: 我们刚刚给某个DataNode新增加了一块磁盘或者集群上存在大批量的write & deltete操作等灯。那么有没有一种工具,能够使单个DataNode中的多个磁盘的数据均衡呢?借助Hadoop提供的Diskbalancer
命令行工具可以实现。
2、hdfs balancer和 hdfs disk balancer有何不同?
hdfs balancer:
是为了集群中DataNode的数据均衡,即针对多个DataNode的。
hdfs disk balancer:
是为了使单台DataNode中的多个磁盘中的数据均衡。
注意:
目前DiskBalancer
不支持跨存储介质(SSD
、DISK
等)的数据转移,所以磁盘的均衡都是要求在一个storageType下的。因为hdfs中存在异构存储
。
3、操作
3.1 生成计划
[hadoopdeploy@hadoop01 ~]$ hdfs diskbalancer -plan hadoop01 -out hadoop01-plan.json
-plan:
后面接的是主机名。
-out:
指定计划文件的输出位置。
3.2 执行计划
[hadoopdeploy@hadoop01 ~]$ hdfs diskbalancer -execute hadoop01-plan.json
3.3 查询计划
[hadoopdeploy@hadoop01 ~]$ hdfs diskbalancer -query hadoop01
-query
后面跟的是 主机名
3.4 取消计划
[hadoopdeploy@hadoop01 ~]$ hdfs diskbalancer -cancel hadoop01-plan.json
4、和disk balancer相关的配置
配置 | 描述 |
---|---|
dfs.disk.balancer.enabled |
此参数控制是否为集群启用diskbalancer。如果未启用,任何执行命令都将被DataNode拒绝。默认值为true。 |
dfs.disk.balancer.max.disk.throughputInMBperSec |
这控制了diskbalancer在复制数据时消耗的最大磁盘带宽。如果指定了10MB之类的值,则diskbalancer平均只会复制10MB/S。默认值为10MB/S。 |
dfs.disk.balancer.max.disk.errors |
设置能够容忍的在指定的移动过程中出现的最大错误次数,超过此阈值则失败。例如,如果一个计划有3对磁盘要在其中复制,并且第一个磁盘集遇到超过5个错误,那么我们放弃第一个副本并启动计划中的第二个副本。最大错误的默认值设置为5。 |
dfs.disk.balancer.block.tolerance.percent |
设置磁盘之间进行数据均衡操作时,各个磁盘的数据存储量与理想状态之间的差异阈值。取值范围[1-100],默认为10。例如,各个磁盘的理想数据存储量为100 GB,此参数设置为10。那么,当目标磁盘的数据存储量达到90 GB时,则认为该磁盘的存储状态就已经达到预期。 |
dfs.disk.balancer.plan.threshold.percent |
设置在磁盘数据均衡中可容忍的两磁盘之间的数据密度域值差,取值范围[1-100],默认为10。如果任意两个磁盘数据密度差值的绝对值超过了阈值,则说明需要对该的磁盘进行数据均衡。例如,如果一个2盘节点上的总数据为100 GB,那么磁盘均衡器计算每个磁盘上的期望值为50 GB。如果容差为10%,则单个磁盘上的数据需要大于60 GB(50 GB + 10%容差值),DiskBalancer才能开始工作。 |
dfs.disk.balancer.plan.valid.interval |
磁盘平衡器计划有效的最大时间。支持以下后缀(不区分大小写):ms(milis)、s(sec)、m(min)、h(h)、d(day)以指定时间(例如2s、2m、1h等)。如果未指定后缀,则假定为毫秒。默认值为1d |
5、额外知识点
5.1 新的block存储到那个磁盘(卷)中
当数据写入新的block时,DataNode会根据策略选择不同的磁盘来存储。
循环策略:
默认策略,将新的块均匀的分布在可用的磁盘上,可能造成数据倾斜。
可用空间策略:
选择更多可用空间(按百分比)的磁盘。可能造成在某段时间内,某个磁盘的IO压力变大。
5.2 磁盘数据密度度量标准
上图来自 https://www.bilibili.com/video/BV11N411d7Zh/?p=81
6、参考文档
1、https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSDiskbalancer.html
2、https://help.aliyun.com/document_detail/467585.html
3、https://www.bilibili.com/video/BV11N411d7Zh/?p=81
hdfs disk balancer 磁盘均衡器的更多相关文章
- Azure ARM (18) 将Azure RM Manage Disk托管磁盘的Image,跨订阅迁移
<Windows Azure Platform 系列文章目录> 先挖一个坑,以后再埋. 最近遇到一个客户需求,客户使用了Azure RM Manage Disk托管磁盘,然后捕获镜像做成了 ...
- hdfs的balancer
参考: https://blog.csdn.net/mnasd/article/details/80369603 在CDH中选一个资源多的节点,安装 HDFS->添加角色到实例 启动后状态是灰的 ...
- CDH版HDFS Block Balancer方法
命令: sudo -u hdfs hdfs balancer 默认会检查每个datanode的磁盘使用情况,对磁盘使用超过整个集群10%的datanode移动block到其他datanode达到均衡作 ...
- Disk:磁盘管理之LVM和系统磁盘扩容
简介 小伙伴们好,好久不见,今天想给大家介绍一下关于磁盘管理的方法和心得:磁盘管理可谓运维工作中的重要内容,主要包括磁盘的合理规划以及扩缩容 常用的磁盘管理方法为LVM(Logical Volume ...
- Acronis.Disk.Director磁盘分区管理
Acronis.Disk.Director分为for 专业版和服务器版的,我在生产环境中调整Windows2003跳板机使用的是Acronis.Disk.Director Server 10.0.20 ...
- HDFS数据平衡
一.datanode之间的数据平衡 1.1.介绍 Hadoop 分布式文件系统(Hadoop Distributed FilSystem),简称 HDFS,被设计成适合运行在通用硬件上的分布式文件 ...
- Hadoop常见重要命令行操作及命令作用
关于Hadoop [root@master ~]# hadoop --help Usage: hadoop [--config confdir] COMMANDwhere COMMAND is one ...
- CentOS7 hadoop3.3.1安装(单机分布式、伪分布式、分布式)
@ 目录 前言 预先设置 修改主机名 关闭防火墙 创建hadoop用户 SSH安装免密登陆 单机免密登陆--linux配置ssh免密登录 linux环境配置Java变量 配置Java环境变量 安装Ha ...
- 运用ASMIOSTAT脚本监控asm disk磁盘性能
1,脚本作用: 类似于OS的iostat检查磁盘的I/O性能,ASMIOSTAT 脚本用来检查ASM磁盘的性能, 2,下载AMSIOSTAT脚本http://files.cnblogs.com/fil ...
- Hadoop Balancer源代码解读
前言 近期在做一些Hadoop运维的相关工作,发现了一个有趣的问题,我们公司的Hadoop集群磁盘占比数值參差不齐,高的接近80%.低的接近40%.并没有充分利用好上面的资源,可是balance的操作 ...
随机推荐
- NC16886 [NOI2001]炮兵阵地
题目链接 题目 题目描述 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用&qu ...
- NC15447 wyh的问题
题目链接 题目 题目描述 我国现在能源消耗非常严重,现在政府有这样一个工作,每天早上都需要把一些路灯关掉,但是他们想让在关闭的过程中所消耗的能源是最少的,负责路灯关闭的工作人员以1m/s的速度进行行走 ...
- Elasticsearch Web管理工具
Cerebro是一个开源的elasticsearch web管理工具 首先,下载Elasticsearch https://www.elastic.co/guide/en/elasticsearch/ ...
- 【Unity3D】人体模型及动画
1 前言 2D动画 中初步了解了 Animation 和 Animator,本文将进一步学习 3D 动画,并介绍 人体模型相关内容. 模型制作软件主要有:3DMax.Maya,模型存储格式主要 ...
- 玩转C语言:深入理解输入输出函数的奥秘
欢迎大家来到贝蒂大讲堂 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty's blog 1. 单字符输出函数 在C语言中有一个函数putchar专门负责输出单个字符,其语法如 ...
- 文心一言 VS 讯飞星火 VS chatgpt (200)-- 算法导论15.2 4题
四.用go语言,对输入链长度为 n 的矩阵链乘法问题,描述其子问题图:它包含多少个顶点?包含多少条边?这些边分别连接哪些顶点? 文心一言: 矩阵链乘法问题是一个经典的动态规划问题,其中给定一个矩阵链, ...
- C++ 时间复杂度
看到网上一些资料的案例不全,所以自己开个来复习. O(1)<O(log2n)<O(n)<O(nlog2n)<O(n^2)<O(n^3)<-<O(2^n)< ...
- 前端树形Tree数据结构使用-🤸🏻♂️各种姿势总结
01.树形结构数据 前端开发中会经常用到树形结构数据,如多级菜单.商品的多级分类等.数据库的设计和存储都是扁平结构,就会用到各种Tree树结构的转换操作,本文就尝试全面总结一下. 如下示例数据,关键字 ...
- [软件工程] CMMI是什么?
序 能力成熟度模型集成(CMMI) 一.CMMI(能力成熟度模型集成)概述 CMMI是由美国软件工程学会(software engineering institue,简称SEI)制定的一套专门针对软件 ...
- maven创建父子工程
目录 创建父工程 创建子工程 将项目编译为eclipse项目 将项目导入eclipse 修改依赖关系:service依赖dao,web依赖service JavaProject的pom.xml文件说明 ...