我在 Oozie 有一份协调员的工作。它使用 java 操作节点调用工作流。
如果我只提交一次这份工作,那么它就可以完美运行。但是,如果我两次以相同的开始和结束时间提交此作业,但主类的 arg1 不同,则两个作业实例都卡在“RUNNING”状态,日志如下所示:
>>> Invoking Main class now >>>
Heart beat
Heart beat
Heart beat
Heart beat
...
如果我终止其中一项工作,那么另一项工作将再次开始运行。
该文档指出,可以使用不同的参数提交同一协调器作业的多个实例:http://archive.cloudera.com/cdh/3/oozie/CoordinatorFunctionalSpec.html#a6.3._Synchronous_Coordinator_Application_Definition
“并发:该作业可以同时运行的最大操作数。 此值允许实现和提交协调器应用程序的多个实例 ,并允许操作 catch 延迟处理。默认值为 1 。”
那么我做错了什么?我什至看到来自同一作业的两个工作流操作实例处于“正在运行”状态,一旦另一个作业被终止,它就可以正常运行。
最佳答案
好的,我发现了问题。它与 HBase 并发和集群中没有足够的任务槽有关。在 mapred-site.xml 文件中设置以下属性可解决此问题:
<name>mapred.tasktracker.map.tasks.maximum</name>
<value>50 </value>
与此问题类似:https://groups.google.com/a/cloudera.org/forum/?fromgroups=#!topic/cdh-user/v0BHtQ0hlBg
关于hadoop - 在 oozie 中多次提交相同的协调员工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14634285/