我正在将现有的管道从spark 1.6.0迁移到spark 2.1.0(cdh 5.15.1)。我正在使用的oozie版本(4.1.0)不支持spark2操作,因此我们使用java操作运行spark2作业。
通过java操作成功执行了作业,但我面临的一个问题是每当oozie工作流被杀死时,火花应用程序都不会被杀死,特别是在运行集群模式时。
我可以理解java动作在一个单独的容器中启动spark驱动程序,这是一个单独的jvm进程。只是想了解是否有办法处理这种情况。
我很确定这就是所有作为MapReduce作业运行的Oozie操作所发生的事情。我遇到过与Hive2操作相同的问题。
来自O'Reilly的“Apache Oozie”
如果工作流的任何执行路径到达终止节点,Oozie将立即终止工作流,使所有正在运行的操作失败...并将工作流的完成状态设置为KILLED。值得注意的是,Oozie不会明确地杀死与这些操作相对应的Hadoop集群上当前运行的MapReduce作业。
关于Java行动
此操作作为单个映射器作业运行....