Spark三种属性配置方式详解
随着Spark项目的逐渐成熟,越来越多的可配置参数被添加到Spark中来。在Spark中提供了三个地方用于配置:
1、Sparkproperties:这个可以控制应用程序的绝大部分属性。并且可以通过SparkConf对象或者Java系统属性进行设置;
2、环境变量(Environmentvariables):这个可以分别对每台机器进行相应的设置,比如IP。这个可以在每台机器的$SPARK_HOME/conf/spark-env.sh脚本中进行设置;
3、日志:所有的日志相关的属性可以在log4j.properties文件中进行设置。
下面对这三种属性设定进行详细的说明。
一、Sparkproperties
Sparkproperties可以控制应用程序的绝大部分属性,并且可以分别在每个应用上进行设置。这些属性可以直接在SparkConf对象上设定,该对象可以传递给SparkContext。SparkConf对象允许你去设定一些通用的属性(比如masterURL、应用的名称等),这些属性可以传递给set()方法的任意key-value对。如下:
val conf= newSparkConf() .setMaster("local") .setAppName("CountingSheep") .set("spark.executor.memory","1g") val sc= newSparkContext(conf)
动态加载Spark属性
在一些场景中,你可能想避免在代码中将SparkConf对象的属性进行设死;比如,你可能想在不同的master上面或者不同内存容量运行你的应用程序。这就需要你运行程序的时候进行设置,Spark允许你创建一个空的conf对象,如下:
val sc= newSparkContext(new SparkConf())
然后你可以在运行的时候通过命令行进行一些属性的配置:
./bin/spark-submit--name"Myapp" --masterlocal[4] --confspark.shuffle.spill=false --conf"spark.executor.extraJavaOptions=-XX:+PrintGCDetails -XX:+PrintGCTimeStamps" myApp.jar
Sparkshell和spark-submit工具支持两种方式来动态加载配置属性。第一种是命令行方式,比如--master;spark-submit工具可以通过--conf标记接收任何的Spark属性。运行./bin/spark-submit--help将会显示全部的选项。
./bin/spark-submit工具也会从conf/spark-defaults.conf配置文件中读取配置选项。在conf/spark-defaults.conf配置文件中,每行是key-value对,中间可以是用空格进行分割,也可以直接用等号进行分割。如下:
spark.masterspark://iteblog.com:7077 spark.executor.memory512m spark.eventLog.enabledtrue spark.serializerorg.apache.spark.serializer.KryoSerializ
每个值将作为一个flags传递到应用中并个SparkConf对象中相应的属性进行合并。通过SparkConf对象配置的属性优先级最高;其次是对spark-submit或spark-shell通过flags配置;最后是spark-defaults.conf文件中的配置。
哪里可以查看配置好的Spark属性
在应用程序对应的WEBUI(http://
二、环境变量
有很大一部分的Spark设定可以通过环境变量来进行设定。这些环境变量设定在conf/spark-env.sh脚本文件中(如果你是windows系统,那么这个文件名称是conf/spark-env.cmd)。在Standalone和Mesos模式下,这个文件可以设定一些和机器相关的信息(比如hostname)。
需要注意,在刚刚安装的Spark中conf/spark-env.sh文件是不存在的。但是你可以通过复制conf/spark-env.sh.template文件来创建,你的确保这个复制之后的文件是可运行的。
JAVA_HOMEJava的安装目录 PYSPARK_PYTHONPythonbinaryexecutabletouseforPySpark. SPARK_LOCAL_IPIPaddressofthemachinetobindto. SPARK_PUBLIC_DNSHostnameyourSparkprogramwilladvertisetoothermachines.
对于standalone模式的集群除了上面的属性可以配置外,还有很多的属性可以配置,具体我就不说了,自己看文档去。
三、日志配置
Spark用log4j来记录日志。你可以通过配置log4j.properties来设定不同日志的级别、存放位置等。这个文件默认也是不存在的,你可以通过复制log4j.properties.template文件来得到。
以上就是本文关于Spark三种属性配置方式详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Spark实现K-Means算法代码示例、浅谈七种常见的Hadoop和Spark项目案例、Spark的广播变量和累加器使用方法代码示例等,有什么问题可以随时留言,小编会及时回复大家的。