环境:hadoop-3.0.2 + 11 机集群 + RS-6-3-1024K 的EC策略

状况:某天,往 HDFS 上日常 put 业务数据时,发现传输速率严重下降

分析:

  • 检查集群发现,在之前的传输中,发生过个别 datanode 临时不可用的状况。
  • 而由于 hadoop EC 机制,当失效 datanode 小于容忍值 (这里是3),put 等传输任务仍然成功。但 hadoop 当时会报错,用于提示程序员,这个报错不会影响当此传输任务,故 put 等传输请求会返回成功。然后,缺失的 data block 会在出发 EC 恢复机制时被恢复。
  • 缺失的 data block 何时恢复?EC恢复的触发机制是低优先的:
    • 首先,恢复非常吃CPU和带宽,EC policy 引用的机器越多,这种消耗越大,因此,恢复任务会被执行于机器不忙碌的时候。
    • 然后,据我发现,EC恢复机制的主动触发有两种,
      • A:碰它一下,比如 get 那个文件,那么这个文件的缺失的 data block 会立即恢复,但是,并不会立即全部恢复,实验只会立即恢复1个缺失的data block,剩下的会被安排在接下来的时间内陆续恢复,这个时间无法控制。之前说过,EC恢复消耗大,会被安排在机器空闲时。
      • B:强制全部立即恢复,在重启HDFS时执行。虽然强效,但实际HDFS很少选择重启,故这个方法选择性采用。

操作:尝试重启了HDFS,强制立即全部恢复所有丢失数据块。

结果:HDFS传输速率恢复。

结论:

  • 无论在 hadoop ec 的官方文档中,还是在google等社区帖子中,都没有提到过EC的这种BUG。
  • 所以,本文提到的这个HDFS速率 BUG 和 EC 策略的相关性待进一步考究,先mark在这里。
  • 追究根本,还是 EC 对于恢复机制的高消耗带来的隐患,所以采纳 hadoop 的建议,要再一次考虑引入 ISL 编码的必要性。

  

Hadoop EC 踩坑 :data block 缺失导致的 HDFS 传输速率下降的更多相关文章

  1. Hadoop编程踩坑

    Hadoop踩坑 在hadoop所有组件编程中,遇到在Windows下运行程序出现 java.io.IOException: Could not locate executable null\bin\ ...

  2. Ubuntu搭建Hadoop的踩坑之旅(一)

    本文将介绍如何使用虚拟机一步步从安装Ubuntu到搭建Hadoop伪分布式集群. 本文主要参考:在VMware下安装Ubuntu并部署Hadoop1.2.1分布式环境 - CSDN博客 一.所需的环境 ...

  3. HADOOP HA 踩坑 - org.apache.hadoop.hdfs.qjournal.protocol.JournalNotFormattedException: Journal Storage Directory /mnt/data1/hadoop/dfs/journal/hdfscluster not formatted

    报错:在journalnode的log中: org.apache.hadoop.hdfs.qjournal.protocol.JournalNotFormattedException: Journal ...

  4. HADOOP HA 踩坑 - 所有 namenode 都是standby

    报错: 无明显报错 状况: 所有namenode都是standby,即ZK服务未生效 尝试一:手动强制转化某个namenode为active 操作:在某台namenode上,执行 hdfs haadm ...

  5. 踩坑系列:MySql only_full_group_by配置,竟导致所有应用报错?

    1. 踩坑经历 一个很平常的下午,大家都在埋头认真写bug呢,突然企业微信群里炸锅了,好多应用都出现大量的Error日志,而且都报同一个错误,就是下面这个: Caused by: com.mysql. ...

  6. 【踩坑系列】使用long类型处理金额,科学计数法导致金额转大写异常

    1. 踩坑经历 上周,一个用户反馈他创建的某个销售单无法打开,但其余销售单都可以正常打开,当时查看了生产环境的ERROR日志,发现抛了这样的异常:java.lang.NumberFormatExcep ...

  7. 一次flume exec source采集日志到kafka因为单条日志数据非常大同步失败的踩坑带来的思考

    本次遇到的问题描述,日志采集同步时,当单条日志(日志文件中一行日志)超过2M大小,数据无法采集同步到kafka,分析后,共踩到如下几个坑.1.flume采集时,通过shell+EXEC(tail -F ...

  8. Spark踩坑记——数据库(Hbase+Mysql)

    [TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...

  9. 记jQuery.fn.show的一次踩坑和问题排查

    最近很少已经很少用jQuery,因为主攻移动端,常用Zepto,其实很多细节和jQuery并不一样.最近又无意中接触到了PC的需求和IE6, 使用了jQuery,刚好踩坑了,特意记录一下. 本文内容如 ...

随机推荐

  1. jQuery实现限制input框 textarea文本框输入字符数量的方法

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  2. exe电子书制作教程(超详细)【申明:来源于网络】

    exe电子书制作教程(超详细)[申明:来源于网络] 地址:http://wenku.baidu.com/view/0b046907eff9aef8941e0631.html

  3. shop_z 一套非常适合二次开发的php后台管理系统

    QQ群:247823727 如果你需要定制某些功能开联系群主,价格实惠,后期交接完善,有上手培训 shop_z基础thinkphp5  php7上开发运行,速度杠杠的 地址:https://gitee ...

  4. JAVA 第四周学习总结

    20175303 2018-2019-2 <Java程序设计>第四周学习总结 教材学习内容总结 •用extends来定义一个类的子类. •Object类是所有类的祖先类. •如果子类和父类 ...

  5. 【Python全栈-后端开发】Django进阶2-Form表单

    Django进阶2-Form表单 Django的Form主要具有一下几大功能: 生成HTML标签(可以保留上次输入内容) 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页 ...

  6. 5、Flutter 实现 ViewPager、bottomNavigationBar 界面切换

    1.前言 首先我们想一下,如果在 Android 中实现 布局切换,通常的思路是: 做一个 viewpager 一组 Fragment 每个 Fragment 绑定一个 xml 最后填充至 viewp ...

  7. mysql插入数据会变中文

    db.url=jdbc:mysql://192.168.0.149:3306/pack_platform_dev?useUnicode=true&characterEncoding=utf-8 ...

  8. word2vec:将bin转换为txt

    转自:https://blog.csdn.net/u011684265/article/details/78024064 from gensim.models import word2vec mode ...

  9. hive 基础

    Apache的顶级项目,(java) 2008年Facebook公司开源给Apache基金会 官网:http://hive.apache.org/ hive 将SQL转换成MapReduce程序,并将 ...

  10. .NET Core 全新认识(转载)

    .NET Core 全新认识   cnblogs.com/yubinfeng/p/6626694.html 一.概述      .NET 经历14年,在Windows平台上的表现已经相当优秀,但是“跨 ...