內存數據交換格式 Apache Arrow

Apache Arrow是Apache基金會下一個全新的開源項目,同時也是頂級項目。它的目的是作為一個跨平臺的數據層來加快大數據分析項目的運行速度。

用戶在應用大數據分析時除了將Hadoop等大數據平臺作為一個經濟的存儲和批處理平臺之外也很看重分析系統的擴展性和性能。過去幾年開源社區已經發布了很多工具來完善大數據分析的生態系統,這些工具涵蓋了數據分析的各個層面,比如列式存儲格式(Parquet/ORC)、內存計算層(Drill、Spark、Impala和Storm)以及強大的API接口(Python和R語言)。Arrow則是最新加入的一員,它提供了一種跨平臺跨應用的內存數據交換格式。

提高大數據分析性能的一個重要手段是對列式數據的設計和處理。列式數據處理藉助向量計算和SIMD使我們可以充分挖掘硬件的潛力。Apache Drill這一大數據查詢引擎無論是在硬盤還是在內存中數據都是以列的方式存在的,而Arrow就是由Drill中Value Vector這一數據格式發展而來。除了列式數據,Apache Arrow也支持關係型和動態數據集,這使它成了處理物聯網等數據時的理想格式選擇。

Apache Arrow為大數據生態系統帶來了可能性是無窮的。有Apache Arrow做為今後的標準數據交換格式,各個數據分析的系統和應用之間的交互性可以說是上了一個新的臺階。過去大部分的CPU週期都花在了數據的序列化和反序列化上,現在我們則能夠實現不同系統之間數據的無縫共享。這意味著用戶在將不同的系統結合使用時再也不用為數據格式多花心思了。

Performance Advantage of Columnar In-Memory


內存數據交換格式 Apache Arrow


Advantages of a Common Data Layer


內存數據交換格式 Apache Arrow


  • 每個系統都有自己內部的內存格式
  • 70-80%的CPU浪費在序列化和反序列化過程
  • 類似功能在多個項目中實現,沒有一個標準


內存數據交換格式 Apache Arrow


  • 所有系統都使用同一個內存格式
  • 避免了系統間通信的開銷
  • 項目間可以共享功能(比如Parquet-to-Arrow reader)


分享到:


相關文章: