gpt4 book ai didi

hadoop - Hadoop DistributedCache导致IOException

转载 作者:行者123 更新时间:2023-12-02 21:55:54 25 4
gpt4 key购买 nike

我已经编写了一些代码来使用Hadoop执行自连接任务。为此,我使用DistributedCache类。当我在Netbeans中本地运行代码时,该工作已正确完成,但是当我在hdfs中上传数据后尝试在单节点群集中运行它时,出现以下异常:

Error initializing attempt_201301021509_0002_m_000002_0:
java.io.IOException: Distributed cache entry arrays have different lengths: 1, 2, 1, 1
at org.apache.hadoop.mapred.JobLocalizer.downloadPrivateCacheObjects(JobLocalizer.java:316)
at org.apache.hadoop.mapred.JobLocalizer.downloadPrivateCache(JobLocalizer.java:343)
at org.apache.hadoop.mapred.JobLocalizer.localizeJobFiles(JobLocalizer.java:388)
at org.apache.hadoop.mapred.JobLocalizer.localizeJobFiles(JobLocalizer.java:367)
at org.apache.hadoop.mapred.DefaultTaskController.initializeJob(DefaultTaskController.java:202)
at org.apache.hadoop.mapred.TaskTracker$4.run(TaskTracker.java:1228)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:416)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
at org.apache.hadoop.mapred.TaskTracker.initializeJob(TaskTracker.java:1203)
at org.apache.hadoop.mapred.TaskTracker.localizeJob(TaskTracker.java:1118)
at org.apache.hadoop.mapred.TaskTracker$5.run(TaskTracker.java:2430)
at java.lang.Thread.run(Thread.java:679)

我知道问题出在JobLocalizer.java和返回2的 DistributedCache.getLocalCacheFiles(conf)中,但我不知道发生这种情况的原因。谁能告诉我我没有得到什么?

PS:我忘了提到我使用Hadoop-1.0.4

PS2:问题在于 DistributedCache.getLocalCacheFiles(conf)可以看到实际的输入文件以及一个与输入文件相同的临时文件,并临时存储在/ tmp文件夹中。当我在本地运行它时(不会引发任何异常),就会发生这种情况。我想当我从hdfs运行它时,也会发生类似的情况,但随后会引发异常。有什么想法我该如何解决?

最佳答案

这可能是在您提供文件的本地路径而不是将文件移动到HDFS然后提供HDFS路径时发生的。我也相信您正在本地尝试并在伪分布式模式下运行hadoop。

为了将文件移动到hdfs,您可以执行以下操作:

$ hadoop fs -put <your-file-path> <someHDFSfoldername/filename>

然后在您的分布式缓存中添加 someHDFSfoldername/filename

编辑:
查看代码 here,它会在源文件和目标文件的数量不匹配时发生。以下来自 JobLocalizer.java的代码段使您收到错误:
if (sources.length != dests.length ||
sources.length != times.length ||
sources.length != isPublic.length) {
throw new IOException("Distributed cache entry arrays have different " +
"lengths: " + sources.length + ", " + dests.length +
", " + times.length + ", " + isPublic.length);
}

如果您获得有关如何添加缓存文件以及如何访问它们的更多信息,这将有所帮助。

关于hadoop - Hadoop DistributedCache导致IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14123129/

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