[EDP] 改进 Java 类型兼容性¶
https://blueprints.launchpad.net/sahara/+spec/edp-improve-compatibility
目前,EDP MapReduce (Java 类型) 示例必须添加修改才能在 Oozie 工作流中的 Java action 中使用。
此 bp 的目标是允许用户无需修改应用程序即可从其他 Hadoop 集群迁移到 Sahara。
问题描述¶
用户需要按照以下方式修改他们的 MapReduce 程序
添加 conf.addResource 以读取 Oozie 工作流中指定的 <configuration> 标签中的配置值
// This will add properties from the <configuration> tag specified // in the Oozie workflow. For java actions, Oozie writes the // configuration values to a file pointed to by ooze.action.conf.xml conf.addResource(new Path("file:///", System.getProperty("oozie.action.conf.xml")));
消除 System.exit,以符合 Oozie Java action 的以下限制。例如,随 Apache Hadoop 捆绑的 hadoop-examples.jar 已经使用了 System.exit。
首先,用户将尝试使用示例和/或在其他 Hadoop 集群(例如 Amazon EMR)上执行的一些应用程序来启动作业。我们应该支持上述用户。
提议的变更¶
我们将提供一种新的作业类型,称为 Java EDP Action,它将覆盖由 main_class 指定的主类。覆盖类添加属性并调用原始 main 方法。该类还会捕获由 System.exit 引起的异常。
替代方案¶
根据 Oozie 文档,Oozie 4.0 或更高版本提供了覆盖 action 的 Main 类的方法 (3.2.7.1)。 提议的实现比使用 Oozie 功能更简单。(我们将实现此功能,而无需任何 Oozie 库的依赖。)
数据模型影响¶
无
REST API 影响¶
无
其他最终用户影响¶
用户将不再需要修改他们的应用程序来使用 EDP。
部署者影响¶
无
开发者影响¶
无
Sahara-image-elements impact¶
无
Sahara-dashboard / Horizon 影响¶
sahara-dashboard / horizon 需要添加这种新的作业类型。
实现¶
负责人¶
主要负责人:大川和树 (k.oikw)
其他贡献者:山田裕二 (yamada-yuji)
工作项¶
添加新的作业类型 (Java.EDP)
Java.EDP 将是 Java 的子类型
实现将覆盖类的 jar 文件上传到 HDFS
实现创建 workflow.xml
实现覆盖类
依赖项¶
无
测试¶
我们将添加一个集成测试。此测试检查随 Apache Hadoop 捆绑的 WordCount 示例是否成功执行。
文档影响¶
如果 EDP 示例使用此功能,则需要更新文档。
参考资料¶
Oozie 中的 Java action http://oozie.apache.org/docs/4.0.0/WorkflowFunctionalSpec.html#a3.2.7_Java_Action