对于高频率使用的数据,用户可以将其放人某文件夹,然后向各个DataNode发出指示将其中的数据缓存在内存里。这种情况下,用户还可以利用一组zero-copy的API,同时由于不再需要反复验证数据完整性,可以显著提高计算效率。

  各DataNode的缓存由NameNode统一管理,周期性地向后者发送cache report。NameNode周期性地查询自己的缓存指令集(Set of cache directives)来决定需要将哪些块缓存或解除缓存。

  每条缓存指令(Cache directive)可以定义一条需要被缓存路径,如果指定的是文件夹,则只有其中第一级的文件能被缓存。指令中还可以指定一些额外的参数,如复制系数和过期时间等。

  缓存池(Cache pool)是一个管理单元的概念,对于一组缓存指令集,对不用的用户进行指令的读,写,添加,删除等权限管理功能。同时还可以用于资源管理,如规定最大缓存量。还可以提供一些缓存数据的统计信息。另外,还可以为它的所有cache设置一个最大生存时间。

  目前只支持文件和文件夹级的缓存,将来可能会支持文件块及子块级的缓存。

posted on 2014-04-22 23:03  risan  阅读(170)  评论(0编辑  收藏  举报