我想在hadoop-2.3中使用Centralized Cache。
这是我的步骤。 (10个节点,每个节点6g内存)
1.my文件(45M)要缓存
[hadoop@Master ~]$ hadoop fs -ls /input/pics/bundle
Found 1 items
-rw-r--r-- 1 hadoop supergroup 47185920 2014-03-09 19:10 /input/pics/bundle/bundle.chq
2.创建缓存池
[hadoop@Master ~]$ hdfs cacheadmin -addPool myPool -owner hadoop -group supergroup
Successfully added cache pool myPool.
[hadoop@Master ~]$ hdfs cacheadmin -listPools -stats
Found 1 result.
NAME OWNER GROUP MODE LIMIT MAXTTL BYTES_NEEDED BYTES_CACHED BYTES_OVERLIMIT FILES_NEEDED FILES_CACHED
myPool hadoop supergroup rwxr-xr-x unlimited never 0 0 0 0 0
3.addDirective
[hadoop@Master ~]$ hdfs cacheadmin -addDirective -path /input/pics/bundle/bundle.chq -pool myPool -force -replication 3
Added cache directive 2
4.listDirectives
[hadoop@Master ~]$ hdfs cacheadmin -listDirectives -stats -path /input/pics/bundle/bundle.chq -pool myPool
Found 1 entry
ID POOL REPL EXPIRY PATH BYTES_NEEDED BYTES_CACHED FILES_NEEDED FILES_CACHED
2 myPool 3 never /input/pics/bundle/bundle.chq 141557760 0 1 0
BYTES_NEEDED是正确的,但BYTES_CACHED为零。似乎已经计算了大小但是将文件放入内存的缓存操作尚未完成。所以如何将我的文件缓存到内存中。 非常感谢你。
答案 0 :(得分:0)
我们在Hadoop 2.3中修复了一堆错误。我建议至少使用Hadoop 2.4来使用HDFS缓存。
要了解更多细节,我需要查看日志消息。
答案 1 :(得分:0)
包括hdfs dfsadmin -report
的输出也很有用,并且确保您已遵循此处的设置说明(即增加ulimit并设置dfs.datanode.max.locked.memory):
http://hadoop.apache.org/docs/r2.3.0/hadoop-project-dist/hadoop-hdfs/CentralizedCacheManagement.html