Servlet执行Hadoop MapReduce作业并显示结果



我有一个tomcat服务器,有几个servlet,一个mapreduce作业(使用hadoop编写),还安装了pig,所有这些都位于hadoop所在的同一集群中。

现在,我需要我的servlet能够执行mapreduce程序(或pig脚本),并显示mapreduce程序返回的结果。有没有办法制作一个servlet来执行mapreduce作业并返回结果?

++我认为可以通过简单地调用exec或ProcessBuilder来使servlet执行mapreduce作业(或pig脚本)。如果我错了,请在这里纠正我。

++然而,mapreduce作业(或pig脚本)在HDFS中生成结果,我不确定如何返回结果并将其反馈给servlet。一种解决方案是再次使用ProcessBuilder(或exec)将结果从HDFS复制到本地,并从中读取结果,这对我来说似乎是业余的且效率低下的。

非常感谢您提出的任何建议。

您可以使用hdfs的REST接口从hdfs获取文件。

REST url看起来像

http://something.net:50070/webhdfs/v1/path/to/output

顺便说一句,要提交作业,你也可以使用oozie的客户端api来提交,而不是"exec"。Oozie的客户端api要好得多。

最新更新