Hadoop EC 踩坑 :data block 缺失导致的 HDFS 传输速率下降
环境: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 传输速率下降的更多相关文章
- Hadoop编程踩坑
Hadoop踩坑 在hadoop所有组件编程中,遇到在Windows下运行程序出现 java.io.IOException: Could not locate executable null\bin\ ...
- Ubuntu搭建Hadoop的踩坑之旅(一)
本文将介绍如何使用虚拟机一步步从安装Ubuntu到搭建Hadoop伪分布式集群. 本文主要参考:在VMware下安装Ubuntu并部署Hadoop1.2.1分布式环境 - CSDN博客 一.所需的环境 ...
- 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 ...
- HADOOP HA 踩坑 - 所有 namenode 都是standby
报错: 无明显报错 状况: 所有namenode都是standby,即ZK服务未生效 尝试一:手动强制转化某个namenode为active 操作:在某台namenode上,执行 hdfs haadm ...
- 踩坑系列:MySql only_full_group_by配置,竟导致所有应用报错?
1. 踩坑经历 一个很平常的下午,大家都在埋头认真写bug呢,突然企业微信群里炸锅了,好多应用都出现大量的Error日志,而且都报同一个错误,就是下面这个: Caused by: com.mysql. ...
- 【踩坑系列】使用long类型处理金额,科学计数法导致金额转大写异常
1. 踩坑经历 上周,一个用户反馈他创建的某个销售单无法打开,但其余销售单都可以正常打开,当时查看了生产环境的ERROR日志,发现抛了这样的异常:java.lang.NumberFormatExcep ...
- 一次flume exec source采集日志到kafka因为单条日志数据非常大同步失败的踩坑带来的思考
本次遇到的问题描述,日志采集同步时,当单条日志(日志文件中一行日志)超过2M大小,数据无法采集同步到kafka,分析后,共踩到如下几个坑.1.flume采集时,通过shell+EXEC(tail -F ...
- Spark踩坑记——数据库(Hbase+Mysql)
[TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...
- 记jQuery.fn.show的一次踩坑和问题排查
最近很少已经很少用jQuery,因为主攻移动端,常用Zepto,其实很多细节和jQuery并不一样.最近又无意中接触到了PC的需求和IE6, 使用了jQuery,刚好踩坑了,特意记录一下. 本文内容如 ...
随机推荐
- 查看linux系统的运行级别
查看当前系统的运行级别[root@apenglinux ~]# runlevel3 5查看系统的默认级别[root@apenglinux ~]# systemctl get-defaultgraphi ...
- windows系统dos下查看无线网密码
(1)采用命令:netsh wlan show profiles 查看电脑连接过的无线网: (2)采用命令:netsh wlan show profile name ="wifi 名字&qu ...
- [bash][awk] bash下使用awk方便的列求和
这么多年,始终在用awk进行文本处理.但是一直没有好好的学习awk的语法.所以很多情况都是知其然,不知其所以然. 如今,亦如此.先记下来如下,以后有时间系统的学习一下awk的语法. ┬─[tong@T ...
- SQL Server 2008中的CDC(Change Data Capture)功能使用及释疑
SQL Server 2008中的CDC(Change Data Capture)功能使用及释疑 关键词:CDC 原文:http://www.cnblogs.com/chenxizhang/arc ...
- vue 环境报错 chromedriver@2.44.1 install: `node install.js`
解决办法: 1. yarn add chromedriver -g 2.yarn add chromedriver --chromedriver_cdnurl=http://cdn.npm.taoba ...
- 六种方式读取properties资源文件
conf.properties文件内容: reportStationName=xx供电局 JBM=0318 文件路径: 其中xxx为项目名 import java.io.BufferedInputSt ...
- vsCode工具做react开发,几个常用插件
一.环境准备: 1.下载安装VSCode,Node.js,Yarn 2.打开命令行终端或powershell,输入yarn global add create-react-app安装react的脚手架 ...
- upload-labs
upload-labs是一个和sqli-labs类似的靶场平台,只不过是一个专门学习文件上传的.整理的很好,虽然并不能将服务器解析漏洞考虑进去,但毕竟一个靶场不可能多个web容器吧,关键是思路很重要, ...
- caffe-ssd的GPU在make runtest的时候报错:BatchReindexLayerTest/2.TestGradient,where TypeParam=caffe::GPUdevice(<float>)(<double>)
make runtest报错:BatchReindexLayerTest/2.TestGradient,where TypeParam=caffe::GPUdevice<float> Ba ...
- [MacOS] Genymotion***下载模拟器方法
其它就不说了,我用的是某个工具. 将以下地址加入到白名单 https://cloud.genymotion.com http://dl.genymotion.com