我有一个8节点的Hadoop集群,其中每个节点有24个具有超线程的物理内核,因此,48个vCPU和256GB内存。
我正在尝试运行6TB的Terasort工作。
问题:当我使用yarn.nodemanager.resource.cpu-vcores = 44(对于OS,DN,RM等,48减去4)时,Terasort运行时没有错误。但是,当我尝试使用yarn.nodemanager.resource.cpu-vcores = 88过度订阅CPU时,我会得到几个map并减少错误。
所有地图失败都像“太多的提取失败......”。 所有减少错误就像“......#Block没有足够数量的副本......”。
我看过THIS和THIS个链接。我检查了我的/ etc / hosts文件,并且还发现了我的net.core.somaxconn内核参数。
我不明白为什么我会使用超额预订的CPU来获取地图并减少故障。
任何提示或建议都会有所帮助,并提前感谢。
答案 0 :(得分:0)
我到了“Too many fetch ...”错误的底部。发生的事情是因为在运行我的7TB作业时服务器负载很重(请记住1TB作业总是成功运行),主站和从站之间没有足够的连接。我需要增加主服务器和从服务器之间的监听队列,这可以通过修改名为“somaxconn”的内核参数来完成。
默认情况下,rhel OS中的“somaxconn”设置为128。通过将其提升到1024,7TB terasort作业成功运行而没有失败。
希望这有助于某人。