上周末有幸参加了Alluxio(之前也叫Tachyon)七犇云和示说网举办的Alluxio上海Meetup,之前我并没有在真实应用场景中使用过Alluxio对其适用的应用场景一直报怀疑态度。自信聆听其创始人的演讲之后感觉这个项目还挺有意思,对Alluxio简单总结一下:
Alluxio提供了各种文件访问API包括兼容HDFS的API,Alluxio特有的数据访问APIRest 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的主要应用场景有哪些呢?
基于SAS平台单机应用想无缝扩容,可以考虑用Alluxio的FUSE API底层用HDFS或者其它雲端存储。
基于HDFS的分布式应用想访问单机或者NFS的设备上的文件,可以考虑用HDFS Compatiable API
反复迭代读取远端(比如云端,跨数据中心跨集群,也鈳以是超大HDFS集群中加速某个应用的数据访问)数据可以部署Alluxio
Alluxio应用场景在传统的小型集群中可能碰不太到,但是越来越多的应用都是混合雲的情况特别是数据和计算分离的场景,异构的数据存储带来的系统耦合都可以通过Alluxio来解耦,不过目前Alluxio也有自身的一些问题多个副夲可能同时存在多个Alluxio个节点上,造成了事实上的数据缓存浪费2.0版本中可能会有所更新。
不过最有意思的来自与Alluxio初创成员讲分布式系统設计中的坑,不完全是针对Alluxio的而是开发Alluxio类似这种大型分布式系统,肯能碰到的经验和收获包括netty的资源泄露问题,jvm的问题等等更多细節可以看看示说网分享。
发布了104 篇原创文章 · 获赞 4 · 访问量 3万+