我试图弄清楚hadoop缓存创建的符号链接是否支持目录。
它在分布式模式下工作良好
它在本地模式下失败
javadoc/文档非常稀疏,对此只字不提
短版本
我想 DistributedCache.addCacheFile(URI.create("file:/tmp/myfile#foo/bar"), conf)
使 /tmp/myfile
在当前工作目录下的名称下可用 foo/bar
.
集群上一切正常,但在本地模式下失败。基本上, LocalDistributedCacheManager.setup
尝试使用创建符号链接 ln -s /tmp/myfile $cwd/foo/bar
但是 foo
从未被创建过。
详细要求
我想将一个或多个avro sortedkeyvaluefile添加到hadoop分布式缓存中。 SortedKeyValueFile
与hadoop类似 MapFile
s。它们实际上是由两个文件组成的目录:一个索引文件和一个数据文件。这两个文件必须有一个特定的名称( index
以及 data
)并且必须在同一目录中。
如果我想在分布式缓存中至少放置两个“文件”,我就不能将文件展平到根目录中。我必须保留/定义文件层次结构。
设置:hadoop2.6.0/cdh5.4/crunch。因为我使用的是crunch,所以我不得不使用弃用的 DistributedCache
api自 Job.addCachefile()
没有暴露。
待回答的问题
这是本地模式的错误还是我滥用了分布式缓存?
人们如何推动这样的事情 MapFile
或者 SortedKeyValueFile
进入hadoop缓存?
1条答案
按热度按时间yvt65v4c1#
这是本地模式的错误还是我滥用了分布式缓存?
在本地模式下不支持distributedcache。它将只在伪分布式模式或集群模式下运行。
人们如何将mapfile或sortedkeyvaluefile之类的东西推送到hadoop缓存中?
你必须把所有的东西都放到文件中,放到hdfs中,然后在mapside中从文件中读取并放到hashmap中。
如何从分布式缓存中读取:
将文件添加到分布式缓存: