Oozie:从Oozie <java>操作启动Map-Reduce?
我正在尝试使用<java>
操作在Oozie工作stream中执行Map-Reduce任务。
O'Reilley的Apache Oozie (伊斯兰和斯里尼瓦桑2015)指出:
虽然不推荐使用Java操作,但可以使用Java操作来运行Hadoop MapReduce作业,因为MapReduce作业毕竟是Java程序。 被调用的主类可以是Hadoop MapReduce驱动程序,可以调用Hadoop API来运行MapReduce作业。 在这种模式下,Hadoop根据需要生成更多的映射器和reducer,并在集群上运行它们。
但是,我没有成功使用这种方法。
工作stream中的操作定义如下所示:
<java> <!-- Namenode etc. in global configuration --> <prepare> <delete path="${transformOut}" /> </prepare> <configuration> <property> <name>mapreduce.job.queuename</name> <value>default</value> </property> </configuration> <main-class>package.containing.TransformTool</main-class> <arg>${transformIn}</arg> <arg>${transformOut}</arg> <file>${avroJar}</file> <file>${avroMapReduceJar}</file> </java>
工具实现的main()
实现如下所示:
public static void main(String[] args) throws Exception { int res = ToolRunner.run(new TransformTool(), args); if (res != 0) { throw new Exception("Error running MapReduce."); } }
上面的工作stream程每次都会出现“Error running MapReduce”exception。 我如何获得MapReduce的输出来诊断问题? 使用此Tool
运行MapReduce应用程序有问题吗? 我是否使用错误的API调用?
我非常不愿意使用Oozie <map-reduce>
操作,因为工作stream程中的每个操作都依赖于几个单独版本的AVRO架构。
这里有什么问题? 我正在使用“新” mapreduce
API的任务。
感谢您的帮助。
>我如何得到MapReduce的输出…
回到基础。
由于您不在乎提及哪个版本的Hadoop以及您正在使用哪个版本的Oozie,因此我将假定“最近”设置(例如Hadoop 2.7 w / TimelineServer和Oozie 4.2)。 而且由于你没有提到你使用的是哪一种接口(命令行本地Oozie / Yarn UI?色调?),我将举几个例子,使用good'old'CLI。
> oozie jobs -localtime -len 10 -filter name=CrazyExperiment
显示“CrazyExperiment”工作stream程的最后10次执行,以便您可以在下一个命令中注入相应的“作业ID”。
> oozie job -info 0000005-151217173344062-oozie-oozi-W
从Oozie的angular度显示执行的状态。 如果你的Java动作卡在PREP模式,那么Oozie没有提交给YARN; 否则你会在“外部ID”下find类似job_1449681681381_5858
东西。 但要小心! job
前缀是遗留问题; 实际的YARN ID是application_1449681681381_5858
。
> oozie job -log 0000005-151217173344062-oozie-oozi-W
显示Oozie日志,可以预期。
> yarn logs -applicationId application_1449681681381_5858
显示AppMaster(容器#1)和Java动作启动器(容器#2)的合并日志 – 执行结束后。 Launcher的stdout日志包含了一大堆Ooziedebugging的东西,真正的stdout在最底层。
如果你的Java动作成功产生了另外一个YARN作业,并且你仔细地显示了子应用程序的ID,那么你应该能够在那里检索它并且运行另一个yarn logs
命令。
享受你的未来5天的debugging;-)
- Apache Spark和Apache Flink有什么区别?
- 使用mapred或mapreduce包来创buildHadoop作业会更好吗?
- 在hadoop中将文件读取为单个logging
- 无法在hadoop二进制path中findwinutils二进制文件
- 如何在HIVE脚本中设置variables
- 如何selectCassandra,Membase,Hadoop,MongoDB,RDBMS等?
- Hadoop java.io.IOException:Mkdirs无法创build/某些/path
- 如何在不删除源文件的情况下将数据从HDFS加载到configuration单元?
- OSX上的Hadoop“无法从SCDynamicStore加载领域信息”