1. 程式人生 > >spark 調優(官方文件)

spark 調優(官方文件)

1.序列化 物件在進行網路傳輸或進行持久化時需要進行序列化,如果採用序列化慢或者消耗大量位元組的序列化格式,則會拖慢計算。 spark 提供了兩種序列化類庫 1). Java serialization 靈活,但是很慢 2) Kryo serialization 比java 快10倍,緊湊,不支援所有 Serializable型別,使用方法 a.在saprkconf 中設定序列化的類 conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer"). b.可選 設定spark.kryo.registrationRequired 為true, 則必須顯示宣告需要序列化的類,否則會報錯 sconf.set("spark.kryo.registrationRequired","true")
sconf.registerKryoClasses(Array( classOf[NullWritable], classOf[Array[String]]) )   如果序列化的物件較大,可以調整  spark.kryoserializer.buffer (預設6k)。如果不註冊需要序列化的類,則序列化時會儲存類的全稱,比慘耗記憶體   2.記憶體優化 Java物件訪問速度很快,但與其欄位中的“原始”資料相比,可以輕鬆佔用2-5倍的空間。縮小記憶體的方法 1)儘量使用array[object] 和基本型別,避免使用 hashmap 等標準集合
2)儘量避免使用包含大量小物件和指標的巢狀結構 3)rdd 快取時儘量使用序列化格式,比如 MEMORY_ONLY_SER, 4)gc 調優?   3.資源允許的情況下增加任務的並行度,充分利用叢集資源 4..提高reduceByKey,groupByKey 等shuffle 操作的並行度,以降低每個task 處理的資料量,減少oom 5.大的變數 進行broadcast 6.