首页 > 系统相关 >Alluxio : 开源分布式内存文件系统

Alluxio : 开源分布式内存文件系统

时间:2023-06-01 13:33:13浏览次数:43  
标签:存储 文件系统 开源 内存 数据 Alluxio 分布式

Alluxio : 开源分布式内存文件系统

Alluxio is a memory speed virtual distributed storage system.Alluxio是一个开源的基于内存的分布式存储系统,现在成为开源社区中成长最快的大数据开源项目之一。


公司简介:

  • 由项目的创建者李浩源以及来自UC Berkeley, Google, CMU, Palantir, Stanford, Yahoo等不同公司和学校的项目核心开发者组成。
  • 完成750万 dollars 的A轮融资,由Andreessen Horowitz投资(硅谷最著名的VC之一,主要成员为网景公司创始人之一)。


背景介绍:

  • 2012年诞生于UC Berkeley AMPLab,此前这个实验室孵化了Apache Mesos和Apache Spark等著名开源项目。
  • 2013年4月开源,现在由最初的Tachyon改名为Alluxio,基于Apache License 2.0开源标准,最新版本为Version 1.0 (Feb 23rd, 2016)。

Alluxio : 开源分布式内存文件系统_spark


  • 在分布式系统的开源项目中,相比于同级别项目,Alluxio的增长非常迅速

Alluxio : 开源分布式内存文件系统_spark_02


  • 吸引了来自超过50个组织的200+个contributors。

主要特性:

  • 数据存储与计算分离,两部分引擎可以进行独立的扩展。计算引擎(如Hadoop, Spark)可以访问不同数据源(Amazon S3, HDFS)中的数据。

问题:与Redis,Memcached等分布式in-memory key-value缓存的的区别:

  • 答:(1) Alluxio可以同时管理多个底层文件系统,将不同的文件系统统一在同一个名称空间下,让上层客户端可以自由访问统一名称空间内的不同路径,不同存储系统的数据。(2)Alluxio提供文件接口,并存储且维护文件的metadata(比如记录文件分成哪几个block, 每一个block在哪台server上)。并提供fault tolerance的metadata服务。而Redis/Memcached为Nosql的key-value分布式缓存,并不提供文件接口。


内存与硬盘比较

硬盘内存增长率曲线:

Alluxio : 开源分布式内存文件系统_JVM_03


因此,充分利用内存,成为趋势,而Memory locality成为影响相应时间最重要的因素之一。硬盘内存价格曲线:

Alluxio : 开源分布式内存文件系统_数据_04


Alluxio with Spark

  • Spark是一种基于内存的运算框架。
  • 在JVM的内存中存储一份,以保证较少的网络通信和读写。
  • 记录存储数据的世代(lineage),当数据丢失时,基于世代将job重新运行,得到相应数据。


Issue 1:数据分享(Data Sharing)在analytics pipeline中成为瓶颈。

Alluxio : 开源分布式内存文件系统_spark_05

在Spark中,如果job2需要Job1运算的数据,Job1首先需要将数据写入到HDFS的block中,会产生硬盘甚至跨网络的读写,同时在HDFS中默认数据需要写三份,因此造成性能的损失。


Issue 1 的解决方案:内存数据在不同的job和framework中进行分享。

Alluxio : 开源分布式内存文件系统_文件系统_06

Alluxio在HDFS/ Amazon S3和计算引擎中间提供了中间层,Spark的Job1不需要写到HDFS中,而只需要写到Alluxio的内存中,Job2可以从内存中读取相应数据。


Issue 2: 当计算引擎的进程损坏,Cache 丢失,Spark只能重新启动并计算恢复数据。

Alluxio : 开源分布式内存文件系统_spark_07

Issue 2 解决方案:

当计算引擎损坏,由于中间由Alluxio存储数据,可以保证内存中的数据安全。

问题1:因为在传统计算引擎中,数据存储在同一个JVM中,而基于Alluxio的中间件将数据存到了不同的JVM中,跨JVM读写会不会影响性能?

答:跨JVM读写会影响性能,在Alluxio中,使用了RamDisk来模拟本地文件系统的方式。


问题2:如果Alluxio crash,怎么保证数据安全?

答:在Alluxio中,数据不是保存在JVM中,而是保存在RamDisk中,RamDisk为独立的进程,因此可以保证数据安全。


问题3:Alluxio是否可以支持随机读写?

答:可以进行随机读,给定一个offset。新创立的文件一旦关闭,就会变成immutable


Issue 3: 内存数据的重复和Java的垃圾回收。Issue 3 解决方案:

由于计算引擎与存储引擎共享同一个进程,而不是放在自己的JVM中,可以减少垃圾回收和数据重复。


Alluxio 架构: Memory-centric storage architecture

核心思想:将世代(lineage)由计算引擎放到了数据层处理。


Alluxio : 开源分布式内存文件系统_文件系统_08

1,存储架构:

master节点负责管理worker节点,数据存储在worker节点中。

对于每一个worker,worker daemon为一个JVM,负责管理Ramdisk,数据存储在Ramdisk中。

如果有高可用性的需求,可以设置standby master和zookeeper来容错,这里会有性能损耗。


2,世代(Lineage) 保证数据的Reliability

Alluxio : 开源分布式内存文件系统_文件系统_09

1,当数据E丢失后,通过世代找到相应的之前数据,重新部署一个Job将数据重新计算。

2,将数据在底层文件系统中备份。


问题:HDFS中每个数据块会默认有多个备份, 从而在极端情况下会有更大的读取带宽。 在Alluxio中,由于数据存储在同一份内存中,如何处理多个Job同时读取同一份数据的情况。

答: Alluxio的数据在内存当中,本身可以提供更大的本地读取带宽。另外Alluxio也允许让用户绕过Alluxio直接从底层的持久化文件系统读取数据。


3,分层存储(Tiered Storage):


当数据大小超过内存容量,如何处理?

Alluxio不仅仅管理内存,同样可以管理SSD,HDD等系统资源。保证Alluxio可以正常运行。

One Large Scale deployment:

某公司实现了1000 workder 的Alluxio部署,每个机器几G-几十个G的内存 。

Alluxio : 开源分布式内存文件系统_spark_10


4,可插拔的数据管理(Pluggable Data Management)

Alluxio : 开源分布式内存文件系统_JVM_11

基于每一个worker,暂时没有跨worker。对于计算机系统来说,长期以来人们在不同的场景下反复使用两个经典但行之有效的方案:

1,cache。

2,增加一个中间层(比如增加一层指针,如virtual memory)


Q: Alluxio 有没有全局的分层存储的allocation/eviction管理?

A: 目前Alluxio的cache策略是基于每一个worker单独的决策,暂时没有实现跨worker的分层存储的协作。


5,Pin Data

Alluxio : 开源分布式内存文件系统_spark_12

对于重要的数据,可以通过Pin来显示的把数据“挂”在内存层

问题:对于Pin的data,怎么保证底层数据修改之后上层数据的更新。

答:给用户提供命令去主动更新数据。


6,透明命名(Transparent Naming)

Alluxio : 开源分布式内存文件系统_spark_13

 

Alluxio可以提供将创建,重命名和删除文件等操作从Alluxio映射到底层存储层(比如上图中的HDFS 或者S3)的对象中,从而实现将底层存储系统中的文件与其Alluxio自身管理的文件系统的完全同步。

7,统一命名空间(Unified Namespace)


Alluxio : 开源分布式内存文件系统_spark_14


Alluxio可以挂载多个不同的文件系统到一个统一的命名空间当中,如不同的文件系统A和文件系统B可以同时挂载到Alluxio上面的不同目录当中。

在不同的数据文件系统中可以共享数据。

此操作可以on the fly,被管理员进行操作。


Alluxio Case Study:

百度:

性能提升:30x

框架: SparkSQL

存储系统: Baidu’s File System

存储媒介: MEM+HDD

节点数量: 100+

空间管理大小:1PB+

Q: 为什么可以提供30x的性能提升?

A: 百度的一项业务采用计算和存储分离的架构:比如计算集群在一个城市,而数据存储集群在另一个城市。数据存储集群计算资源较少,而计算集群没有足够存储资源。百度将Alluxio部署到了计算集群中。从而将数据存储在了Alluxio中,从而使计算集群可以在本地完成读写。


去哪儿网:

框架:Spark Streaming

存储系统:HDFSS

存储媒介:MEM+HDD

节点数量:200+


Barclays:

框架:SparkSQL

存储系统:None

存储媒介: Memory


某石油公司:

框架: Spark

存储数据:ClusterFS

存储媒介:MEM only

性能提升:在传统文件系统中使用Spark进行数据处理。


某SAAS公司:

框架:Impala

存储系统: S3

存储媒介: MEM+SSD

性能提升:15x


