我想在一个新的硬件堆栈上示例化另一个新的hadoop集群时提交一个奇怪的行为。
一旦所有东西都安装好了,只要我们尝试在hdfs上执行任何i/o操作,我们就可以在datanode日志中看到许多这样的消息:
15/01/14 22:13:07 WARN datanode.DataNode: Slow BlockReceiver write packet to mirror took 6339ms (threshold=300ms)
15/01/14 22:13:26 INFO DataNode.clienttrace: src: /10.10.5.7:17276, dest: /10.10.5.4:50010, bytes: 176285, op: HDFS_WRITE, cliID: DFSClient_NONMAPREDUCE_-832581408_1, offset: 0, srvID: af886556-96db-4b03-9b5b-cd20c3d66f5a, blockid: BP-784291941-127.0.1.1-1420922413498:blk_1073742333_1531, duration: 19383299287
其次是著名的:
java.net.SocketTimeoutException: 60000 millis timeout while waiting for channel to be ready for read (...)
我们怀疑双vlan+绑定网络接口(2x10 gbps)不是其中的一部分,但是,当然,我们仔细检查了很多这些点,没有发现任何东西: iperf
, dd
/ hdparm
,增加 Xmx
(8 gb), sysbench
... 我们只发现星团有一个相当大的 await
运行hdfs时磁盘上的时间(>500ms,与我们的日志消息相关),但我们无法清楚地解释发生了什么。
即使你们都怀疑硬盘是我们麻烦的原因,有人能解释这些日志信息吗?我们在源代码中找不到任何有趣的东西,除非它是在执行时发生的 flush
(有道理……)。
设置:
hadoop 2.6.0版
9个数据节点
debian 3.2.63-2+deb7u2 x86_
10x 1tb sas驱动器
openjdk运行时环境(icedtea 2.5.3)(7u71-2.5.3-2~deb7u1)
openjdk 64位服务器虚拟机(内部版本24.65-b04,混合模式)
这是来自用户ml的交叉帖子,因为到目前为止我还没有得到答案;-(。
2条答案
按热度按时间ipakzgxi1#
我有同样的问题与慢hdfs。
我设法解决了第二个错误:
java.net.sockettimeoutexception:等待通道准备好读取时超时60000毫秒(…)
通过增加datanode javaxmx。
希望这有帮助。
9q78igpj2#
实际上,我们已经解决了这个问题。这是由于我们的网络mtu,与fs无关。我们的实验mtu太大了,导致了这样的行为。回到经典的价值观会让事情恢复正常。