hadoop - Oozie - 有没有办法在整个集群上只执行一个 java 操作实例?

标签 hadoop hadoop-yarn oozie

当我查看我的日志时,我发现我的 oozie java 操作实际上在多台机器上运行。

我认为这是因为它们被包裹在 m/r 作业中? (这是正确的吗)

有没有办法在整个集群上只执行一个 java 操作实例?

最佳答案

Java 操作在 Oozie“启动器”作业中运行,只有一个 YARN“映射”容器

诀窍在于每个 YARN 作业都需要一个应用程序主 (AM) 容器 进行协调。
所以你最终有 2 个容器,_0001 用于 AM 和 _0002 用于 Oozie 操作,可能在不同的机器上。

要控制每个资源的分配,您可以设置以下操作属性来覆盖您的 /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 和操作。

我不知道他们是怎么做到的。也许某处有一个通用的 YARN 配置,也许它是 Cloudera 特定的功能。

关于hadoop - Oozie - 有没有办法在整个集群上只执行一个 java 操作实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39043780/

相关文章:

hadoop - 'distcp' 和 'distcp -update' 之间的区别?

java - Spring Boot YARN 不运行在 Hadoop 2.8.0 客户端无法访问 DataNode

ruby-on-rails - Capistrano 在预编译 Assets 时找不到操作文本 css 文件

hadoop - Oozie工作流文件看不到开始步骤,错误E0701

hadoop - oozie可以在hdfs目录中监视目录中是否有新文件吗?

java - MapReduce ArrayList 类型不匹配

Hadoop Ha namenode java 客户端

hadoop - 从 S3 读取超过 500GB 的数据并将 400GB 输出保存到 S3 是个好主意吗?

hadoop - 我的资源管理器没有开放端口 8032 是什么意思?

hadoop - Hortonworks的Cloudera Hue替代品