oozie-有没有办法让整个集群上只执行一个java操作示例?

rxztt3cl  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(418)

当我查看日志时,我发现我的ooziejava操作实际上是在多台机器上运行的。
我想那是因为他们被包裹在m/r工作中(是否正确)
有没有办法只在整个集群上执行java操作的一个示例?

oiopk7p5

oiopk7p51#

java操作在oozie“launcher”作业中运行,只有一个“map”容器。
诀窍在于,每个Yarn作业都需要一个应用程序主(am)容器来进行协调。
所以你有两个容器, _0001 对于am和 _0002 可能在不同的机器上。
要控制每个操作的资源分配,可以设置以下操作属性以覆盖 /etc/hadoop/conf/*-site.xml 配置和/或硬编码默认值(顺便说一句,它们特定于每个版本和每个发行版):
oozie.launcher.yarn.app.mapreduce.am.resource.mb oozie.launcher.yarn.app.mapreduce.am.command-opts (将最大堆大小与全局内存最大值对齐)
oozie.launcher.mapreduce.map.memory.mb oozie.launcher.mapreduce.map.java.opts (...) oozie.launcher.mapreduce.job.queuename (如果您有多个优先级不同的队列)
实际上,上面的解释并不完全正确。。。在hortonworks发行版上,您最终得到了2个容器,如预期的那样。
但是对于cloudera发行版,您通常只需要一个容器,在同一个linux进程中运行am和action。
我不知道他们是怎么做到的。也许某个地方有一个通用的Yarn配置,也许是cloudera特有的特性。

相关问题