环境: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. getItemAt

    getItemAt(0) 获得第一行数据 getItemAt(1) 获得第二行数据

  2. js 时分秒与秒数的转换

    1. 时间戳 格式化为 时分秒(00:00:00) /** * 时间秒数格式化 * @param s 时间戳(单位:秒) * @returns {*} 格式化后的时分秒 */ var sec_to_t ...

  3. 从javaScript中学习正则表达式——RegExp

    正则表达式工具:http://regexper.com   由于国外网络可以选择 https://github.com/javallone/regexper-static 离线安装作为本地服务. 正则 ...

  4. ClientImageViewController

    package com.vcredit.ddcash.server.web.controller.common; import com.vcredit.ddcash.server.commons.mo ...

  5. HTML5 - Canvas【申明:来源于网络】

    HTML5 - Canvas 地址:http://hwaphon.site/

  6. .net 平台 统计图表展示控件fusioncharts

    https://www.fusioncharts.com/javascript-chart-fiddles/

  7. Delphi 中的 XMLDocument 类详解(9) - 关于 HasChildNodes 与 IsTextElement

    unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...

  8. bugfree3.0.1-修改“优先级”为中文引起的PHP Error

    博主在搭建好bugfree后,修改了系统中“优先级”字段,将原先系统定义的优先级“1.2.3.4”修改为符合博主自己项目要求的优先级“高.中.低”.修改成功后,系统确实将原先提交的BUG优先级从“1. ...

  9. Cartographer源码阅读(4):Node和MapBuilder对象2

    MapBuilder的成员变量sensor::Collator sensor_collator_; 再次阅读MapBuilder::AddTrajectoryBuilder方法.首先构造了mappin ...

  10. Eclipse 在启动发生错误异常:An internal error occurred during: "Initializing Java Tooling". java.lang.NullPointerException的解决办法

    异常现象: 打开Eclipse,出现 An internal error occurred during: "Initializing Java Tooling". java.la ...