spark3.x集群设置s3a配置保证SparkLauncher集群模式提交saprk任务时能够从minio上拿到jar包
时间: 2024-06-11 15:04:36 浏览: 140
在spark3.x集群中,可以通过以下步骤设置s3a配置,以保证SparkLauncher集群模式提交spark任务时能够从minio上拿到jar包:
1. 在Spark集群的每个节点上安装AWS SDK for Java,并将aws-java-sdk和hadoop-aws的jar文件添加到Spark类路径中。
2. 在Spark集群的每个节点上配置AWS认证信息,包括access key和secret key。可以通过以下方式:
- 在每个节点上创建~/.aws/credentials文件,并将access key和secret key写入文件中。例如:
```
[default]
aws_access_key_id = AKI**************
aws_secret_access_key = 9jr************************************
```
- 在每个节点上设置环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY。
3. 在Spark集群的每个节点上修改core-site.xml配置文件,添加以下内容:
```
<property>
<name>fs.s3a.access.key</name>
<value>AKI**************</value>
</property>
<property>
<name>fs.s3a.secret.key</name>
<value>9jr************************************</value>
</property>
<property>
<name>fs.s3a.endpoint</name>
<value>http://minio:9000</value>
</property>
<property>
<name>fs.s3a.path.style.access</name>
<value>true</value>
</property>
```
其中,fs.s3a.access.key和fs.s3a.secret.key为AWS认证信息,fs.s3a.endpoint为minio的访问地址,fs.s3a.path.style.access为true表示使用路径方式访问。
4. 在SparkLauncher中设置提交Spark任务时的主类、jar包、参数等信息,并将minio作为文件系统的默认文件系统。例如:
```
SparkConf conf = new SparkConf()
.setAppName("example")
.setMaster("yarn")
.set("spark.hadoop.fs.defaultFS", "s3a://")
.set("spark.hadoop.fs.s3a.endpoint", "http://minio:9000")
.set("spark.hadoop.fs.s3a.access.key", "AKI**************")
.set("spark.hadoop.fs.s3a.secret.key", "9jr************************************");
SparkLauncher launcher = new SparkLauncher(conf)
.setAppResource("s3a://bucket/example.jar")
.setMainClass("example.Main")
.addAppArgs("arg1", "arg2")
.setMaster("yarn")
.setDeployMode("cluster")
.setVerbose(true)
.startApplication();
```
其中,setAppResource设置jar包的路径,addAppArgs设置参数,setMaster和setDeployMode设置集群模式,setVerbose设置详细输出。
通过以上步骤,可以在SparkLauncher集群模式下成功从minio上拿到jar包并提交Spark任务。
阅读全文
相关推荐


















