环境: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. 关于maven的CoreException: Could not get the value for parameter compilerId for plugin 。。的错误

    在Eclipse中使用 Alt+F5 快捷键,在弹出的Update Maven Project对话框中选择报错的Maven工程,勾选下图中的 Force Update of Snapshots/Rel ...

  2. linux--- python3环境部署篇

    环境部署 我们在pycharm上都是自己设置的python3解释器的环境变量,使得代码能够正常执行!可是怎么能让我们的python代码在LINUX上跑起来呢? linux是内置python,可是内置的 ...

  3. 消息系统kafka原理解析

    Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Clouder ...

  4. GAN (Generative Adversarial Network)

    https://www.bilibili.com/video/av9770302/?p=15 前面说了auto-encoder,VAE可以用于生成 VAE的问题, AE的训练是让输入输出尽可能的接近, ...

  5. Python爬虫实例(四)网站模拟登陆

    一.获取一个有登录信息的Cookie模拟登陆 下面以人人网为例,首先使用自己的账号和密码在浏览器登录,然后通过抓包拿到cookie,再将cookie放到请求之中发送请求即可,具体代码如下: # -*- ...

  6. Fiddler (进阶)内置命令与断点

    Fiddler 内置命令与断点 命令 对应请求项 介绍 示例 ? All 问号后边跟一个字符串,可以匹配出包含这个字符串的请求 ?google > Body 大于号后面跟一个数字,可以匹配出请求 ...

  7. ffmpeg的编译和安装

    1. 先到ffmpeg官网上下载ffmpeg源码,然后配置.编译 http://ffmpeg.org/download.html 可以如下进行配置: ./configure --prefix=/usr ...

  8. 【JVM】-NO.116.JVM.1 -【JDK11 HashMap详解-5-红黑树】

    Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...

  9. JMeter中的正则表达式的匹配

    ==

  10. day04 一个简单的代码优化案例

    import random punches = ['石头','剪刀','布'] computer_choice = random.choice(punches) user_choice = input ...