Alluxio - 分布式存储系统


Apache
跨平台
Java

软件简介

Alluxio(之前名为Tachyon)是世界上第一个以内存为中心的虚拟的分布式存储系统。它统一了数据访问的方式,为上层计算框架和底层存储系统构建了桥梁。
应用只需要连接Alluxio即可访问存储在底层任意存储系统中的数据。此外,Alluxio的以内存为中心的架构使得数据的访问速度能比现有方案快几个数量级。

在大数据生态系统中,Alluxio介于计算框架(如Apache Spark,Apache MapReduce,Apache HBase,Apache
Hive,Apache Flink)和现有的存储系统(如Amazon S3,Google Cloud Storage, OpenStack
Swift,GlusterFS,HDFS,MaprFS,Ceph,NFS,OSS)之间。
Alluxio为大数据软件栈带来了显著的性能提升。例如,百度采用Alluxio使他们数据分析流水线的吞吐量提升了30倍。
巴克莱银行使用Alluxio将他们的作业分析的耗时从小时级降到秒级。 去哪儿网基于Alluxio进行实时数据分析。
除性能外,Alluxio为新型大数据应用作用于传统存储系统的数据建立了桥梁。 用户可以以 独立集群模式,在例如 Amazon EC2, Google
Compute Engine运行Alluxio, 或者用 Apache Mesos或 Apache Yarn安装Alluxio。

Alluxio与Hadoop是兼容的。现有的数据分析应用,如Spark和MapReduce程序,可以不修改代码直接在Alluxio上运行。Alluxio是一个已在多家公司部署的开源项目(Apache
License 2.0)。
Alluxio是发展最快的开源大数据项目之一。自2013年4月开源以来,已有超过200个组织机构的900多贡献者参与到Alluxio的开发中。包括
阿里巴巴, Alluxio, 百度, 卡内基梅隆大学,Google,IBM,Intel, 南京大学, Red Hat,UC Berkeley和
Yahoo。Alluxio处于伯克利数据分析栈 (BDAS)的存储层,也是 Fedora发行版的一部分。
到今天为止,Alluxio已经在超过100家公司的生产中进行了部署,并且在超过1000个节点的集群上运行着。

Alluxio大数据存储系统的功能简介总结如下:

  • 灵活的文件API: Alluxio的本地API类似于java.io.File类,提供了 InputStream和OutputStream的接口和对内存映射I/O的高效支持。我们推荐使用这套API以获得Alluxio的完整功能以及最佳性能。
  • 兼容Hadoop HDFS的文件系统接口:基于这套接口Hadoop MapReduce和Spark可以使用Alluxio代替HDFS。
  • 可插拔的底层存储: Alluxio支持将内存数据持久化到底层存储系统。Alluxio提供了通用接口以简化对接不同的底层存储系统。目前Alluxio支持Microsoft Azure Blob Store,Amazon S3,Google Cloud Storage,OpenStack Swift,GlusterFS, HDFS,MaprFS,Ceph,NFS,Alibaba OSS,Minio以及单节点本地文件系统,后续也会支持更多其他存储系统。
  • Alluxio层级存储: Alluxio可以管理内存和本地存储如SSD和HDD,以加速数据访问。如果需要更细粒度的控制,分层存储功能可以用于自动化管理不同层之间的数据,确保热数据在更快的存储层上。自定义策略可以方便地应用到Alluxio,而且pin(钉住)的概念允许用户显式地控制数据的存放位置。
  • 统一命名空间: Alluxio可以通过挂载功能实现不同存储系统之间的高效数据管理。并且,透明命名机制在持久化存储对象到底层存储系统时可以保留存储对象的文件名和目录层次结构。
  • Web UI: 用户可以通过Web UI浏览文件系统。在调试模式下,管理员还可以查看每一个文件的详细信息,包括存放位置,检查点路径等。

  • 命令行: 用户也可以通过./bin/alluxio fs与Alluxio交互,例如:实现将数据从文件系统拷入拷出。

Alluxio 架构: