前言
本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系
正文
HDFS允许用户将一部分目录或文件缓存在 of-heap 内存中,以加速对这些数据的访问效率,该机制被称为集中式缓存管理。
集中式缓存管理的好处体现在哪?
- 提高集群的内存利用率。当使用操作系统的缓存时,对一个数据块的重复读会导致所有的副本都会被放到缓冲区当中,造成内存浪费;当使用集中式缓存时,用户可以指定n个副本中的m个被缓存,可以节约n-m的内存。
- 防止那些被频繁使用的数据从内存中清除。当使用操作系统缓存时,操作系统使用自带的内存置换算法管理内存,此时容易让热数据不断写入内存,之后从内存中清除,导致数据访问的不稳定。
- 提高数据读取效率:
- DataNode 缓存统一由 NameNode 来管理,上层计算框架的调度器査询数据块的缓存列表,并通过一定的调度策略将任务尽可能调度到缓存块所在节点上,以提高数据读性能。
- 当数据块被 DataNode 缓存后,HDFS 以使用一个高效的、支持 zero-copy 的新 API 加快读速度,这是因为缓存中数据块的校验码已经被计算过,当使用新 API 时,客户端开销基本是零。HDFS提供了API和命令行两种方式,让用户管理集中式缓存系统中的文件和目录, 你可以根据需要将一个文件增加到缓存中,或从缓存中移除。