Spark IO機制
Spark進行IO不僅考慮本地開銷,還有資料在不同主機之間的開銷,同時對資料的定址方式也要改變,以應對大資料
序列化
- 用於程式間通訊,不同節點之間資料傳輸
- 用於持久化儲存到磁碟,序列化速度影響叢集總體效率
在預設情況下,Spark採用Java的ObjectOutputStream序列化一個物件。該方式適用於所有實現了java.io.Serializable的類。Java序列化非常靈活,但是速度較慢。Spark也能使用Kryo序列化物件。Kryo不但速度極快,而且產生的結果更為緊湊(通常能提高10倍)。Kryo的缺點是不支援所有型別
壓縮
- 序列化後的資料進行壓縮,減少空間開銷
- 大片連續區域進行資料儲存並且儲存區域中資料重複性高的狀況下,資料適合進行壓縮節省空間
Spark採用兩種壓縮演算法,snappy和LZF,可以自定義壓縮庫
Snappy壓縮速度更快,LZF壓縮比更高
塊管理
RDD邏輯上按照Partition分塊,RDD可以看作是一個分割槽作為資料項的分散式陣列,物理上儲存單位是Block,一個Partition對應一個Block,partitionId透過後設資料對映到物理Block
整體IO管理分為兩個層次
通訊層:IO模組採用Master-Slave結構實現通訊層的架構
儲存層:Spark塊資料需要儲存到記憶體或者磁碟
BlockManager中的通訊
主節點和從節點之間透過Actor傳送訊息傳遞命令和狀態
資料讀寫
資料寫入:
1.RDD呼叫compute()方法進行制定分割槽的寫入。
2.CacheManager中呼叫BlockManager判斷資料是否已經寫入,如果未寫入則寫入。
3.BlockManager中資料與其他節點同步。
4.BlockManager根據儲存級別寫入制定的儲存層。
5.BlockManager向主節點彙報儲存狀態。
資料讀取:
在RDD類中,透過compute方法呼叫iterator讀寫某個分割槽(Partition),作為資料讀取的入口。分割槽是邏輯概念,在物理上是一個Block。
透過BlockManager讀取程式碼進入讀取邏輯,在本地同步讀取資料塊,首先看能否在記憶體讀取資料塊,如果不能讀取,則看能否從Tacjyon讀取資料塊,如果仍不能讀取,則看能否從本地磁碟讀取資料。如果仍不存在,再看看網路中其它節點是否有資料。
作者:Alex90
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/964/viewspace-2819253/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Spark】Spark容錯機制Spark
- 【Spark篇】---Spark中Shuffle機制,SparkShuffle和SortShuffleSpark
- spark基礎之spark streaming的checkpoint機制Spark
- IO多路複用機制詳解
- 【轉】linux非同步io機制Linux非同步
- Spark Streaming 的容錯機制Spark
- Spark原始碼分析之Checkpoint機制Spark原始碼
- Spark RPC框架原始碼分析(三)Spark心跳機制分析SparkRPC框架原始碼
- Spark Shuffle機制詳細原始碼解析Spark原始碼
- IO多路複用與epoll機制淺析
- Spark原始碼分析之BlockManager通訊機制Spark原始碼BloC
- 重要 | Spark分割槽並行度決定機制Spark並行
- Spark SQL外部資料來源與實現機制SparkSQL
- 通過WordCount解析Spark RDD內部原始碼機制Spark原始碼
- Spark原始碼分析之Worker啟動通訊機制Spark原始碼
- 什麼是IO多路複用?Nginx的處理機制Nginx
- Redis使用IO多路複用進行事件處理機制Redis事件
- 深入理解nodejs的非同步IO與事件模組機制NodeJS非同步事件
- 【Spark實戰】Spark操作HBase問題:java.io.IOException: Non-increasing Bloom keysSparkJavaExceptionOOM
- HDFS 02 - HDFS 的機制:副本機制、機架感知機制、負載均衡機制負載
- 深入剖析Linux IO原理和幾種零拷貝機制的實現Linux
- session機制和cookie機制SessionCookie
- 柳大的Linux遊記·基礎篇(5)select IO複用機制Linux
- 深入理解python3.4中Asyncio庫與Node.js的非同步IO機制PythonNode.js非同步
- 快速失敗機制&失敗安全機制
- JavaScript執行緒機制與事件機制JavaScript執行緒事件
- 模組機制
- Binder機制
- session機制Session
- 管理機制
- 淺談JS事件機制與React事件機制JS事件React
- OC訊息機制,訊息轉發機制
- 終端優化機制:墓碑機制和Doze優化
- Perl IO:隨機讀寫檔案隨機
- 小程式技術科普:執行機制&安全機制
- 響應式流的核心機制——背壓機制
- Ceph心跳機制
- Redis分片機制Redis