tri*_*oid 49 hadoop amazon-s3 apache-spark
Hadoop 2.6不支持开箱即用的s3a,所以我尝试了一系列解决方案和修复,包括:
部署与hadoop-aws和aws-java-sdk =>无法读取环境变量的凭据将hadoop-aws添加到maven =>各种传递依赖冲突
有没有人成功地使两者都有效?
cfe*_*uke 46
经历了第三手s3a和s3n之间的差异 - 在s3a上传输的7.9GB数据大约是7分钟,而s3n上的7.9GB数据花费了73分钟[不幸的是,在这两种情况下,us-east-1到us-west-1; Redshift和Lambda在这个时候是us-east-1]这是一个非常重要的堆栈,以获得正确的,值得沮丧.
以下是截至2015年12月的关键部分:
您的Spark群集将需要Hadoop 2.x或更高版本.如果你使用Spark EC2设置脚本并且可能错过了它,那么使用1.0以外的东西的开关是指定的--hadoop-major-version 2(在撰写本文时使用CDH 4.2).
对于Hadoop的版本,你需要在最初的2.7.1(稳定版)中包含最初似乎是过时的AWS SDK库(2014年版本为1.7.4):aws-java-sdk 1.7 0.4.据我所知,使用它与特定的AWS SDK JARs for 1.10.8没有破坏任何东西.
你还需要类路径上的hadoop-aws 2.7.1 JAR.这个JAR包含该类org.apache.hadoop.fs.s3a.S3AFileSystem.
在spark.properties你可能想一些设置,如下所示:
spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem  
spark.hadoop.fs.s3a.access.key=ACCESSKEY  
spark.hadoop.fs.s3a.secret.key=SECRETKEY
我已经通过这个过程完成了我写的一篇文章,详细列出了这个列表.此外,我已经涵盖了我在此过程中遇到的所有异常情况以及我认为是每种情况的原因以及如何解决它们.
mrs*_*vas 16
我写这个答案与访问文件S3A从星火2.0.1上的Hadoop 2.7.3
复制默认情况下随Hadoop一起提供的AWS jar(hadoop-aws-2.7.3.jar和aws-java-sdk-1.7.4.jar)
提示:如果罐子的位置不确定?运行find命令作为特权用户可能会有所帮助,命令可以是..
 find / -name hadoop-aws*.jar
 find / -name aws-java-sdk*.jar
进入火花类路径,其中包含所有火花罐
提示:我们不能直接指向位置(它必须在属性文件中),因为我想要为发行版和Linux风格做出通用答案.spark classpath可以通过下面的find命令识别
 find / -name spark-core*.jar
spark-defaults.conf提示:(大多数情况下会被放入/etc/spark/conf/spark-defaults.conf)
#make sure jars are added to CLASSPATH
spark.yarn.jars=file://{spark/home/dir}/jars/*.jar,file://{hadoop/install/dir}/share/hadoop/tools/lib/*.jar
spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem  
spark.hadoop.fs.s3a.access.key={s3a.access.key} 
spark.hadoop.fs.s3a.secret.key={s3a.secret.key} 
#you can set above 3 properties in hadoop level `core-site.xml` as well by removing spark prefix.
如果需要,在spark提交中包括jar(aws-java-sdk和hadoop-aws)--driver-class-path.
spark-submit --master yarn \
  --driver-class-path {spark/jars/home/dir}/aws-java-sdk-1.7.4.jar \
  --driver-class-path {spark/jars/home/dir}/hadoop-aws-2.7.3.jar \
  other options
注意:
在运行
find命令之前,请确保Linux用户具有读取权限, 以防止错误权限被拒绝
Chr*_*rts 13
我使用带有hadoop 2.6的Spark 1.4.1预构建二进制文件,确保你设置它们spark.driver.extraClassPath并spark.executor.extraClassPath指向两个jar(hadoop-aws和aws-java-sdk)如果你在集群上运行,请确保你的执行者有权访问到群集上的jar文件.
小智 9
我们正在使用带有Mesos的spark 1.6.1,我们在从spark写入S3时遇到了很多问题.我赞同cfeduke的答案.我做的微小改动是将maven坐标添加到spark-defaults.conf文件中的spark.jar配置中.我尝试使用hadoop-aws:2.7.2但仍然遇到很多错误,所以我们回到了2.7.1.以下是spark-defaults.conf中对我们有用的更改:
spark.jars.packages             net.java.dev.jets3t:jets3t:0.9.0,com.google.guava:guava:16.0.1,com.amazonaws:aws-java-sdk:1.7.4,org.apache.hadoop:hadoop-aws:2.7.1
spark.hadoop.fs.s3a.impl        org.apache.hadoop.fs.s3a.S3AFileSystem
spark.hadoop.fs.s3a.access.key  <MY ACCESS KEY>
spark.hadoop.fs.s3a.secret.key  <MY SECRET KEY>
spark.hadoop.fs.s3a.fast.upload true
感谢cfeduke花时间写你的帖子.这非常有帮助.
以下是截至2016年10月的细节,如Spark Summit EU:Apache Spark和Object Stores.
关键点
产品放置:HADOOP-11694的读取性能方面包含在HDP2.5中; 该Spark和S3的文件有可能是利益-尤其是在调优选项.
| 归档时间: | 
 | 
| 查看次数: | 57579 次 | 
| 最近记录: |