我有一个8节点的Hadoop集群,其中每个节点都有24个带超线程的物理核心,即48个vCPU和256 48内存。
我正在尝试运行一个6TB的Terasort作业。
问题:当我使用YARN.NODEMAGER.resource.cpu-vcores=44( OS、DN、RM等为48减4)时,Terasort运行没有错误。但是,当我尝试使用map n.nodumager.resource.cpu-vcores=88超额订阅CPU时,我得到了几个map并减少了错误。
所有的map失败都类似于“获取失败次数太多……”。所有的reduce错误都类似于"....#Block没有足够数量的副本...“。
我看过THIS和THIS链接。我检查了/etc/hosts文件,还修改了net.core.somaxconn内核参数。
我不明白为什么在CPU超额订阅的情况下,我会得到map并减少故障。
任何提示或建议都将是有帮助的,并提前感谢。
发布于 2018-05-18 22:21:16
我深入了解了“Too many…”这句话错误。发生的情况是,因为在运行我的7TB作业时服务器负载过重(请记住1TB作业总是成功运行),所以在主服务器和从服务器之间没有足够的连接。我需要增加主服务器和从服务器之间的监听队列,这可以通过修改名为“somaxconn”的内核参数来实现。
默认情况下,在rhel中将“somaxconn”设置为128。通过将其调整为1024,7TB terasort作业成功运行,没有失败。
希望这对某些人有帮助。
https://stackoverflow.com/questions/49198745
复制相似问题