0

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

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

++ 我认为只需调用 exec 或 ProcessBuilder 就可以使我的 servlet 执行 mapreduce 作业(或 pig 脚本)。如果我错了,请在这里纠正我。

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

非常感谢您分享的任何建议。

4

1 回答 1

1

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

REST url 看起来像

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

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

于 2013-07-02T15:19:33.147 回答