官网地址:spark 参数
spark-default.conf < 命令行< 代码内部设置参数, 对于一常用的参数可以放在配置文件,对于一些个性化参数则通过 命令行传递比较好。
命令行传递参数,有一些快捷方式,比如 --driver-memory 类似的参数, 其实这只是对特别常用的参数做了额外的精简化, 除此之外还有另一种最底层的传递方式那就是 --conf k=v
Spark Properties 控制大多数应用程序设置,并可为每个应用程序单独配置。支持的参数可以在本文最上方的连接处找到
val conf = new SparkConf()
.setMaster("local[2]")
.setAppName("CountingSheep")
.set("任意支持的key","value")
val sc = new SparkContext(conf)
动态加载参数,意思就是通过命令行动态的为程序设置运行参数,这也是最为灵活的一种。也是开发中最常见的,一般需要以下两个步骤。
spark-submit
--master yarn
-deploy-mode cluster
--class com.boke.entry.Main
--conf spark.shuffle.service.enabled=true #开启shuffer
--conf spark.dynamicAllocation.enabled=false #是否开启动态资源分配
--conf spark.dynamicAllocation.minExecutors=1 #最小分配数量
--conf spark.dynamicAllocation.maxExecutors=4 #最大分配数量
--conf spark.dynamicAllocation.executorIdleTimeout=60s #超时检测
--conf spark.dynamicAllocation.initialExecutors=3 #初始化分配数量
--conf spark.driver.memory=2g #等同于--driver-memory
--conf spark.executor.memory=2g # 等同于--executor-memory
--conf spark.executor.instances=4# 等同于--num-executors
--conf spark.app.name=SparkTest # 等同于 --name SparkTest
--conf spark.yarn.jars=hdfs://xxx:9000/yarn-jars/*.jar
/usr/local/alg/graph-algorithm-1.0-SNAPSHOT.jar
重点说下 spark.yarn.jars 这个参数的意思是放弃读取spark安装目录下的…/jars/目录,转而读取hadoop的目录,要求将
spark安装目录中的…/jars/下的所有jar包上传到指定的hdfs目录,此目录也可以放别的依赖jar
比如jdbc的包,或者任何你代码中用到的第三方的jar,好处是jar容易管理, 打包的时候不需要将第三方的依赖jar打进去, 只需要源码包即可,
注意我的集群用的是9000端口,你可能用的是8020。
请在hdfs-site.xml 找到:
<property>
<name>dfs.namenode.rpc-address.hdfs-cluster.nn1</name>
<value>xxx:9000</value>
</property>
目前大多数的集群都是8020端口