在远程服务器上执行hadoop作业,并从pythonwebservice获取其结果

d8tt03nd  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(482)

我有一个打包在jar文件中的hadoop作业,可以使用命令行在服务器中执行,并使用命令行将结果存储在服务器的hdfs中。
现在,我需要用python(tornado)创建一个web服务,该服务必须执行hadoop作业并获得结果以将它们呈现给用户。web服务托管在其他服务器上。
我用python脚本搜索了很多关于从服务器外部调用作业的信息,但不幸的是没有答案。
有人能解决这个问题吗?
谢谢

v1uwarro

v1uwarro1#

一种选择是在webservice服务器中使用与hadoop集群中相同的配置安装hadoop的二进制文件。你需要这样才能和集群对话。你不需要在那里吃hadoop执事。至少配置hadoop\u home、hadoop\u config\u dir、hadoop\u libs并正确设置path环境变量。
您需要二进制文件,因为您将使用它们提交作业和配置,以告诉hadoop客户机集群(namenode和resourcemanager)在哪里。
然后在python中,可以使用subprocess执行hadoop jar命令:https://docs.python.org/2/library/subprocess.html
您可以将作业配置为在作业完成时使用回调通知服务器:https://hadoopi.wordpress.com/2013/09/18/hadoop-get-a-callback-on-mapreduce-job-completion/
最后,您可以使用webhdfs(hdfs web api)或一些python hdfs包在hdfs中读取结果,如:https://pypi.python.org/pypi/hdfs/

相关问题