【发布时间】:2015-10-07 15:44:51
【问题描述】:
我想弄清楚 Hadoop 缓存创建的符号链接是否支持目录。
- 在分布式模式下运行良好
- 在本地模式下失败
- Javadoc / 文档非常稀少,对此只字不提
短版
我希望DistributedCache.addCacheFile(URI.create("file:/tmp/myfile#foo/bar"), conf) 在当前工作目录中以foo/bar 的名义提供/tmp/myfile。
集群上一切正常,但在本地模式下失败。基本上,LocalDistributedCacheManager.setup 尝试使用 ln -s /tmp/myfile $cwd/foo/bar 创建符号链接,但从未创建过 foo。
详细要求
我想将一个或多个 Avro SortedKeyValueFile 添加到 Hadoop 分布式缓存中。
SortedKeyValueFiles 类似于 Hadoop MapFiles。它们实际上是一个由两个文件组成的目录:一个索引文件和一个数据文件。这两个文件必须有一个特定的名称(index 和data)并且必须在同一个目录中。
如果我希望能够将这些“文件”中的至少两个放在分布式缓存中,我无法将文件展平到根目录中。我必须保留/定义文件层次结构。
设置:Hadoop 2.6.0 / CDH 5.4 / Crunch。因为我使用的是 Crunch,所以我必须使用已弃用的 DistributedCache API,因为 Job.addCachefile() 没有公开。
有待回答的问题
- 是本地模式的错误还是我滥用了分布式缓存?
- 人们如何将
MapFile或SortedKeyValueFile之类的内容推送到 Hadoop 缓存中?
【问题讨论】:
标签: java hadoop mapreduce distributed-cache