云社区 博客 博客详情
云社区 博客 博客详情

【安利】云上使用Alluxio

施浩亮 发表于 2020-06-13 11:13:34 06-13 11:13
施浩亮 发表于 2020-06-13 11:13:34 2020-06-13
0
1

【摘要】 alluxio简介以及云上使用alluxio的好处

Alluxio简介

Alluxio是源自加州大学伯克利分校AMPlab的BDAS项目,BDAS里面还包含Apache spark和Apache mesos。spark作为通用计算引擎,mesos是调度引擎,而alluxio(当时名为Tachyon)则定位是存储。Alluxio和HDFS之类的存储系统有着本质的不同,它是一个虚拟存储系统,是构建在其他存储系统之上存储系统,是一个多文件系统之上的一个分布式缓存层。官方的定位是Data orchestration for cloud,出处见下图:

Data orchestration指的是Alluxio的Unified namespace和底层存储系统对接的多样性,上图的下半部分,描述了能够对接的底层存储(官方名UnderFileSystem,简称UFS),包括经典的hdfs、ceph以及各家云服务的存储。alluxio支持类似linux操作系统的mount操作,将这些UFS挂载到alluxio的统一命名空间中,让alluxio之上的各个计算引擎能够用一致的接口来操作这些存储。Alluxio本身类似于hdfs,能够管理每个节点的存储(包括内存),来用于缓存UFS上的数据以及元数据。


在云上使用alluxio的优势

明白了Data orchestration的意思,那为什么是Data orchestration for cloud呢?我觉得,一来是蹭热点,现在云计算的生意越来越大,各个企业纷纷转型“上云”,各个大数据开源生态也是一样,比如Hadoop社区很早就支持了aws的s3协议的接口,二来是alluxio的在云上确实带来了几个好处:

  • 接口层的统一,云上的存储一般是采用自己的接口,有自己的sdk。企业上云或者跨云搬迁会面临着数据从原有数据中心/云服务转一个新的云平台上去,那么存储系统的对接是一个大问题:由于大数据生态的复杂性,有很多种计算引擎的选型,这么多种计算引擎上的业务流程要迁移到云上,势必要做很多处的适配修改,每个组件都要做一把修改来支持新的云平台的存储,这个事情就很头大了。但如果基于alluxio来做,那么计算引擎可以不关注底层对接的存储是什么,在迁移过程中,你可以做到老数据在hdfs、新数据在云服务的对象存储的方式。当然,采用alluxio也是有适配成本的,如果你在上云过程中,对接的存储类型较多(既有HDFS、又有云存储),那么我认为这种适配投入的可接受的。

  • 补齐对象存储接口的短板:在HadoopFileSystem对接对象存储时,因为对象存储的存储接口是KV型,FileSystem的接口是模拟出来的,所以会有一些操作水土不服,典型的就是:递归list目录rename

    • 递归list目录,由于KV型的存储是没有树形的元数据结构的,因此KV型一般是使用prefix scan来模拟这件事情,效率比树形结构的文件系统元数据来说是低不少。alluxio由于缓存了元数据,可以有效避免这样的低效操作,因此在这块alluxio解决得还算不错(前提是缓存到了元数据)。list操作一般发生在计算引擎规划task如何分配的时候,属于整个分布式任务无法并行的路径上,因此对整体性能影响也是较大的。

    • rename,这个就更惨了,在HDFS中,rename是个原子操作,效率很高。而在对象存储做rename,那就是个copy+delete,原子性也被破坏了。这个操作大概率发生在一个输出数据的分布式任务,最终要保证所有数据一下子可见时使用的,如hive的写入表/分区数据等,发生在数据全部写完之后。这个问题很严重,目前也有几种解法,如AWS的S3A Committers,不再是使用rename保证原子性,而是使用s3的多段上传功能保证原子性,还有就是Huawei的OBS并行文件系统,直接在对象存储上支持了rename的操作。而alluxio针对这个场景,支持一种persist on rename的方式,数据写入时,只写入缓存,不写穿(指不写到UFS中),由于hive类数据插入任务,数据先由各节点的任务写到临时目录,最后由driver进程提交,也就是rename到最终目录,rename操作发生时,alluxio才把缓存的数据写入到UFS的对象存储中,减少一次对象存储的写入。

  • 降低请求、传输成本和保证性能:对象存储往往是对请求此处以及数据流量是要计费的,参考s3定价,而alluxio由于其缓存的特性,基于alluxio访问对象存储时,可以有效减少对云上对象存储操作数和流量。另外,云上对象存储服务一般是逻辑多租的形式,虽然有SLA保障,但是最高性能是浮动的,取决于其存储池的繁忙程度等因素,如果基于alluxio来使用对象存储,可以保证热数据的效率,避免对象存储的性能浮动造成的不稳定情况。

尾巴

假如你的业务需要上云,业务存在多样性,使用了很多个大数据生态的组件,且也准备将存储系统从HDFS换到云上的对象存储,那么可以考虑下尝试使用alluxio。最后安利,华为云MRS服务在1.9.2版本起,已经支持了alluxio组件,并且在alluxio之上可以使用hive、presto、spark、mr等计算引擎来做验证,有需要同学可以去试一下。

登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 1
点赞
分享文章到微博
分享文章到朋友圈

评论 (0)


0/1000
评论

登录后可评论,请 登录注册

评论

您没有权限执行当前操作

温馨提示

您确认删除评论吗?

确定
取消
温馨提示

您确认删除评论吗?

删除操作无法恢复,请谨慎操作。

确定
取消
温馨提示

您确认删除博客吗?

确定
取消

确认删除

您确认删除博客吗?

确认删除

您确认删除评论吗?

温馨提示

登录超时或用户已下线,请重新登录!!!

确定
取消