作者:李继武&陶攀龙
1.故障描述
在HBase和Hive集群中HDFS的DataNode节点均有大量的异常日志,详细日志信息如下:
2019-02-25 17:02:02,153 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: BlockSender.sendChunks() exception: java.io.IOException: 断开的管道 at sun.nio.ch.FileChannelImpl.transferTo0(Native Method) at sun.nio.ch.FileChannelImpl.transferToDirectlyInternal(FileChannelImpl.java:416) at sun.nio.ch.FileChannelImpl.transferToDirectly(FileChannelImpl.java:481) at sun.nio.ch.FileChannelImpl.transferTo(FileChannelImpl.java:596) at org.apache.hadoop.net.SocketOutputStream.transferToFully(SocketOutputStream.java:223)...
![922f8ed0d0983b427cf0868bbc9675ec.png](https://i-blog.csdnimg.cn/blog_migrate/0a4f4d2b698d617de3a6ad99f7b164fe.jpeg)
主要以Hive集群分析为主,该集群中有hive01和hive02两个节点即是管理节点也是数据节点,这两个节点上出现了大量的“Broken Pipe”异常日志
![9087bfe9af9c070b05a08494946b1bbd.png](https://i-blog.csdnimg.cn/blog_migrate/1be46b225c1769c8a8301ec01773fdd2.jpeg)
![64c38be532a09f124e32c0d838ee34b6.png](https://i-blog.csdnimg.cn/blog_migrate/b7cd0b47c99f3730688fee4eb0da9428.jpeg)
2.故障分析阶段(平台层面)
通过提供给Cloudera售后的HDFS日志、lsof日志以及其它搜集的日志,在初步分析后反应出来的现象HBase出现性能问题是由于底层的HDFS不稳定导致。在HDFS的DataNode节点有大量的“Broken Pipe”异常,由于大量的Broken Pipe导致DataNode读写Block时重试从而导致基于HDFS的HBase等应用会出现性能下降的问题。
售后提出协调系统管理员分析系统层面的问题,在OS层面与旧集群未做任何变动,系统的参数及Hadoop的基本运行环境均与旧集群一致。
1. 通过分析Hive集群发现 NameNode GC频繁且耗时,如下图所示
![a4bb4c75a2d12a9cc0a2413ebd2edbc7.png](https://i-blog.csdnimg.cn/blog_migrate/b3bce14db9b10da586d93589bb3eb08e.jpeg)
将NameNode的Java heap大小从6GB调整至10GB
![bff03f99941e7865c8310cf8c8116860.png](https://i-blog.csdnimg.cn/blog_migrate/12088990061ab0f96edc833ec36ba79a.jpeg)
增加NameNode的Heap大小后通过jstat命令和CM监控界面进行监控,看到NameNode的GC得到缓解
sudo -u hdfs /usr/java/jdk1.7.0_80/bin/jstat -gcutil 180080 10