在 EMR 上运行 python spark

Posted

技术标签:

【中文标题】在 EMR 上运行 python spark【英文标题】:Running python spark on EMR 【发布时间】:2016-09-20 17:33:01 【问题描述】:

我们很难 作业。

aws emr add-steps --cluster-id j-XXXXXXXX --steps \
Type=CUSTOM_JAR,Name="Spark Program",\
Jar="command-runner.jar",ActionOnFailure=CONTINUE,\ 
Args=["spark-submit",--deploy-mode,cluster,--master,yarn,s3://XXXXXXX/pi.py,2]

我们正在运行相同的pyspark compute pi script as the AWS page suggests

此脚本运行,但它会一直运行以计算 pi。在本地机器上需要几秒钟才能完成。我们也尝试过客户端模式。在客户端模式下,它使我们在本地传输文件。

16/09/20 15:20:32 INFO Client: 
     client token: N/A
     diagnostics: N/A
     ApplicationMaster host: N/A
     ApplicationMaster RPC port: -1
     queue: default
     start time: 1474384831795
     final status: UNDEFINED
     tracking URL: http://XXXXXXX.ec2.internal:20888/proxy/application_1474381572045_0002/
     user: hadoop
16/09/20 15:20:33 INFO Client: Application report for application_1474381572045_0002 (state: ACCEPTED)
Repeats this last command over and over...

有谁知道如何在 EMR 上运行 example python spark pi 脚本而不使其永远运行?

【问题讨论】:

【参考方案1】:

当您看到作业永远处于 ACCEPTED 状态时,这意味着它实际上并没有在运行,而是在等待 YARN 有足够的资源来运行应用程序。通常这是因为您已经有一些其他 YARN 应用程序正在运行并占用资源。找出是否是这种情况的最简单方法是查看主节点端口 8088 上的 YARN ResourceManager。如果你已经 ssh'ed 到主节点,你也可以运行命令“yarn application -list”。

【讨论】:

我们使用最小的实例类型来测试并查看 pyspark 是否工作,然后再继续。事实证明,m1.medium 太小,甚至无法在 aws 网站上运行示例作业。我永远不会猜到这一点。谢谢乔纳森。

以上是关于在 EMR 上运行 python spark的主要内容,如果未能解决你的问题,请参考以下文章

在不使用 aws 凭据的情况下连接 Redshift 和 Python(在 emr 上运行)

获取VS代码Python扩展以连接到远程AWS EMR主节点上运行的Jupyter。

无法在正在运行的 EMR 上执行步骤

使用 python MRJob 在 EMR 上引导库

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

尝试为在 Amazon EMR 上运行的 Pyspark 安装 pandas