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>

Slow ReadProcessor&amp;Error Slow BlockReceiver错误日志分析(转)的更多相关文章

  1. (转)SLOW READPROCESSOR;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 配置慢查询日志(SlowQueryLog)以及使用日志分析工具

    [ 查看系统关于慢查询的设置 ] mysql> show variables like '%slow%'; +---------------------------+-------------- ...

  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. 一天一个Linux命令--find

    文件查找:(以find为主)  which:查找命令字所在的位置  locate:模糊匹配(只要包含关键字的文件都查找出来)         不是实时的,基于数据库查找, updatedb升级loca ...

  2. SQLServer之创建主XML索引

    创建主XML索引注意事项 若要创建主 XML 索引,请使用 CREATE INDEX (Transact-SQL) Transact-SQL DDL 语句. XML 索引不完全支持可用于非 XML 索 ...

  3. LeetCode算法题-Reverse String II(Java实现)

    这是悦乐书的第256次更新,第269篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第123题(顺位题号是541).给定一个字符串和一个整数k,你需要反转从字符串开头算起的 ...

  4. Tmux 入门

    什么是 Tmux Tmux 官方 Wiki 简单来说,Tmux 是一个能够让你一个窗口当多个窗口使用的终端模拟器.并且你还可以将它放到后台,等到想使用的时候再使用. 为什么要用 Tmux 在服务器上调 ...

  5. HTML---标签的分类 | display | visibility

    一.HTML标签的分类和转换 1.1,三类HTML标签 1.2,三类HTML标签的特点 1.3,三类标签的转换--display:none隐藏于visibility不同之处 二.HTML某些标签--不 ...

  6. Flink 的Window 操作(基于flink 1.3描述)

    Window是无限数据流处理的核心,Window将一个无限的stream拆分成有限大小的”buckets”桶,我们可以在这些桶上做计算操作.本文主要聚焦于在Flink中如何进行窗口操作,以及程序员如何 ...

  7. DISK 100% BUSY,谁造成的?(ok)

    iostat等命令看到的是系统级的统计,比如下例中我们看到/dev/sdb很忙,如果要追查是哪个进程导致的I/O繁忙,应该怎么办? # iostat -xd ... Device: rrqm/s wr ...

  8. web框架开发-Django模型层(2)-多表操作

    很重要,都是精华 多表关系模型 一对一 一旦确定表关系是一对一,在两张表中的任意一张表中建立关联字段+Unique 一对多 一旦确定表关系是一对多,创建关联字段在多的表中 多对多 一旦确定表关系是多对 ...

  9. MySQL数据库引擎类别和更换方式

    MySQL数据库引擎类别 能用的数据库引擎取决于mysql在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEA ...

  10. kubernetes1.14.0部署

    2019/4/6/使用kubeadm安装部署kubernetes集群: 前提:1.各节点时间同步:2.各节点主机名称解析:dns OR hosts:3.各节点iptables及firewalld服务被 ...