Alluxio新特性:

    1. Alluxio Key-value (Alpha)
    2. Native Swift Integration(Openstack下面的文件系统)
    3. Alibaba Object Storage Service Integration
    4. Users/Groups in File System
    5. ACL Permission
    6. Read/Write Location Preference Policy
    7. Improved Yarn and Mesos Integration

    注:本文系2016年2月29日太阁三人行“一起聊聊Alluxio”的总结分享,感谢Menglei Sun的整理,Dr Bin Fan的校注

    标签:存储,文件系统,开源,内存,数据,Alluxio,分布式
    From: https://blog.51cto.com/u_11908275/6393406

    相关文章

    • 微信开源组件WCDB漫谈及Demo
      前言移动端的数据库选型一直是一个难题,直到前段时间看到了WeMobileDev(微信前端团队)放出了第三个开源组件-WCDBWCDB(WeChatDataBase)是微信官方的移动端数据库组件,致力于提供一个高效、易用、完整的移动端存储方案项目目录微信团队怎么说基于SQLCipherWCDB-iOS/MacWCDB-Android数......
    • 青语言开源发布
      青语言发布6月1日,在这个充满欢声笑语的日子里,数心开物工作室开源发布了一门面向青少年、儿童和非专业人士的中文编程语言——青语言。青语言主页:https://qingyuyan.cn青语言文档:https://doc.qingyuyan.cn青语言社区:https://forum.qingyuyan.cn青语言仓库:https://gitee.com/Nj......
    • Cassandra——类似levelDB的基于p2p架构的分布式NOSQL数据库
       C:Consistency一致性•A:Availability可用性(指的是快速获取数据)•P:ToleranceofnetworkPartition分区容忍性(分布式)10年前,EricBrewer教授指出了著名的CAP理论,后来SethGilbert和Nancylynch两人证明了CAP理论的正确性。CAP理论告诉我们,一个分布式系统不可能满足......
    • 在学习分布式系统时遇到的五个常见误解
      哈喽大家好,我是咸鱼我们知道,随着企业规模或者说业务规模的不断扩大,为了应对不断增长的业务需求和提高系统的可伸缩性、可靠性和性能,计算机系统由一开始的单体系统逐渐发展成分布式系统那么今天咸鱼给大家介绍一些关于小白在学习分布式系统遇到的一些常见误解误解1.网络是可靠的......
    • 开源.NetCore通用工具库Xmtool使用连载 - 发送短信篇
      【Github源码】《上一篇》介绍了Xmtool工具库中的发送邮件类库,今天我们继续为大家介绍其中的发送短信类库。发送短信就像发送邮件一样,在软件系统中使用非常普遍,甚至比发送邮件还要常见,有些甚至是软件标配功能;例如现在的短信验证码登录、通过短信找回密码等等。发送短信需要......
    • 分布式事务
      分布式事务回顾事务什么是事务?一组对数据库的操作,整体要么一起成功,要么一起失败事务的特性?一致性原子性在项目中做事务控制?怎么做?在启动类上加@EnableTransactonManager事务加在service层,加在实现类上或者接口上,都可以@transactional分布式事务背景CAP:......
    • 生态共建丨崖山数据库系统与杉岩分布式存储系统完成兼容互认证 
      近日,深圳计算科学研究院(以下简称:深算院)自主研发设计的数据库管理系统YashanDBV22.2产品与深圳市杉岩数据技术有限公司(以下简称:杉岩数据)的分布式存储系统完成兼容性互认证。测试结果表明,双方产品完全兼容,在功能、性能及兼容性方面表现良好,整体运行稳定高效。崖山数据库系统YashanDB......
    • Greenplum——升级的分布式PostgresSQL
      Greenplum数据库基于PostgreSQL开源技术。本质上讲,它是多个PostgreSQL实例一起充当一个数据库管理系统。Greenplum以PostgreSQL8.2.15为基础构建,在SQL支持、特性、配置选项和终端用户功能方面非常像PostgreSQL,用户操作Greenplum就跟平常操作PostgreSQL一样。不过,为了支持Greenplum......
    • 2022 Kube-OVN开源社区年度报告
      感谢各位社区小伙伴陪伴Kube-OVN又走过了快速发展的一年,随着Kubernetes技术的广泛应用,CNI网络插件的使用率逐步攀升,Kube-OVN社区也在不断成长。让我们一起跟随这篇文章,走进Kube-OVN的2022。  产品功能持续优化 2022年,是Kube-OVN夯实基础、巩固优势的一年,完成了从1.10到1......
    • 分布式锁& 分布式事务
      目录分布式事务什么是分布式事务?分布式事务的实现方式有哪些?两阶段提交和三阶段提交的区别是什么?TCC事务模型是如何解决分布式事务的?分布式事务的强一致性和最终一致性有什么区别?如何保证分布式事务的可靠性?分布式事务的优缺点是什么?分布式事务什么是分布式事务?分布式事务是指......