【问题标题】:Hadoop Distributed cache object changed during jobHadoop分布式缓存对象在作业期间更改
【发布时间】:2023-04-10 21:29:01
【问题描述】:

我有许多有序的 Hadoop 作业,其中我需要一个 DistributedCache 文件。

驱动类(控制器)接收来自前一个作业的输入,修改一个文件,将其放置在 DistributedCache 中并开始一个新作业。

在第一份工作(即第二份工作)之后,我收到此错误:

java.io.IOException: 
The distributed cache object hdfs://xxxx/xx/x/modelfile2#modelfile2 
changed during the job from 11/8/12 11:55 PM to 11/8/12 11:55 PM

有谁知道问题出在哪里?

【问题讨论】:

  • 这项工作似乎仍然成功完成!这是一个 Hadoop 错误吗?它与 HDFS 上的可用空间有关吗?你们有没有同样的问题?

标签: hadoop distributed-caching


【解决方案1】:

根据 TrackerDistributedCacheManager.java 方法 downloadCacheObject 中的来源,当此异常发生时,它不会被忽略,并且不会发生文件从 HDFS 到本地文件系统的实际下载。所以任务不会在分布式缓存中找到它的文件。 我怀疑您可能两次注册了同一个对象,或者,当多个作业将具有相同邮件的文件从同一个控制器放在分布式缓存中时,hadoop 中可能存在一些错误。

【讨论】:

  • 我反复这样做:我在本地修改文件,我将新版本复制到 HDFS,我再次注册同一个文件(但用于新工作)。你是说我不应该再注册?我想我应该这样做,因为据我所知,您无法保证在您注册的作业结束后该文件仍在 DistributedCache 中。
  • 当然你应该注册它。但这听起来像是hadoop中的一个错误。我会建议以下方法来测试它。每次设置不同的文件名(如 File1、File2... 并通过一些配置参数将此文件的名称传递给作业。如果这次它可以工作 - 这显然是 Hadoop 中的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多