我有一个tomcat服务器,有几个servlet,一个mapreduce作业(使用hadoop编写),还安装了pig,所有这些都与hadoop位于同一个集群中。
现在我需要servlet能够执行mapreduce程序(或pig脚本),并显示mapreduce程序返回的结果。有没有办法让servlet执行mapreduce作业并返回结果?
++我认为只要调用exec或processbuilder,就可以让servlet执行mapreduce作业(或pig脚本)。如果我错了,请在这里纠正我。
++但是,mapreduce作业(或pig脚本)在hdfs中生成结果,这就是我不确定如何返回结果并将其反馈给servlet的地方。一种解决方案,对我来说似乎是业余和低效的,就是再次使用processbuilder(或exec)将结果从hdfs复制到本地,并从那里读取结果。
非常感谢您的建议。
1条答案
按热度按时间7fyelxc51#
您可以使用hdfs的rest接口从hdfs获取文件。
剩下的url看起来像
顺便说一句,要提交作业,还可以使用oozie的客户端api来提交,而不是使用“exec”。oozie的客户端api要好得多。