1.总结


"Slow ReadProcessor" 和"Slow BlockReceiver"往往是因为集群负载比较高或者某些节点不健康导致的,本文主要是帮助你确认是因为集群负载高导致的还是因为某些节点的硬件问题。

2.症状


1.作业比以前运行的时间变长

2.Job的日志中有以下WARN的信息

2018-04-18 00:16:11,632 WARN [ResponseProcessor for block BP-<pool_id>:blk_<block_id>] org.apache.hadoop.hdfs.DFSClient: Slow ReadProcessor read fields took 57485ms (threshold=30000ms);
ack: seqno: 4 status: SUCCESS status: SUCCESS status: SUCCESS downstreamAckTimeNanos: 3284342, targets:
[DatanodeInfoWithStorage[x.x.x.x:50010,DS-26391dd6-c34d-4f7a-a6ff-6b9d264a6edd,DISK],
DatanodeInfoWithStorage[x.x.x.x:50010,DS-1840e064-e616-49d5-8ead-91f65bb3af93,DISK],
DatanodeInfoWithStorage[x.x.x.x:50010,DS-e884e0d2-b1a1-414d-925c-5d6efd1258e4,DISK]]

3.Datanode的日志中有以下WARN信息

2018-04-17 06:23:48,796 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Slow BlockReceiver write packet to mirror took 341ms (threshold=300ms)
2016-06-21 06:23:55,775 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Slow BlockReceiver write data to disk cost:873ms (threshold=300ms)
2018-04-17 08:37:52,397 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Slow flushOrSync took 534ms (threshold=300ms), isSync:false, flushTotalNanos=533345033ns
2018-04-17 08:38:57,929 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Slow manageWriterOsCache took 331ms (threshold=300ms)

请注意,单个节点的硬件问题可能会在整个群集中导致“Slow”错误。

3.原因


症状

原因

集群负载高

如果你的集群处于或接近资源上限(内存,cpu或磁盘),则你在处理作业时,你的集群可能无法确保数据本地化,因此需要在网络上传输数据块。如果是这种情况,由于使用集群上的额外负载来传输数据块,因此可能会在作业或数据节点中看到WARN消息。

Slow BlockReceiver write packet to mirror

这表明在网络上写入块时有延迟

Slow BlockReceiver write data to disk cost

这表示在将块写入OS缓存或磁盘时存在延迟

Slow flushOrSync

这表示在将块写入OS缓存或磁盘时存在延迟

Slow manageWriterOsCache

这表示在将块写入OS缓存或磁盘时存在延迟

需要注意的是,在生产环境的正常负载下,一些集群的WARN消息在datanode日志中是正常的。当单个节点具有比正常情况更多的上述WARN消息时,表明存在底层硬件问题。

4.解决办法


以下步骤将有助于确定导致DataNode日志中的“Slow”消息的底层硬件问题。

1.在每个DataNode上运行以下命令来收集所有Slow消息的计数:

egrep -o "Slow.*?(took|cost)" /path/to/current/datanode/log | sort | uniq -c

该命令将提供DataNode日志中所有“Slow”消息的计数。输出将类似于:

1000 Slow BlockReceiver write data to disk cost
234 Slow BlockReceiver write packet to mirror took
4 Slow flushOrSync took
6 Slow manageWriterOsCache took

2.如果单个节点的一个或多个类别的”Slow“消息比其他主机的”Slow“消息数量多出数量级,则需要调查底层硬件问题。

3.如果Slow消息数最多的是Slow BlockReceiver write packet tomirror took,请通过以下命令的输出来调查可能的网络问题:

  • ifconfig -a(定期检查问题主机上增加的errors和dropped的数量,往往代表的是网卡,网线或者上游的网络有问题)
  • netstat -s(与正常节点相比,查找大量重新传输的数据包或其他异常高的指标)。
  • netstat -s | grep -i retrans(整个集群执行)。 (在一个或多个节点上查找大于正常的计数)。

4.如果Slow消息最多的是一些其他消息,请使用以下命令检查磁盘问题:

  • iostat[高iowait百分比,超过15%]
  • iostat -x和sar -d(特定分区的高await或%util)
  • dmesg (磁盘错误)
  • 使用smartctl对磁盘进行健康检查:停止受影响节点的所有Hadoop进程,然后运行sudo smartctl -H /dev/<disk>,检查HDFS使用的每块<disk>
posted @
2019-04-09 15:14 
北漂-boy 
阅读(...) 
评论(...) 
编辑 
收藏

