Spark配置属性详解
Application相關(guān)屬性
絕大多數(shù)的屬性控制應(yīng)用程序的內(nèi)部設(shè)置,并且默認(rèn)值都是比較合理的。下面對(duì)這些屬性進(jìn)行說明:
spark.app.name
該屬性沒有默認(rèn)值,它的含義是你的應(yīng)用程序的名字,這個(gè)名字設(shè)定之后將會(huì)在WEB UI上和日志數(shù)據(jù)里面顯示。如果這個(gè)屬性沒有設(shè)置的話,將會(huì)把你應(yīng)用程序的main函數(shù)所在類的全名作為應(yīng)用程序的名稱。在Yarn環(huán)境下,還可以用--name或者SPARK_YARN_APP_NAME來設(shè)置應(yīng)用程序的名稱。為了能夠方便地查看各個(gè)應(yīng)用程序的含義,取一個(gè)好的名字是很重要的。
spark.master
該屬性沒有默認(rèn)值。這是Spark程序需要連接的集群管理器所在的URL地址。當(dāng)前的spark支持三種集群方式Standalone、Apache Mesos以及YARN模式。如果這個(gè)屬性在提交應(yīng)用程序的時(shí)候沒設(shè)置,程序?qū)?huì)通過System.getenv("MASTER")來獲取MASTER環(huán)境變量;但是如果MASTER環(huán)境變量沒有設(shè)定,那么程序?qū)?huì)把master的值設(shè)定為local[*],之后程序?qū)⒃诒镜貑?dòng)。
spark.executor.memory
該屬性的默認(rèn)值是512m。每個(gè)executor處理器可以使用的內(nèi)存大小之和,跟JVM的內(nèi)存表示的字符串格式是一樣的(比如: '512m','2g')。在早期版本的Spark,是通過-Xmx和-Xms來設(shè)置的。如果這個(gè)值沒有設(shè)定,那么程序?qū)?huì)先獲取SPARK_EXECUTOR_MEMORY環(huán)境變量;如果還沒設(shè)置,那么獲取SPARK_MEM環(huán)境變量的值;如果這個(gè)值也沒設(shè)定,那么這個(gè)值將會(huì)別設(shè)定為512,。
幾乎所有運(yùn)行時(shí)性能相關(guān)的內(nèi)容都或多或少間接和內(nèi)存大小相關(guān)。這個(gè)參數(shù)最終會(huì)被設(shè)置到Executor的JVM的heap尺寸上,對(duì)應(yīng)的就是Xmx和Xms的值。
spark.serializer
默認(rèn)值是org.apache.spark.serializer.JavaSerializer。用于序列化網(wǎng)絡(luò)傳輸或者以序列化形式緩存起來的各種對(duì)象的類。默認(rèn)的Serializer可以對(duì)所有的Java對(duì)象進(jìn)行序列化,但是它的速度十分慢!所以如果速度是影響程序運(yùn)行的關(guān)鍵,你可以將該值設(shè)定為org.apache.spark.serializer.KryoSerializer。在一些情況下,KryoSerializer的性能可以達(dá)到JavaSerializer的10倍以上,但是相對(duì)于JavaSerializer而言,主要的問題是它不能支持所有的Java對(duì)象。當(dāng)然,用戶可以直接繼承org.apache.spark.serializer來實(shí)現(xiàn)自己的Serializer。
spark.kryo.registrator
默認(rèn)值為空。如果你使用了KryoSerializer,就要為Kryo設(shè)置這個(gè)類去注冊(cè)你自定義的類,該類必須繼承自KryoRegistrator,實(shí)現(xiàn)其中的registerClasses(kryo: Kryo)即可。
spark.local.dir
默認(rèn)值為/tmp。用于設(shè)定Spark的緩存目錄,包括了mapper輸出的文件,緩存到磁盤的RDD數(shù)據(jù)。最好將這個(gè)屬性設(shè)定為訪問速度快的本地磁盤。同Hadoop一樣,可以用逗號(hào)分割來設(shè)定多個(gè)不同磁盤的目錄。需要注意,在Spark 1.0和之后的版本,這個(gè)屬性將會(huì)被SPARK_LOCAL_DIRS (Standalone, Mesos) 或者 LOCAL_DIRS (YARN) 環(huán)境變量替代。
spark.logConf
默認(rèn)值是false。當(dāng)SparkContext啟動(dòng)的時(shí)候,以INFO日志級(jí)別記錄下有效的SparkConf 。
總結(jié)
以上是生活随笔為你收集整理的Spark配置属性详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spark与Mysql(JdbcRDD)
- 下一篇: Spark源码分析之Worker