gpt4 book ai didi

java - 目录是否由 Hadoop 缓存符号链接(symbolic link)处理?

转载 作者:可可西里 更新时间:2023-11-01 16:08:54 28 4
gpt4 key购买 nike

我想弄清楚 Hadoop 缓存创建的符号链接(symbolic link)是否支持目录。

  • 它在分布式模式下运行良好
  • 在本地模式下失败
  • Javadoc/文档非常稀疏,什么也没说

精简版

我希望 DistributedCache.addCacheFile(URI.create("file:/tmp/myfile#foo/bar"), conf) 使 /tmp/myfile 可用在名称 foo/bar 下的当前工作目录中。

集群上一切正常,但在本地模式下失败。基本上,LocalDistributedCacheManager.setup 尝试使用 ln -s/tmp/myfile $cwd/foo/bar 创建符号链接(symbolic link),但 foo 从未被已创建。

详细要求

我要添加一个或几个Avro SortedKeyValueFile到 Hadoop 分布式缓存。

SortedKeyValueFile 类似于 Hadoop MapFile。它们实际上是由两个文件组成的目录:一个索引文件和一个数据文件。这两个文件必须具有特定名称(indexdata)并且必须位于同一目录中。

如果我希望能够将至少两个这些"file"放入分布式缓存中,我不能将文件展平到根目录中。我必须保留/定义文件层次结构。

设置:Hadoop 2.6.0/CDH 5.4/Crunch。因为我使用的是 Crunch,所以我必须使用已弃用的 DistributedCache API,因为 Job.addCachefile() 未公开。

需要回答的问题

  • 这是本地模式的错误还是我滥用了分布式缓存?
  • 人们如何将 MapFileSortedKeyValueFile 之类的东西推送到 Hadoop 缓存中?

最佳答案

这是本地模式的错误还是我在滥用分布式缓存?

Distributedcache is not supported in local mode. It will run only in pseudo-distributed mode or in cluster mode.

人们如何将 MapFile 或 SortedKeyValueFile 之类的东西推送到 Hadoop 缓存中?

You have to put everything in the file and place it in HDFS and in mapside read it from the file and put it in hashmap.

如何从分布式缓存中读取:

@Override
protected void setup(Context context) throws IOException,InterruptedException
{
Path[] filelist=DistributedCache.getLocalCacheFiles(context.getConfiguration());
for(Path findlist:filelist)
{
if(findlist.getName().toString().trim().equals("mapmainfile.dat"))
{

fetchvalue(findlist,context);
}
}

}
public void fetchvalue(Path realfile,Context context) throws NumberFormatException, IOException
{
BufferedReader buff=new BufferedReader(new FileReader(realfile.toString()));
//read the file and put it in hashMap
}

将文件添加到分布式缓存:

DistributedCache.addCacheFile(new URI("/user/hduser/test/mapmainfile.dat"),conf);

关于java - 目录是否由 Hadoop 缓存符号链接(symbolic link)处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32996717/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com