Spark版本:1.1.1
本文系從官方文檔翻譯而來,轉載請尊重譯者的工作,注明以下鏈接:
http://www.cnblogs.com/zhangningbo/p/4137969.html
Spark配置
Spark屬性
動態加載Spark屬性
查看Spark屬性
可用屬性
大部分用於控制內部設置的屬性都有合理的默認值。一部分最通用的選項設置如下:
應用程序屬性
屬性名稱 | 默認值 | 含義 |
spark.app.name | (none) | 應用程序名稱。該參數的值會出現在UI和日志記錄中。 |
spark.master | (none) | 要連接的集群管理器。詳見支持的masterURL列表。 |
spark.executor.memory | 512m | 每個executor進程要用的內存量。與JVM內存字符串的格式相同(如,512m,2g)。 |
spark.serializer | org.apache.spark.serializer.JavaSerializer | 用於序列化對象(以序列化形式通過網絡發送或者在內存中緩存的對象)的類,默認的Java序列化適用於任何可序列化的Java對象,但速度很慢。因此,在需要較快速度的場合,我們推薦使用org.apache.spark.serializer.KryoSerializer並配置Kryo序列化。該參數的值可以是org.apache.spark.serializer的任何子類。 |
spark.kryo.registrator | (none) | 如果你使用Kryo序列化,那么,需要設置該類以便使用Kryo來注冊你的自定義類。該參數應當設置成一個擴展KryoRegistrator的類。詳見調優指南。 |
spark.local.dir | /tmp | 在Spark中“草稿”空間所用的路徑,包括存儲於磁盤上的map輸出文件和RDD。該參數值應當指向一個快速的本地磁盤路徑。也可以是多個以逗號分隔的位於不同磁盤的路徑列表。注意:從Spark1.0以后,該參數會被集群管理器所設置的SPARK_LOCAL_DIRS(Standalone,Mesos模式下)或者LOCAL_DIRS(YARN模式下)環境變量覆蓋。 |
spark.logconf | false | 當SparkContext啟動時,以INFO日志級別記錄有效的SparkConf設置。 |
除了以上屬性,下面的屬性也可用 ,而且在某些情形下會很有用:
運行時環境
屬性名稱 | 默認值 | 含義 |
spark.executor.extraJavaOptions | (none) | 傳遞給executor的額外JVM選項字符串。例如,GC設置或其他日志設置。注意,使用該選項來設置spark屬性或heap大小是不合法的。Spark屬性應當使用SparkConf對象設置,或者在腳本spark-submit中使用spark-defaults.conf文件。Heap大小可以用spark.executor.memory來設置。 |
spark.executor.extraClassPath | (none) | 追加到executor classpath中的額外classpath條目。該參數主要是為了與老版本的spark后向兼容。用戶通常不需要設置該選項。 |
spark.executor.extraLibraryPath | (none) | 設置一個啟動executor JVM時使用的特殊庫路徑。 |
spark.files.userClassPathFirst | false | (實驗特性)當把用戶添加的jar包和Spark自有jar包中的類加載到executor時,是否優先處理前者,再處理后者。該特性可以用於減少Spark依賴和用戶依賴之間的沖突。當前該特性是實驗性的。 |
spark.python.worker.memory | 512m | 聚集過程中每個python worker進程所用的內存量,與Java內存字符串的格式相同(如512m,2g)。如果進程在聚集期間所用的內存超過了該值,那么,就會把數據寫入磁盤。 |
spark.executorEnv.[EnvironmentVariableName] | (none) | 把EnvironmentVariableName指定的環境變量添加到executor進程中。用戶可以指定多個值來設置多個環境變量。 |
spark.mesos.executor.home | driver side SPARK_HOME | 設置Spark在Mesos集群中的executor主機上所安裝的路徑。默認情況下,executor簡單地使用driver上的Spark home路徑(executor不可見),注意,如果Spark二進制包不是通過spark.executor.uri來指定的,那么該值就是確切的。 |
spark.mesos.executor.memoryOverhead | executor memory * 0.07,最小值為384 | 該值是spark.executor.memory的附加值,以MB為單位,用於計算Mesos任務的內存總量。384代表開銷為384MB。此外,硬編碼的7%為最小開銷比例。最終的開銷是二者中最大的,即max(spark.mesos.executor.memoryOverhead,spark.executor.memory * 7%) |
Shuffle行為
屬性名稱 | 默認值 | 含義 |
Spark UI
屬性名稱 | 默認值 | 含義 |
壓縮與序列化
屬性名稱 | 默認值 | 含義 |
執行行為
屬性名稱 | 默認值 | 含義 |
網絡
屬性名稱 | 默認值 | 含義 |
調度
屬性名稱 | 默認值 | 含義 |
安全
屬性名稱 | 默認值 | 含義 |
Spark Streaming
屬性名稱 | 默認值 | 含義 |
集群管理器
每個集群管理器都有額外的配置選項。這些配置參見每種模式各自的頁面:
YARN
Mesos
Standalone
環境變量
某些Spark屬性可以通過環境變量來配置,這些變量可以從conf/spark-env.sh腳本(windows平台為conf/spark-env.cmd)中讀取。在Standalone和Mesos模式下,該腳本文件可以給出主機相關信息,比如主機名,也可以作為運行本地Spark應用程序或者子任務腳本時的源文件。
注意,conf/spark-env.sh默認安裝情況下是不存在的。但是,你可以通過復制conf/spark-env.sh.template來創建它並確保其為可執行的。
以下變量可以在spark-env.sh文件中設置:
環境變量 | 含義 |
JAVA_HOME | Java安裝的位置(如果沒有在默認的環境變量PATH中指定,就采用該值) |
PYSPARK_PYTHON | PySpark所用的Python二進制可執行文件 |
SPARK_LOCAL_IP | 主機所綁定的IP地址 |
SPARK_PUBLIC_DNS | Spark程序通告給其他主機的主機名 |
除了以上變量,還有一些創建Spark Standalone集群腳本的選項,比如每台主機所用的CPU核數和最大內存。
由於spark-env.sh是腳本,所以有些選項可以通過程序來設置——例如,你可以通過查詢指定網卡的IP地址來確定SPARK_LOCAL_IP。
配置日志記錄
Spark使用log4j來記錄日志。你可以在路徑conf中添加log4j.properties文件來配置該功能。還有一種啟動方法就是在原地復制log4j.properties.template文件。
覆蓋配置路徑
要指定其他配置路徑而不使用默認的“SPARK_HOME/conf” ,你可以設置SPARK_CONF_DIR環境變量。Spark將會使用該變量指定路徑中的配置文件(spark-defaults.conf,spark-env.sh,log4j.properties等)。