Apache Arrow

Hadoop、Spark和Kafka已經對大數據領域產生了巨大的影響力,現在多了另一個Apache項目,有望進一步改變這個領域,那就是Apache Arrow。
該項目提交代碼的人士包括來自其他Apache大數據項目的開發人員,比如Calcite、Cassandra、Drill、Hadoop、HBase、Impala、Kudu、Parquet、Phoenix、Spark和Storm等項目。
用戶在應用大數據分析時除了將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
[img]http://dl2.iteye.com/upload/attachment/0117/8389/c184e24d-5a65-3687-8de2-b5711ee021ac.jpg[/img]

Advantages of a Common Data Layer

[img]http://dl2.iteye.com/upload/attachment/0117/8391/b795bf02-070d-3fad-bc28-b2df3ef42fed.jpg[/img]

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


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

[img]http://dl2.iteye.com/upload/attachment/0117/8393/0d8cd087-4100-3cd1-84cb-8a6495dac56e.jpg[/img]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章