alluxio 【1】是一个分布式文件系统,主要用来做大数据处理,和数据源之间的中间层。
它本身支持内存和SSD,HDD的tiering,但实践中主要感兴趣的是它的内存缓存。
类似Gfs,它有master,workers,和clients。client向master查询数据位置,然后向本地workers提IO请求。workers之间通过Grpc做数据请求。没有复制,读数据在请求节点上也会缓存。
Alluxio本身分为lineage和persistent两个部分。其中lineage部分是可选的。
Cloudera的数据表明,写很重要。34%的用户写的和Input一样多。Alluxio没有复制的原因是这样可以提供更高的写性能。用同步复制不可能提供无损的写性能。用lineage来track文件的历史(先把如何从dataset A构造dataset B的各种参数,程序写入Persistent layer。aka linage log),而且track jobs,并用checkpoint来保护数据,加上journal,可以重新计算出数据。Alluxio和Haoyuan的贡献是提供了bounded recomputation time. 在一个连续写入的系统中,如果perisistent的速度慢于进入的速度,最终会把recomputation的速度无限延长。Alluxio采用的方法是采用一个叫Edge algorithm的算法做异步本地复制,以及他称为recomputation资源分配的机制来保证QoS。
Recomputation Bound的证明写的很简单,没有详细写(好像表述不严谨,也可能是我理解不了),我用白话翻译一下就是,假设我们总是checkpoint叶子,而且是假设是连续不断的checkpoint&#x