我在本地主机上部署了一个web应用程序。另外,我的pc中的hortonworks沙盒中有一个mapreduce作业(cleandata.jar)。如何从web应用程序调用mapreduce.jar?我正尝试用jsch y channel exec来实现这一点,以便对虚拟机执行一个调用系统,这是可行的。有没有更优雅/简单的方式?
v64noz0r1#
我没有使用hortonworks沙盒,但以编程方式启动yarn(和mapreduce)应用程序的正确方法是使用 YarnClient java类。这是相当复杂的困难,因为你需要知道一些hadoop内部来做到这一点。首先,您应该具有对resourcemanager、NodeManager、datanodes和namenode的网络访问权限。接下来,您应该根据 hdfs-site.xml 以及 yarn-site.xml 您可能会在沙盒中找到文件(您可以复制它们并将它们放入您的webapp的classpath)。你可以看看这里:https://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-site/writingyarnapplications.html注意,如果集群是安全的,那么提交作业的webapp必须在java扩展安全性(jce)上运行,并且应该使用 UserGroupInformation .
YarnClient
hdfs-site.xml
yarn-site.xml
UserGroupInformation
1条答案
按热度按时间v64noz0r1#
我没有使用hortonworks沙盒,但以编程方式启动yarn(和mapreduce)应用程序的正确方法是使用
YarnClient
java类。这是相当复杂的困难,因为你需要知道一些hadoop内部来做到这一点。首先,您应该具有对resourcemanager、NodeManager、datanodes和namenode的网络访问权限。接下来,您应该根据hdfs-site.xml
以及yarn-site.xml
您可能会在沙盒中找到文件(您可以复制它们并将它们放入您的webapp的classpath)。你可以看看这里:https://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-site/writingyarnapplications.html
注意,如果集群是安全的,那么提交作业的webapp必须在java扩展安全性(jce)上运行,并且应该使用
UserGroupInformation
.