如何在 Amazon EMR 集群上远程提交 hadoop MR 作业

Posted

技术标签:

【中文标题】如何在 Amazon EMR 集群上远程提交 hadoop MR 作业【英文标题】:How to submit hadoop MR job remotely on Amazon EMR cluster 【发布时间】:2018-12-06 00:23:07 【问题描述】:

当前情况:我有一个 EMR 集群。在主节点上 - 我有一个 python 程序,它执行子进程调用并执行包含以下行的脚本。子进程触发 MR 作业并将输出写入我稍后使用的 HDFS。

/usr/bin/hadoop jar test.jar testing.jobs.TestFeatureJob /in/f1.txt /in/f2.txt

我想做什么? 现在,我想解耦这部分。我想在我的笔记本电脑或单独的 EC2 实例上本地运行 python 程序,但仍将 MR 作业提交到 EMR 集群。假设我在 EMR 主节点上有 test.jar。

如何远程提交?另外,我正在使用 Python,我们还假设 JAR 是一个黑盒子。有没有我可以用来提交工作的包?是否必须提及主节点的 IP 才能运行它?

【问题讨论】:

如何创建一个接受工作输入请求的网络应用程序? @cricket_007 - 你能详细说明一下吗?这个网络应用程序将在哪里运行?如果我错了,请纠正我 - 但您的建议是创建一个在主节点上运行并接受运行 Hadoop 作业的请求的长时间运行的进程? 基本上,是的。您可以使用 EC2、EKS、AWS Lambda……任何可以接受请求并执行 Hadoop 命令的东西。 Airflow 或 Oozie 将是 Hadoop 环境中用于调度作业的选项 【参考方案1】:

基本上,一旦在远程机器上设置了 Hadoop conf,您就可以远程运行 Hadoop 或 spark。

我在此处附上 AWS 的 spark-submit 远程文档链接,但 MR 也是如此。我的意思是,一旦你完成了这些步骤,Hadoop jar 就可以工作了。

https://aws.amazon.com/premiumsupport/knowledge-center/emr-submit-spark-job-remote-cluster/

【讨论】:

以上是关于如何在 Amazon EMR 集群上远程提交 hadoop MR 作业的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Amazon EMR 上将连接器添加到 presto

Amazon EMR:Pyspark 有奇怪的依赖问题

如何在 Amazon EMR 上引导安装 Python 模块?

如何让 Zeppelin 在 EMR 集群上干净地重新启动?

如何从 Lambda 函数在亚马逊 EMR 上执行 spark 提交?

无法在 Amazon EMR 集群上使用 PIG 0.12.0 和 Hadoop 2.4.0 找到 MySql 驱动程序