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 Streaming 的容錯機制Spark
- Spark RPC框架原始碼分析(三)Spark心跳機制分析SparkRPC框架原始碼
- IO多路複用機制詳解
- Spark Shuffle機制詳細原始碼解析Spark原始碼
- IO多路複用與epoll機制淺析
- 重要 | Spark分割槽並行度決定機制Spark並行
- Spark SQL外部資料來源與實現機制SparkSQL
- 通過WordCount解析Spark RDD內部原始碼機制Spark原始碼
- Redis使用IO多路複用進行事件處理機制Redis事件
- 什麼是IO多路複用?Nginx的處理機制Nginx
- 深入理解nodejs的非同步IO與事件模組機制NodeJS非同步事件
- 深入剖析Linux IO原理和幾種零拷貝機制的實現Linux
- HDFS 02 - HDFS 的機制:副本機制、機架感知機制、負載均衡機制負載
- 計算機概念——io 複用計算機
- 快速失敗機制&失敗安全機制
- JavaScript執行緒機制與事件機制JavaScript執行緒事件
- SPI機制
- 包機制
- Binder機制
- 淺談JS事件機制與React事件機制JS事件React
- Android Handler機制之Message及Message回收機制Android
- Perl IO:隨機讀寫檔案隨機
- 小程式技術科普:執行機制&安全機制
- 響應式流的核心機制——背壓機制
- Android10_原理機制系列_事件傳遞機制Android事件
- IO模式和IO多路複用(阻塞IO、非阻塞IO、同步IO、非同步IO等概念)模式非同步
- Java反射機制Java反射
- 機制設計
- cglib FastClass機制CGLibAST
- spring event機制Spring
- Linux安全機制Linux
- 儲存機制
- https加密機制HTTP加密
- Redis 哨兵機制Redis
- Mysql MVCC機制MySqlMVC
- PostgreSQL VFD機制SQL
- Linux OOM 機制LinuxOOM