共计 1987 个字符,预计需要花费 5 分钟才能阅读完成。
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
使用:
[hadoop@master hadoop]$ hdfs cacheadmin -addPool admin【添加一个 pool】
Successfully added cache pool admin.
[hadoop@master hadoop]$ hdfs cacheadmin -listPools【查看 pool 列表】
Found 1 result.
NAME OWNER GROUP MODE LIMIT MAXTTL
admin hadoop hadoop rwxr-xr-x unlimited never
[hadoop@master hadoop]$ hdfs cacheadmin -addDirective -path /input -pool admin【将一个目录加入 pool】
Added cache directive 1
[hadoop@master hadoop]$ hdfs cacheadmin -listDirectives【查看已缓存的数据】
Found 2 entries
ID POOL REPL EXPIRY PATH
1 admin 1 never /input
2 test 1 never /output/0
[hadoop@master hadoop]$ hdfs cacheadmin -removeDirective 1【按 id 清除缓存】
Removed cached directive 1
[hadoop@master hadoop]$ hdfs cacheadmin -listDirectives
Found 1 entry
ID POOL REPL EXPIRY PATH
2 test 1 never /output/0
[hadoop@master hadoop]$ hdfs cacheadmin -removeDirectives -path /output/0【按 path 清除缓存】
Removed cache directive 2
Removed every cache directive with path /output/0
[hadoop@master hadoop]$ hdfs cacheadmin -listDirectives
Found 0 entries
相关阅读:
将本地文件拷到 HDFS 中 http://www.linuxidc.com/Linux/2013-05/83866.htm
从 HDFS 下载文件到本地 http://www.linuxidc.com/Linux/2012-11/74214.htm
将本地文件上传至 HDFS http://www.linuxidc.com/Linux/2012-11/74213.htm
HDFS 基本文件常用命令 http://www.linuxidc.com/Linux/2013-09/89658.htm
Hadoop 中 HDFS 和 MapReduce 节点基本简介 http://www.linuxidc.com/Linux/2013-09/89653.htm
《Hadoop 实战》中文版 + 英文文字版 + 源码【PDF】http://www.linuxidc.com/Linux/2012-10/71901.htm
Hadoop: The Definitive Guide【PDF 版】http://www.linuxidc.com/Linux/2012-01/51182.htm
更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13