spark

关于spark的参数

2018-05-01  本文已影响29人  Frank_8942

Spark provides three locations to configure the system

=> 1. Spark properties control most application parameters and can be set by using a SparkConf object, or through Java system properties.

每一个spark程序都由 sparkConf 对象来构建的, 此 sparkConf 就是存储各种参数的map集合; 或者通过 Java 系统属性来设置

=> 2. Environment variables can be used to set per-machine settings, such as the IP address, through the conf/spark-env.sh script on each node.

环境变量 可用于在每个节点上通过 conf/spark-env.sh 脚本来设置每台机器设置

=> 3. Logging can be configured through log4j.properties.

Logging 可以通过 log4j.properties 来设置

如何构建 sparkConf 对象

sparkConf 对象可以从3个位置接收参数数据(优先级由低到高):  spark-defaults.conf 文件,  spark-submit 或 spark-shell 命令行上的参数设置, 代码中设置的参数;

=> 命令行设置: spark-submi --master local[4] --conf spark.eventLog.enabled=false

=> 代码中设置: new SparkConf().setMaster("local[2]").setAppName("CountingSheep")

查看 spark-submit --help

这个自己百度   :)

如何解决Spark程序第三方jar包依赖

=>第一种方式: 第三方jar包体积比较小,可以直接打包分发到各个节点上去;

注: 将第三方jar直接打包到最终形成的spark应用程序jar文件中, 最终生成的jar包大小最好别超过80M;

操作: 在maven的pom文件中, 将需要打包的jar设置为<scope>compile</scope>, 同时构建好builder;

=>第二种方式: 从集群中各节点本地加载jar包, 需要在spark-submit 命令行中设置--jars参数;

注: 此方式要求本地此路径下必须要有对应的jar包;

操作: bin/spark-shell  --jars  /directoryA/directoryB/mysql-connector-java-5.1.27-bin.jar

=>第三种方式: 通过本地maven仓库加载jar包;

注: 此方式会通过maven软件去加载jar包, 默认优先在本地仓库查找,如果没有可以联网获取

操作: bin/spark-shell   --packages mysql:mysql-connector-java:5.1.27

注: maven中要定位jar包需要groupId,artifactId,version三个参数, 所以packages参数的写法是将这三个参数用 : 连接起来;

=>第四种方式: 修改SPARK_CLASSPATH环境变量

注: 此方式是第二种方式的增强版, 就是增加了spark程序加载jar包目录; 适用于依赖的jar包特别多,将所有的第三方引用的jar包统一存放到此目录下; 同时要保证每个节点都要如此设置spark参数, 并且每个节点要确实有此目录和jar文件; 

操作: 修改Spark配置信息,  vim conf/spark-env.sh, 修改内容:SPARK_CLASSPATH = $SPARK_CLASSPATH:externalClassPath

注: 推荐使用这种方式!!!

上一篇下一篇

猜你喜欢

热点阅读