HDFS缓存机制
-
问:请描述HDFS的缓存机制。
答:
HDFS提供了一个高效的缓存加速机制—— Centralized Cache Management ,它允许用户指定要缓存的HDFS路径。NameNode会和保存着所需Block数据的所有DataNode通信,并指导它们把块数据缓存在堆外内存(off-heap)中进行缓存。DataNode会通过心跳机制向NameNode汇报缓存状态。
NameNode查询自身的缓存指令集来确定应该缓存哪个路径。缓存指令持久化存储在fsimage和edit日志中,可以通过Java和命令行API被添加、移除或修改。
在使用HDFS完成数据缓存时,首先要创建一个缓存池。缓存池是一个管理实体,用于管理缓存指令组。缓存池拥有类UNIX的权限,可以限制哪个用户和组可以访问该缓存池。写权限允许用户向缓存池添加、删除缓存指令 。读权限允许用户列出缓存池内的缓存指令,还有其他元数据。
缓存池也可以用于资源管理,可以设置一个最大限制值,用于限制缓存的数据量。
缓存池创建成功后,可以通过命令,将HDFS某个目录、文件缓存到缓存池中,从而完成数据缓存功能。
#创建缓存组,默认为cache_data hdfs cacheadmin -addPool cache_data -mode 0777 #生成一个1GB大小的文件 dd if=/dev/zero of=/tmp/test.zero bs=1M count=1024 #将文件上传到HDFS hdfs dfs -put /tmp/test.zero /data #生成缓存指令 hdfs cacheadmin -addDirective -path /data -pool cache_data -ttl 1d #显示缓存池的信息 hdfs cacheadmin -listPools -stats cache_data #统计信息,显示EXP Date hdfs cacheadmin -listDirectives -path /data #删除缓存指令 hdfs cacheadmin -removeDirectives -path /data #删除缓存池 hdfs cacheadmin -removePool cache_data
今天的单点,你是否get到了呢?每日单点,用5分钟收获一点!今天你打卡了没?
后话
如果有帮助的,记得点赞、关注。在公众号《数舟》中,可以免费获取专栏《数据仓库》配套的视频课程、大数据集群自动安装脚本,并获取进群交流的途径。
我所有的大数据技术内容也会优先发布到公众号中。如果对某些大数据技术有兴趣,但没有充足的时间,在群里提出,我为大家安排分享。
公众号自取: