【问题标题】:AWS EMR and Spark 1.0.0AWS EMR 和 Spark 1.0.0
【发布时间】:2023-04-04 06:24:01
【问题描述】:

我最近在尝试在 AWS EMR 集群上使用 Spark 时遇到了一些问题。

我正在使用类似的东西创建集群:

./elastic-mapreduce --create --alive \
--name "ll_Spark_Cluster" \
--bootstrap-action s3://elasticmapreduce/samples/spark/1.0.0/install-spark-shark.rb \
--bootstrap-name "Spark/Shark" \
--instance-type m1.xlarge \
--instance-count 2 \
--ami-version 3.0.4

问题是,每当我尝试从 S3 获取数据时,都会出现异常。 因此,如果我启动 spark-shell 并尝试以下操作:

val data = sc.textFile("s3n://your_s3_data")

我得到以下异常:

WARN storage.BlockManager: Putting block broadcast_1 failed
java.lang.NoSuchMethodError:
com.google.common.hash.HashFunction.hashInt(I)Lcom/google/common/hash/HashCode;

【问题讨论】:

  • 他们是否只是发布了一个安装脚本而没有检查它是否有效?
  • 在他们的官方文档中,他们使用的是 Spark 0.8.1 脚本(aws.amazon.com/articles/Elastic-MapReduce/4926593393724923),但他们确实有这个 Spark 1.0.0 脚本,不确定它是否仍处于测试阶段。我认为他们应该更明确地说明他们支持哪个版本。

标签: amazon-web-services apache-spark elastic-map-reduce


【解决方案1】:

这个问题是由番石榴库引起的,

AMI 上的版本是 11,而 spark 需要版本 14。

我从 AWS 编辑了引导脚本以安装 spark 1.0.2 并在引导操作期间更新 guava 库,您可以在此处获取要点:

https://gist.github.com/tnbredillet/867111b8e1e600fa588e

即使在更新番石榴之后,我仍然遇到问题。 当我试图在 S3 上保存数据时,我抛出了一个异常

lzo.GPLNativeCodeLoader - Could not load native gpl library
java.lang.UnsatisfiedLinkError: no gplcompression in java.library.path

我通过将 hadoop 本机库添加到 java.library.path 解决了这个问题。 当我运行作业时,我添加了选项

 -Djava.library.path=/home/hadoop/lib/native 

或者如果我通过 spark-submit 运行作业,我添加

--driver-library-path /home/hadoop/lib/native 

论据。

【讨论】:

    猜你喜欢
    • 2018-04-26
    • 1970-01-01
    • 2015-10-06
    • 2018-07-07
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多