liusheng / liusheng.github.io

Liusheng's blog
http://liusheng.github.io
5 stars 1 forks source link

Alluxio 项目简介 #35

Open liusheng opened 3 years ago

liusheng commented 3 years ago

1. 简介

Alluxio是源自加州大学伯克利分校AMPlab的开源项目,2013年4月开源,原名Tachyon, 是一个以内存为中心的虚拟的分布式存储系统,它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件,主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。统一了数据访问的方式,为上层计算框架和底层存储系统建立了桥梁。

preview

2. 架构

Alluxio为大数据或者机器学习系统中提供了一个数据访问层,在大数据或者机器学习生态系统中,Alluxio 介于计算框架(如 Apache Spark,Apache MapReduce,Apache HBase,Apache Hive,Apache Flink)和现有的存储系统(如 Amazon S3,OpenStack Swift,GlusterFS,HDFS,MaprFS,Ceph,NFS,OSS)之间。使用Alluxio作为数据访问层有以下好处:

Alluxio是一个主从结构的系统。它的主节点为Master,负责管理全局的文件系统元数据,比如文件系统树等,而从节点为Worker,负责管理本节点数据存储服务。另外,Alluxio还有一个组件为Client,为用户提供统一的文件存取服务接口。

image-20210111111411101

image-20210111154359703

Master节点主要负责管理系统里的全局Metadata,包括:1)文件系统metadata;2)block metadata;3)worker容量metadata。

Alluxio client和主Master交互来读取或者修改metadata数据。所有的worker会周期性地向主master发送心跳数据来维持集群里面的协同。

image-20210111154443011

Worker执行底层存储操作,主要有以下好处:

1) 从底层存储读取数据可以立即存储到worker中,并且可以被其他client立即使用

2)Client可以是轻量化且不依赖底层存储

由于内存容量限制,当worker中容量满的时候,存储块会被回收,关于worker中的存储块回收,Alluxio有专门的回收策略实现。这就是Alluxio的分层存储策略

3. 存储

Alluxio中的存储分为两类:

4. 数据读操作

dataflow-local-cache-hit

dataflow-remote-cache-hit

dataflow-cache-miss

5. 数据写操作

用户可以通过指定不同的写类型来配置数据被怎样写入。write type 可以在Alluxio的API中指定,也可以通过配置文件来制定默认的些类型。

dataflow-must-cache

dataflow-cache-through

dataflow-async-through

6. 参考

https://docs.alluxio.io/os/user/1.8/en/Architecture-DataFlow.html#architecture

https://docs.alluxio.io/os/user/1.8/en/advanced/Alluxio-Storage-Management.html