hadoop生态圈-- 个人笔记学习05 HDFS优化
DFSClient和DN在一个节点 —— local reads,远程阅读 Remote reads。 处理方式是一样的
- DN读数据
- 通过RPC(TCP协议)把数据给DFSClient。DN在中间会做中转,处理简单但是性能收影响 (Local read的情况下,会希望绕过DN直接读取Data,这就是 短路
短路本地读取
- DFSClient自行打开文件读取数据,需要配置白名单定义可读取数据的User —— 安全漏洞,不建议使用
- 两个进程socket方式通讯,普通数据甚至是文件描述符传递给B,B读取文件内容({即使B没有权限) 3. A为DN,B为DFSClient,读取文件 安全性稍微好点
负载平衡器 Balancer
让block放信息,在整个DN节点之间平衡数据 (无法在单个DN的各个卷之间平衡
命令
hdfs balancer
设置平衡数据传输带宽
hdfs dfsadmin -setBlancerBandwidth newbandwidth
修改阈值
hdfs balancer -threshold 5
表示阈值为5%,默认10%,每个DN磁盘使用率与cluster总体使用了相差不超过5%。 EXM: 所有DN总体使用率是集群磁盘容量的40%,program要确保每个DN磁盘使用率在这个DN磁盘存储容量的35%到45%之间
磁盘均衡器 HDFS disk balancer
对比个人PC, server可以通过挂在对磁盘扩大单机存储能力
-
DN负责数据block存储,在机器上磁盘之间分配数据块。写入新的block的时候,DN根据选择策略选择block磁盘
** 循环策略**:新的block均匀分布在可用磁盘上(默认 可用空间策略: 数据写入有更多空间磁盘(按百分比
如果基于可用空间的策略:新写入会放入空磁盘 —— 其他磁盘idle, 新磁盘有瓶颈 —— 需要intra DataNode Balancing机制解除 DataNode偏斜 —— 磁盘更换, 随机写入 删除发生的
功能
报告、平衡
比较数据在节点不同卷的分布情况:密度允许在节点之间比较 —— 根据used / capcity保存容量,最好保持70%
指令 plan
hdfs diskbalancer -plan <datanode>
设定好计划后,execute
hdfs diskbalancer -execute <JSON file path>
对DN执行计划
查询
hdfs diskbalancer -query <datanode>
cancel取消计划
EC 纠删码技术
优化方案
-
动态扩容 —— 原有cluster加新的DN节点 缩容,cluster停止某些机器的HDFS服务
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
R语言学习——散点图和折线图