欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Alluxio原理和应用场景随笔

程序员文章站 2022-07-23 10:01:30
Alluxio的基本特性:透明数据缓存机制;抽象数据访问API;和适用应用场景分析,主要包括复杂系统设计解耦和计算存储分离应用场景的性能加速。 ......

    上周末有幸参加了alluxio(之前也叫tachyon),七牛云和示说网举办的alluxio上海meetup,之前我并没有在真实应用场景中使用过alluxio,对其适用的应用场景一直报怀疑态度。自信聆听其创始人的演讲之后,感觉这个项目还挺有意思,对alluxio简单总结一下:

  • dal(数据访问层)

Alluxio原理和应用场景随笔

    alluxio提供了各种文件访问api,包括兼容hdfs的api,alluxio特有的数据访问api,rest api和fuse api,特别是fuse api,支持posix标准的文件访问接口,让很多单机版的程序(如tensorflow),可以享受大数据和云端的数据存取。不过它并不支持随机的文件写访问,想想也合理,毕竟底层文件存储系统可能是hdfs或者s3;

  • 统一数据访问

    依然如上图,alluxio底层的存储系统可以是亚马逊的s3,google的存储,阿里云oss,也可以是hdfs,甚至是单机的sas,nfs。让这些文件系统都可以无缝与现有的大数据平台(通过hdfs compatible api),或者单机版软件(通过fuse api)完全兼容。

  • 透明的文件缓存抽象

    高效访问数据的时候,如何做好文件缓存,其实对应应用程序开发者而言,有时候出于性能的考虑是非常重要的,alluxio提供了透明的缓存方案,让内存(dram),本地快速存储器(ssd),本地慢速存储器(hdd)以及云端存储(hdfs/oss/s3)等,形成一个层次化的缓存机制,让热的数据尽可能接近快速访问设备,这个对于深度学习和其它反复迭代访问数据的模型而言,性能的提升就不言而喻了。

 

那么alluxio的主要应用场景有哪些呢?

  1. 基于sas平台单机应用,想无缝扩容,可以考虑用alluxio的fuse api,底层用hdfs或者其它云端存储。
  2. 基于hdfs的分布式应用,想访问单机或者nfs的设备上的文件,可以考虑用hdfs compatiable api。
  3. 反复迭代读取远端(比如云端,跨数据中心,跨集群,也可以是超大hdfs集群中加速某个应用的数据访问)数据,可以部署alluxio

alluxio应用场景在传统的小型集群中可能碰不太到,但是越来越多的应用都是混合云的情况,特别是数据和计算分离的场景,异构的数据存储带来的系统耦合,都可以通过alluxio来解耦,不过目前alluxio也有自身的一些问题,多个副本可能同时存在多个alluxio个节点上,造成了事实上的数据缓存浪费,2.0版本中可能会有所更新。

不过最有意思的,来自与alluxio初创成员讲分布式系统设计中的坑,不完全是针对alluxio的,而是开发alluxio类似这种大型分布式系统,肯能碰到的经验和收获,包括netty的资源泄露问题,jvm的问题等等,更多细节可以看看示说网alluxio 2.0 overview分享。