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