在 AWS EMR 上运行 Spark 应用程序

Posted

技术标签:

【中文标题】在 AWS EMR 上运行 Spark 应用程序【英文标题】:Running Spark application on AWS EMR 【发布时间】:2014-11-18 04:26:06 【问题描述】:

我正在尝试。我按照http://blogs.aws.amazon.com/bigdata/post/Tx15AY5C50K70RV/Installing-Apache-Spark-on-an-Amazon-EMR-Cluster的说明进行操作

在引导过程中,Spark 似乎已正确安装。但是,当我的步骤运行时,我收到以下错误。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/rdd/RDD
  at SparkCCF.main(SparkCCF.scala)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:606)
  at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
Caused by: java.lang.ClassNotFoundException: org.apache.spark.rdd.RDD
  at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
  ... 6 more

我从 S3 加载了 fat-jar(通过“sbt assembly”获得)和应用程序所需的输入文件。我在 Spark-1.1.0 版本上构建了我的应用程序。 EMR 集群位于 AMI 3.2.1 和 Hadoop 2.4 上。

我们是否需要使用“Prebuilt for Hadoop 2.4”来构建 Spark 应用程序,还是只使用 Spark-1.1.0?

【问题讨论】:

【参考方案1】:

UC-AMP Lab 的说明要好一些。

https://github.com/amplab/spark-ec2#readme

【讨论】:

链接腐烂;最好的答案也会发布有用的内容。

以上是关于在 AWS EMR 上运行 Spark 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在没有 spark UI 的情况下在 AWS EMR 中监控 spark 集群

AWS EMR - IntelliJ 远程调试 Spark 应用程序

为啥 AWS EMR 上的 Spark 不从应用程序 fat jar 加载类?

AWS EMR 上的 Spark:使用更多执行器

Spark AWS emr 检查点位置

如何在多个子网上运行 AWS EMR 集群?