天天看點

Spark官方性能調優指南資料序列化

本文根據官方性能優化指南和自身經驗總結。

官方性能優化指南連結:http://spark.apache.org/docs/1.6.0/tuning.html

tunnig:名詞,調諧;調整;調音。(music) calibrating something (an instrument or electronic circuit) to a standard frequency

鑒于Spark基于記憶體計算這一天性,以下叢集資源可能會造成Spark程式的瓶頸:CPU,帶寬和記憶體。通常情況下,如果記憶體足夠的情況下,瓶頸隻可能出現在網絡帶寬方面;但有時,你也需要做一些例如序列化優化來降低記憶體使用率。這份指導主要集中于兩方面:資料序列化,這是充分提升網絡表現和降低記憶體消耗、記憶體優化的關鍵;我們也會簡要闡述一些小技巧。

資料序列化

序列化在任何分布式應用的運作中扮演了重要的角色。采用那些序列化慢的格式、或者消費巨量位元組時将會嚴重拖慢計算效率。通常情況下,調整資料的序列化方式是你優化Spark程式時首先需要做的事。Spark程式試圖在簡潔(循序你在代碼中使用任何Java的資料類型)和效率之間取得一種平衡。Spark提供了兩種序列化庫。

  • Java serialization:預設情況下,Spark序列話一個對象時使用Java自帶的 ObjectOutputStream架構,對于任何實作了java.io.Serializable接口的類都有效。有也可以通過繼承java.io.Externalizable來自定義你的序列化過程。Java serialization是靈活的,但通常相當緩慢并且導緻很多類的序列化格式很臃腫。
  • Kryo serializ

繼續閱讀