Open liusheng opened 3 years ago
Alluxio是源自加州大学伯克利分校AMPlab的开源项目,2013年4月开源,原名Tachyon, 是一个以内存为中心的虚拟的分布式存储系统,它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件,主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。统一了数据访问的方式,为上层计算框架和底层存储系统建立了桥梁。
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,为用户提供统一的文件存取服务接口。
Master节点主要负责管理系统里的全局Metadata,包括:1)文件系统metadata;2)block metadata;3)worker容量metadata。
Alluxio client和主Master交互来读取或者修改metadata数据。所有的worker会周期性地向主master发送心跳数据来维持集群里面的协同。
Worker执行底层存储操作,主要有以下好处:
1) 从底层存储读取数据可以立即存储到worker中,并且可以被其他client立即使用
2)Client可以是轻量化且不依赖底层存储
由于内存容量限制,当worker中容量满的时候,存储块会被回收,关于worker中的存储块回收,Alluxio有专门的回收策略实现。这就是Alluxio的分层存储策略。
Alluxio中的存储分为两类:
缓存非命中情况。这种情况绝大部分会发生于第一次读取文件数据的时候,然后worker会读取底层文件系统,然后加到内存里,方便下次缓存的命中。
当读取请求只读取一个数据块的一部分,或者读取一些不连续的数据块的时候。client将会让worker异步地缓存整个数据块。
用户可以通过指定不同的写类型来配置数据被怎样写入。write type 可以在Alluxio的API中指定,也可以通过配置文件来制定默认的些类型。
write type
只写入Alluxio worker(MUST_CACHE)
MUST_CACHE
当指定写类型为MUST_CACHE的时候,Alluxio Client会将数据只写入本地的worker且数据不会写入底层存储,写入数据的时候如果“短路”写可用的话,Alluxio client将会直接将数据写入本地RAM disk中,从而绕过网络传输。由于这种类型的数据没有被写入到持久化存储中,如果机器宕机数据将会丢失或者重新写入数据。因此MUST_CACHE类型用于写入临时数据或者可以容忍数据丢失的情况。
写入数据到底层存储(CACHE_THROUGH)
CACHE_THROUGH
当指定写入类型为CACHE_THROUGH时,数据将会同步地写入到Alluxio的worker和底层存储系统。Alluxio client的写请求发送到worker,worker将会同步地写入到本地内存以及底层存储系统。因为底层存储写入属于慢速操作,worker整体的写入速度也将会被拖慢。CACHE_THROUGH写入类型一般是需要数据持久化存储的场景。
写回数据到底层存储(ASYNC_THROUGH)
ASYNC_THROUGH
ASYNC_THROUGH写入类型,指定这种类型,数据将会异步地被写入到worker和worker的底层存储,这种类型可以提供内存速度级别的写入速度且保证数据持久化。
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
1. 简介
Alluxio是源自加州大学伯克利分校AMPlab的开源项目,2013年4月开源,原名Tachyon, 是一个以内存为中心的虚拟的分布式存储系统,它是架构在底层分布式文件系统和上层分布式计算框架之间的一个中间件,主要职责是以文件形式在内存或其它存储设施中提供数据的存取服务。统一了数据访问的方式,为上层计算框架和底层存储系统建立了桥梁。
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,为用户提供统一的文件存取服务接口。
Master节点主要负责管理系统里的全局Metadata,包括:1)文件系统metadata;2)block metadata;3)worker容量metadata。
Alluxio client和主Master交互来读取或者修改metadata数据。所有的worker会周期性地向主master发送心跳数据来维持集群里面的协同。
Worker执行底层存储操作,主要有以下好处:
1) 从底层存储读取数据可以立即存储到worker中,并且可以被其他client立即使用
2)Client可以是轻量化且不依赖底层存储
由于内存容量限制,当worker中容量满的时候,存储块会被回收,关于worker中的存储块回收,Alluxio有专门的回收策略实现。这就是Alluxio的分层存储策略。
3. 存储
Alluxio中的存储分为两类:
4. 数据读操作
缓存非命中情况。这种情况绝大部分会发生于第一次读取文件数据的时候,然后worker会读取底层文件系统,然后加到内存里,方便下次缓存的命中。
当读取请求只读取一个数据块的一部分,或者读取一些不连续的数据块的时候。client将会让worker异步地缓存整个数据块。
5. 数据写操作
用户可以通过指定不同的写类型来配置数据被怎样写入。
write type
可以在Alluxio的API中指定,也可以通过配置文件来制定默认的些类型。只写入Alluxio worker(
MUST_CACHE
)当指定写类型为
MUST_CACHE
的时候,Alluxio Client会将数据只写入本地的worker且数据不会写入底层存储,写入数据的时候如果“短路”写可用的话,Alluxio client将会直接将数据写入本地RAM disk中,从而绕过网络传输。由于这种类型的数据没有被写入到持久化存储中,如果机器宕机数据将会丢失或者重新写入数据。因此MUST_CACHE
类型用于写入临时数据或者可以容忍数据丢失的情况。写入数据到底层存储(
CACHE_THROUGH
)当指定写入类型为
CACHE_THROUGH
时,数据将会同步地写入到Alluxio的worker和底层存储系统。Alluxio client的写请求发送到worker,worker将会同步地写入到本地内存以及底层存储系统。因为底层存储写入属于慢速操作,worker整体的写入速度也将会被拖慢。CACHE_THROUGH
写入类型一般是需要数据持久化存储的场景。写回数据到底层存储(
ASYNC_THROUGH
)ASYNC_THROUGH
写入类型,指定这种类型,数据将会异步地被写入到worker和worker的底层存储,这种类型可以提供内存速度级别的写入速度且保证数据持久化。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