我一直很头疼,现在我的hadoop集群就是这样,我有40个salve节点要运行,每个从节点我配置25个mappers 10个reducer,所以我可以同时启动40*25=1000个mappers和400个reducer。好的,现在我有以下工作:
作业1:我配置为运行5个Map器和5个还原器作业2:我配置为运行20个Map器和10个还原器作业3:我配置为运行975个Map器和385个还原器
假设我使用默认的fifo作业调度,如果我连续提交3个Map器,这3个作业是否可能同时运行?以便最大限度地利用集群?
目前,我测试它,在mapper阶段,似乎1000个mapper可以在提交3个作业后启动,但是在reducer阶段,它变得非常慢,所以我等了很长时间,上面的作业都没有完成,似乎他们挂在reducer阶段。
我不太明白这其中的内在原因,有没有人能帮我在这个问题上,让我可以提交的工作和睡眠,然后明天早上我看到我所有的工作都是按顺序完成?我需要用公平的时间安排来工作吗????
1条答案
按热度按时间uqcuzwp81#
这是一个有点难给出解决办法-但我会尽量给方向找到一个。1如果集群中有足够的reduce插槽,那么问题可能与并行作业执行无关。至少我一开始不会怀疑。
2我建议使用fair scheduler—它是专门为并行执行和资源共享而构建的。
三。我建议单独测试每个作业,并且只在每个作业运行良好的启动并行运行之后。
4缓慢减少可能有很多原因,但我会检查以下(我所知道的):
a) 在mapper和reducer之间传递(并序列化)的大量数据。查看文件系统字节写入计数器以识别它。
b) 存在严重的数据倾斜,大量数据到达单个减速器。