一般设置写在外面,代码执行优先级最高
image.png
image.png
image.png
设置main class
在pom写入main,适合单个main

不设置main class

环境准备

准备Hadoop配置

  • Hadoop相关配置文件
  • Export HADOOP_CONF_DIR
  • 复制hadoop配置到SPARK_HOME/conf

kerberos相关

  • Spark配置spark.yarn.keytab |—keytab
  • Spark配置spark.yarn.Principal |—principal
  • 多个hdfs集群需要配置spark.yarn.access.hadoopFileSystems=nn1,nn2

2.4中kerberos生命周期由Application master维护 client任务启动,RM会启动AM生成token,同时AM同步HDFS并将token保存,发送给executor

准备Hive配置

Driver CLASS_PATH需要有hive-site.xml

  • 复制hive-site.xml 到SPARK_HOME/conf(需保证有hivemetastore地址及端口,默认9083)
  • 打包的时候带入hive-site.xml(不推荐)
  • Spark打包的hive版本和集群版本需要一致
  • 通过设置spark.sql.hive.metastore.jars=/hive/jar/*

常用进阶配置
1.设置启动时的JVM参数

  • spark.yarn.am.extraJavaOptions
  • spark.driver.extraJavaOptions
  • spark.executor.extraJavaOptions

2.设置spark.yarn.dist.files可以把executor代码运行需要文件分发

本地文件分发到各节点 同:spark-submit —files

3.eventlog相关配置,可以方便诊断

  • spark.eventLog.enabled
  • spark.eventLog.dir(hdfs路径必须带上schema,否则默认访问本地文件系统)

Spark读取配置优先级

1.读取代码设置
2.提交任务使用 —conf设置
3.spark-defaults.conf

image.png
image.png
将pattern内开头的包替换为shaded下的
image.png
过滤包

mvn package -DskipTests
image.png

image.png
spring与driver在一个节点
image.png
hadoop相关配置经常改动,so不放在spark下,采用环境变量的方式导入进去
image.png

spark-submit启动方式会将spark下的jars加到classpath里
image.png
image.png
image.png
image.png
image.pngimage.png
验证:
image.png