当我查看我的日志时,我发现我的oozie java操作实际上是在多台计算机上运行。
我认为那是因为他们被包裹在m / r工作中? (这是正确的)
有没有办法在整个集群上只执行一个java动作实例?
答案 0 :(得分:2)
Java动作在Oozie“启动器”作业中运行,只有一个YARN“地图”容器。
诀窍是每个YARN作业都需要应用程序主(AM)容器进行协调。
所以你最终得到2个容器,_0001
用于AM,_0002
用于Oozie操作,可能在不同的机器上。
要控制每个资源的资源分配,您可以设置以下Action属性来覆盖您的/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个容器,正如预期的那样。
我不知道他们是怎么做到的。也许在某处有一个通用的YARN配置,也许它是Cloudera特有的功能。