Datanode Hang with High thread blocked

简介:

前段时间线上的Flume突然不稳定起来,各种socket read/write timeout. Block recover也一直不成功.查看Datanode的日志确实这段时间packresponder各种连接失败,读取失败,各种异常:PrematureEOF from inputStream/Connection reset/Interrupted receiveBlock/,在某些条件下也触发坏块的产生.

奇怪的是这段时间有问题的datanode的负载,网卡IO都不高,只是出问题时datanode会伴随着high session.接着部署个集群的thread监控才发现了原因:

Datanode默认每6dfs.datanode.directoryscan.interval)小时调用DirectoryScanner去做内存和磁盘数据集块校验,而这个过程fdataset这个数据结构一直持有独占锁,导致其他的线程都被BLOCK住,而数据量越大在默认情况1个(dfs.datanode.directoryscan.threads)线程的执行时间越久.虽然在HADOOP-4584后分离了diskscanner和heartbeat sender但是还是存在共享竞争资源,所以严重情况下仍然可能导致假死.知道了原因后,把这个参数调大后可以加速扫描速度,进而降低锁的时间使得datanode快速恢复服务:

可以看到,调整后threadblock数极大降低了:

wKiom1MUsYuQxZu7AAOq5VKvJcY350.jpg


这个问题在HADOOP2.3.0改善了一部分,将getfilelength部分以async disk scan的方式获取,降低了锁定的时间.



本文转自MIKE老毕 51CTO博客,原文链接:http://blog.51cto.com/boylook/1367235,如需转载请自行联系原作者



相关文章
|
SQL 缓存 分布式计算
SparkSQL与Hive metastore Parquet转换
Spark SQL为了更好的性能,在读写Hive metastore parquet格式的表时,会默认使用自己的Parquet SerDe,而不是采用Hive的SerDe进行序列化和反序列化
SparkSQL与Hive metastore Parquet转换
|
资源调度 分布式计算 Kubernetes
给 K8s 装上大数据调度引擎:伏羲架构升级 K8s 统一调度
飞天伏羲作为有着十多年历史的调度团队,在服务好 MaxCompute 大数据平台的过程中,一直在不断通过自我革新赶超业界先进水平,我们经历了 Fuxi 2.0 的这样的大规模升级,今天通过 K8s 统一调度项目又再次实现了系统架构的蜕变,将大数据平台强大的调度能力赋予 K8s 系统,同时去拥抱 K8s 周边丰富的生态。除了集团弹内集群,将来我们在公共云、专有云等多个场景,也会以 K8s 统一调度的方式进行输出,以更好地服务云上的用户,敬请期待!
2156 109
给 K8s 装上大数据调度引擎:伏羲架构升级 K8s 统一调度
|
11月前
|
存储 监控 固态存储
如何监控和优化 WAL 日志文件的存储空间使用?
如何监控和优化 WAL 日志文件的存储空间使用?
293 1
|
缓存 Java 大数据
CDH大数据环境参数优化指南
CDH大数据环境参数优化指南
|
资源调度 测试技术 Apache
YARN中的CPU资源隔离-CGroups
YARN中集成了CGroups的功能,使得NodeManger可以对container的CPU的资源使用进行控制,比如可以对单个container的CPU使用进行控制,也可以对NodeManger管理的总CPU进行控制。
10232 1
|
SQL 存储 分布式计算
【Hive】hive内部表和外部表的区别
【4月更文挑战第14天】【Hive】hive内部表和外部表的区别
直流稳压电源与信号产生电路(模电速成)
直流稳压电源与信号产生电路(模电速成)
236 1
|
弹性计算
阿里云AMD EPYC Genoa 9T24 处理器2.7 GHz主频计算性能稳定睿频3.7 GHz
阿里云AMD EPYC Genoa 9T24 处理器2.7 GHz主频计算性能稳定睿频3.7 GHz
695 0

热门文章

最新文章