• 1
  • 2
  • 3
  • 4
  • 5
阿里云主机ECS 首 页  »  帮助中心  »  云服务器  »  阿里云主机ECS
跨平台的内存数据交换格式-Apache Arrow
发布日期:2016-4-6 13:4:25

  跨平台的内存数据交换格式-Apache Arrow

   rrowApache 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周期都花在了数据的序列化与反序列化上,现在我们能够实现不同系统之间数据的无缝共享。这意味着用户在结合使用不同的系统时再也不用为数据格式多花心思了。

  

  图1 Performance Advantage of Columnar In-Memory


  图2 Advantages of a Common Data Layer

  每个系统都有自己内部的内存格式

  70-80%的CPU浪费在序列化和反序列化过程

  类似功能在多个项目中实现,没有一个标准


  图3

  所有系统都使用同一个内存格式

  避免了系统间通信的开销

  项目间可以共享功能(比如Parquet-to-Arrow reader)