Hadoop从2.3.0版本开始支持HDFS缓存机制,HDFS允许用户将一部分目录或文 件缓存在HDFS当中,NameNode会通知拥有对应块的DataNodes将其缓存在
DataNode的内存当中。
优势
- 防止那些被频繁使用的数据从内存中清除
- 因为DataNode的缓存由NameNode来管理,applications在做任务安排时可以查询这个缓 存的列表,使用一个被缓存的块副本能够提高读性能
- 当块被DataNode缓存之后,客户端可以使用一个新的、高效的、zero-copy的读API,因 为缓存中的数据已经被计算过checksum,当使用新API时,客户端基本上是零开销的
- 可以提高集群的内存利用率。当使用操作系统的缓存时,对一个块的重复读会导致所有 的副本都会被放到缓冲区当中,当使用集中式缓存时,用户可以指定n个副本中的m个 才会被缓存,可以节约n-m的内存
使用场景
- 集中式缓存对那些频繁访问的的文件是非常有用的,例如hive中经常被使用的fact表就 非常适合缓存
- 另一方面,缓存一年的查询结果可能没那么有用了,因为这个结果可能只会被查看一次
有助于提高混合类型作业的SLA性能,把高优先级的数据缓存起来可以确保它不会与低 优先级的数据竞争磁盘IO