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

spark 調優(官方文檔)

gist broadcast html indent transform letter tex cast apache

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.

spark 調優(官方文檔)