当前位置: 首页 > 知识库问答 >
问题:

如何在stand hadoop Discribuion 0.20.0中并行运行hadoop作业

韩阳成
2023-03-14

很长一段时间以来,我一直很头疼,目前我的hadoop集群是这样的,我有40个salve节点要运行,每个从节点我配置了25个映射器和10个简化器,所以我可以同时启动40*25=1000个映射器和400个简化器。好的,现在我有以下工作:

job1:我配置为运行5个映射器和5个简化器job2:我配置为运行20个映射器和10个简化器job3:我配置为运行975个映射器和385个简化器

假设我使用默认的FIFO作业调度,如果我连续提交3个映射器,这3个作业是否可能同时运行?以便最大限度地利用集群?

目前,我测试它,在映射器阶段,似乎1000个映射器可以启动后提交的3个工作,然而,在简化阶段,它变得非常非常慢,所以我等待了很长时间,以上工作都没有完成,似乎他们挂在简化阶段。

我不太明白这其中的内在原因,有没有人能在这个问题上帮助我,让我可以提交工作和睡觉,然后明天早上我看到我所有的工作都按命令完成?我需要使用公平的调度来使它工作吗????

共有1个答案

宋昊然
2023-03-14

给出解决方案有点难--但我会试着给出方向来找到一个。1.如果集群中有足够的reduce插槽--可能您的问题与并行作业执行无关。至少我一开始就不会怀疑。
2。我建议使用公平调度器--它是专门为并行执行和资源共享而构建的。
3。我建议单独测试每个作业,并且只在每个作业运行良好的并行运行之后测试。
4。减缩速度慢可能有很多原因,但我会检查以下(我所知道的):
a)映射器和减缩器之间传递(及其序列化)的大量数据。查看文件系统写入计数器来识别它。
b)存在严重的数据倾斜和大量数据到达单个减缩器。

 类似资料:
  • 我试图在hadoop中运行一个程序,但我一直得到: 线程“main”java.lang.unsupportedClassVersionError:hadoop_project_16/aggregatejob:不支持major.minor版本52.0在java.lang.ClassLoader.DefineClass1(本机方法)在java.lang.ClassLoader.DefineClass(

  • 问题内容: 我已使用以下语句使用此博客中的java文件创建了jar文件 现在我已经尝试通过命中和尝试各种命令在hadoop中运行此jar 1个 输出: 2。 输出: 如何在hadoop中运行jar?根据程序需要,我具有正确的DFS位置。 问题答案: 我能够重现您的问题。问题是您要在哪里创建罐子。 基本上,要打包到jar中的目录在查找主类文件时会混淆jar文件。相反,如果您尝试这样做: 例如,将类文

  • 一个spark有一个oracle查询。所以我必须并行运行多个作业,以便所有查询都将同时激发。 如何并行运行多个作业?

  • 默认情况下,所有设置都是。如何启用同时运行的多个作业?

  • 最后,/很快将在除IE以外的所有主要浏览器中得到支持。因此,现在我们可以开始使用/编写更易读的代码,但是有一个问题。很多人像这样使用异步等待:

  • 我有一个作业流,我希望以以下方式运行它: 作业流将从Job1开始。在Job1成功完成后,Job1将同时启动Job2和Job4。 Job2和Job4将并行运行。 在Job2成功完成后,Job2将启动Job3。 在Job4成功完成后,Job4将启动Job5。 下面是job1.xml和job1的作业启动器类的代码片段: job1.xml uijobLauncher.java “job2,Job3”对和“