我有一个运行Hadoop 2.6的Hadoop集群。我想并行提交多个作业。我想知道我是否应该简单地提交多个作业并让集群处理其余的工作,或者我应该将它们编写为 yarn 应用程序。事实上,我对 Yarn 应用程序开发不是很熟悉,并且确切地知道它与常规 Hadoop 应用程序有何不同。
您可以使用 MR1 和 YARN 运行 MR 作业。 YARN has nothing to do with job parallelism.
它只是一个用于运行各种作业的框架。
使用 oozie 工作流或 shell 脚本并行运行作业。
你可以定义oozie工作流,mapreduce作业被分叉。以下是来自apache oozie文档的示例。
<workflow-app name="sample-wf" xmlns="uri:oozie:workflow:0.1">
...
<fork name="forking">
<path start="firstparalleljob"/>
<path start="secondparalleljob"/>
</fork>
<action name="firstparallejob">
<map-reduce>
<job-tracker>foo:9001</job-tracker>
<name-node>bar:9000</name-node>
<job-xml>job1.xml</job-xml>
</map-reduce>
<ok to="joining"/>
<error to="kill"/>
</action>
<action name="secondparalleljob">
<map-reduce>
<job-tracker>foo:9001</job-tracker>
<name-node>bar:9000</name-node>
<job-xml>job2.xml</job-xml>
</map-reduce>
<ok to="joining"/>
<error to="kill"/>
</action>
<join name="joining" to="nextaction"/>
...
</workflow-app>