当我查看日志时,我发现我的ooziejava操作实际上是在多台机器上运行的。我想那是因为他们被包裹在m/r工作中(是否正确)有没有办法只在整个集群上执行java操作的一个示例?
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特有的特性。
_0001
_0002
/etc/hadoop/conf/*-site.xml
oozie.launcher.yarn.app.mapreduce.am.command-opts
oozie.launcher.mapreduce.map.java.opts
oozie.launcher.mapreduce.job.queuename
1条答案
按热度按时间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特有的特性。