概述
随着云原生的不断发展,存算分离的大数据架构已经成为了主流。今天介绍一下如何让spark使用阿里云oss对象存储替代本地存储或者hdfs存储jar包,日志等。
环境
spark环境:
spark-3.1.3-bin-hadoop3.2
hadoop源码:
hadoop3.2
添加jar包
我使用的是spark-3.1.3-bin-hadoop3.2这个spark环境。默认的版本中是没有阿里云的相关jar包的,因此只能使用hdfs或者local。
在hadoop源码中(https://github.com/apache/hadoop),有一个hadoop-tools文件夹,下面放着的都是hadoop周边衍生工具代码,比如hadoop-aliyun是hadoop对接aliyun的,再比如hadoop-aws是hadoop对接aws的。
我们通过编译hadoop代码,可以在hadoop-aliyun/target下面得到hadoop-aliyun-3.2.0.jar,这个jar包还依赖aliyun-sdk-oss-2.8.3.jar以及jdom-1.1.jar,这两个jar包在maven的.m2仓库中可以找到,路径分别为:
~/.m2/repository/com/aliyun/oss/aliyun-sdk-oss/2.8.3/aliyun-sdk-oss-2.8.3.jar
~/.m2/repository/org/jdom/jdom/1.1/jdom-1.1.jar
将这三个jar包,放到spark-3.1.3-bin-hadoop3.2/jars下面。
因为我是基于k8s提交spark作业,所以将spark-3.1.3-bin-hadoop3.2打成docker镜像。
修改配置
放置完jar后,还需要添加一下配置才能使用。
进入spark-3.1.3-bin-hadoop3.2/conf文件夹,执行命令
vi spark-defaults.conf
在打开的文件中添加如下配置:
spark.hadoop.fs.oss.accessKeyId=LTAI5tLy5RdMDSfBghyAV2me
spark.hadoop.fs.oss.accessKeySecret=2boDk3rr9kQd5qk1yQ6tsXYQow8chP
spark.hadoop.fs.oss.impl=org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem
spark.hadoop.fs.oss.endpoint=oss-cn-hangzhou.aliyuncs.com
将ak, sk, endpoint改成你自己的。这样就可以用了。
如果想要将日志也放到oss中,还需要加上两行配置。
spark.eventLog.enabled true
spark.eventLog.dir oss://<your bucket>
如果想通过historyserver,读取oss中的日志,则需要改另一个文件,执行命令
vi spark-env.sh
在里面加入如下配置
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=10 -Dspark.history.fs.logDirectory=oss://<your bucket> -Dspark.history.fs.update.interval=10"
测试
测试一下spark-pi。将spark-3.1.3-bin-hadoop3.2/examples/jars/目录下的spark-examples_2.12-3.1.3.jar放到oss的bucket中。
执行下面的命令,提交spark-pi作业。
./spark-submit --master k8s://https://192.168.124.131:6443 --deploy-mode cluster --name spark-pi --class org.apache.spark.examples.SparkPi --conf spark.kubernetes.namespace=spark --conf spark.executor.instances=1 --conf spark.kubernetes.container.image=xingyunyang/spark:v3.1.3 --conf spark.kubernetes.authenticate.driver.serviceAccountName=sa-example oss://sparktest/jars/spark-examples_2.12-3.1.3.jar
这条命令行,前面的字段都是通用的,不是重点,重点是最后jar包的存放位置,从以前的local://换成了oss://,因此spark就可以从oss上将jar包拉下来。
最后
以上就是灵巧羽毛为你收集整理的spark对接oss对象存储环境添加jar包修改配置测试的全部内容,希望文章能够帮你解决spark对接oss对象存储环境添加jar包修改配置测试所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复