0

我有一个 8 节点 Hadoop 集群,其中每个节点有 24 个具有超线程的物理内核,因此有 48 个 vCPU 和 256GB 内存。

我正在尝试运行 6TB Terasort 作业。

问题:当我使用 yarn.nodemanager.resource.cpu-vcores=44(操作系统、DN、RM 等为 48 减去 4)时,Terasort 运行没有错误。但是,当我尝试使用 yarn.nodemanager.resource.cpu-vcores=88 超额订阅 CPU 时,我得到了几个 map 并减少了错误。

所有的地图失败都像“太多的获取失败......”。所有减少错误都类似于“....#Block 没有足够数量的副本....”。

我看过这个这个链接。我检查了我的 /etc/hosts 文件,并且还碰到了我的 net.core.somaxconn 内核参数。

我不明白为什么我会使用超额订阅的 CPU 来获取地图并减少故障。

任何提示或建议都会有所帮助,并在此先感谢。

4

1 回答 1

0

我找到了“Too many fetch...”错误的根源。发生的事情是,因为在运行我的 7TB 作业时服务器负载很重(请记住,1TB 作业总是成功运行),主从之间没有足够的连接发生。我需要增加主从之间的监听队列,这可以通过修改一个名为“somaxconn”的内核参数来完成。

默认情况下,“somaxconn”在 rhel OS 中设置为 128。通过将其提高到 1024,7TB terasort 作业成功运行,没有失败。

希望这可以帮助某人。

于 2018-05-18T14:21:15.520 回答