(转)SLOW READPROCESSOR;ERROR SLOW BLOCKRECEIVER错误日志分析的更多相关文章

  1. Slow ReadProcessor&amp;Error Slow BlockReceiver错误日志分析(转)

    1.总结 "Slow ReadProcessor" 和"Slow BlockReceiver"往往是因为集群负载比较高或者某些节点不健康导致的,本文主要是帮助你 ...

  2. [Apache]如何查看apache服务器的error log(错误日志)

    在进行网页和服务器的测试时, 有时会提醒 500 Internal Server Error: The server encountered an internal error or misconfi ...

  3. nginx 错误日志分析

    502 1.查看nginx错误日志 tailf /data/log/nginx/error.log // :: [error] #: * recv() failed (: Connection res ...

  4. 友盟错误日志分析(转自:COCOACHINA shemy )

      在做的项目中,用到了友盟的组件,在没有禁用错误日志上传之前,收集了一些错误日志. 有一些朋友看到了错误日志,却不知道怎么定位到程序的的代码中,实际上,这一步是非常的简单.友盟没有集成.dSYM文件 ...

  5. nginx 错误日志分析 以及说明

    1.日志简介 nginx日志主要有两种:访问日志和错误日志.访问日志主要记录客户端访问nginx的每一个请求,格式可以自定义:错误日志主要记录客户端访问nginx出错时的日志,格式不支持自定义.两种日 ...

  6. apache的错误日志分析

  7. mysql错误日志/var/log/mariadb/mariadb.log,二进制日志

    mariadb-日志 IT_luo关注0人评论65人阅读2018-10-15 08:59:03   mariadb日志 mariadb日志: 1.查询日志:query log: 2.慢查询日志:slo ...

  8. 《Unix/Linux日志分析与流量监控》书稿完成

    <Unix/Linux日志分析与流量监控>书稿完成 近日,历时3年创作的75万字书稿已完成,本书紧紧围绕网络安全的主题,对各种Unix/Linux系统及网络服务日志进行了全面系统的讲解,从 ...

  9. ubuntu1404下Apache2.4错误日志error.log路径位置

    首先打开/etc/apache2路径下的apache2.conf文件,找到ErrorLog如下 ErrorLog ${APACHE_LOG_DIR}/error.log 这里{APACHE_LOG_D ...

随机推荐

  1. dev 从表处理

    从表列名,从表选中行和主表选中一样,var selectrow = detailView.GetRow(detailView.FocusedRowHandle) as obj; private voi ...

  2. 🕯国家公祭日-默哀javascript脚本

    国行公祭,祀我国殇 兽行暴虐,共御外侮 昭昭前事,惕惕后人 永失弗谖,祈愿和平 var national_memorial_days=['12-13']; var dateObj=new Date() ...

  3. VS2015编译Teamtalk的Windows客户端(转)

    原文链接:https://blog.csdn.net/qtstar/article/details/54732581 一.(首先要把teamtalk整个项目download下来或git一个副本下来)打 ...

  4. S3C2440 块设备(待续)

    1.块设备只能以块为单位接受输入和返回输出,而字符设备则以字节为单位 2.块设备对于I/O请求有对应的缓冲区,因此他们可以选择以什么顺序进行响应,字符设备无须缓冲且被直接读写.对于存储设备而言调整读写 ...

  5. Dockerfile的编写(主观汇聚篇)

    目录 一.什么是dockerfile 二.Dockerfile的基本结构 Dockerfile文件说明 三.总结 一.什么是dockerfile dockerfile是使用者用来自定义构建一个dock ...

  6. git命令——git commit

    功能 将暂存区中的更改记录到仓库. 加到staging area里面的文件,是表示已经准备好commit的.所以在commit修改之前,务必确定所有修改文件都是staged的.对于unstaged的文 ...

  7. ubuntu18 搭建ftp服务器,以及文件目录权限问题

    有时候呢我们有一台本地的台式机或者云服务器,我们想要搭个ftp服务器好让我们在内网/外网中方便的传输.保存文件,这样别的任何电脑啊,设备啊,只要访问这个ftp的地址,就可以进行文件传输啦!由于我现在台 ...

  8. SpringCloud之Eureka

    [前面的话]SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它配置简单,上手快,而且生态成 ...

  9. html简单知识

    一.html标签的特征: 1.空白折叠现象 2.对空格和换行不敏感 3.标签要严格封闭 二.p标签的嵌套 p中只能存放字体.图片.表单控件,不能放盒子标签 三.html中标签的分类 1.行内标签 在一 ...

  10. 【经典/基础BFS+略微复杂的题意】PAT-L3-004. 肿瘤诊断

    L3-004. 肿瘤诊断 在诊断肿瘤疾病时,计算肿瘤体积是很重要的一环.给定病灶扫描切片中标注出的疑似肿瘤区域,请你计算肿瘤的体积. 输入格式: 输入第一行给出4个正整数:M.N.L.T,其中M和N是 ...