【问题标题】:How to create a Spark Streaming jar that would work in AWS EMR?如何创建适用于 AWS EMR 的 Spark Streaming jar?
【发布时间】:2014-07-19 10:39:44
【问题描述】:

我一直在用 Eclipse 开发一个Spark Streaming 应用程序,并且我正在使用 sbt 在本地运行它。

现在我想使用 jar 在 AWS 上部署应用程序,但是当我尝试使用 sbt 的命令 package 时,它会创建一个没有所有依赖项的 jar,所以当我将它上传到 AWS 时它不会工作,因为斯卡拉失踪了。

有没有办法用 SBT 创建一个 uber-jar?我在 AWS 上部署 Spark 有什么问题吗?

【问题讨论】:

  • 你检查过sbt-assembly 吗?
  • 我现在正在做,但是在合并阶段它总是给我带来重复数据删除错误的问题。
  • 您可能需要查看有关在 Elastic MapRedcue 服务上运行 Spark 的技术文章 - aws.amazon.com/articles/Elastic-MapReduce/4926593393724923
  • 我读了那篇文章,但它没有说明如何上传和启动我的应用程序,它只是看到了如何启动一个示例。

标签: eclipse scala amazon-web-services sbt apache-spark


【解决方案1】:

要使用 sbt 创建 uber-jar,请使用 sbt 插件 sbt-assembly。有关使用 sbt-assembly 创建 uber-jar 的更多详细信息,请参阅 the blog post

创建后,您可以使用 java -jar 命令运行程序集 jar。

但是从 Spark-1.0.0 开始,Spark 的 bin 目录中的 spark-submit 脚本用于在集群上启动应用程序 for more details refer here

【讨论】:

  • 是的,我读到了,我还阅读了有关昨天发布的新版本的所有文档。问题是,正如您从我的问题标题中看到的那样,我想让它在 AWS EMR 而不是任何集群上运行。我知道 Spark 包含用于启动和使用 EC2 集群的脚本,但这不是我想做的。
【解决方案2】:

你真的应该关注Running Spark on EC2,上面写着:

位于 Spark 的 ec2 目录中的 spark-ec2 脚本允许您 在 Amazon EC2 上启动、管理和关闭 Spark 集群。它 自动为您在集群上设置 Spark、Shark 和 HDFS。 本指南介绍如何使用 spark-ec2 启动集群,如何 在它们上运行作业,以及如何关闭它们。它假设你已经 在 Amazon Web Services 网站上注册了一个 EC2 帐户。

我只是部分关注了该文档,因此我无法评论它的编写情况。

另外,根据Shipping Code to the Cluster另一篇文档中的章节:

将代码发送到集群的推荐方法是传递它 通过 SparkContext 的构造函数,它接受一个 JAR 文件列表 (Java/Scala) 或 .egg 和 .zip 库 (Python) 传播到 工作节点。您还可以动态添加要发送到的新文件 带有 SparkContext.addJar 和 addFile 的执行器。

【讨论】:

  • "将代码传送到集群的推荐方法是通过 SparkContext 的构造函数传递它" 那么如何创建那个 jar?我应该如何通过 SparkContext 传递它?无论如何,我的计划是让它在 EMR 而不是 EC2 上运行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-26
  • 1970-01-01
  • 2017-10-20
  • 2015-10-06
  • 2017-11-30
  • 2023-04-04
相关资源
最近更新 更多