27

我有 3 个数据节点正在运行,在运行作业时出现以下错误,

java.io.IOException:文件 /user/ashsshar/olhcache/loaderMap9b663bd9 只能复制到 0 个节点而不是 minReplication (=1)。有 3 个数据节点正在运行,并且在此操作中排除了 3 个节点。在 org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget(BlockManager.java:1325)

此错误主要出现在我们的 DataNode 实例空间不足或 DataNode 未运行时。我尝试重新启动 DataNodes 但仍然遇到相同的错误。

我的集群节点上的 dfsadmin -reports 清楚地显示有大量可用空间。

我不确定为什么会这样。

4

8 回答 8

14

1.停止所有Hadoop守护进程

for x in `cd /etc/init.d ; ls hadoop*` ; do sudo service $x stop ; done

2.删除所有文件/var/lib/hadoop-hdfs/cache/hdfs/dfs/name

Eg: devan@Devan-PC:~$ sudo rm -r /var/lib/hadoop-hdfs/cache/

3.格式化Namenode

sudo -u hdfs hdfs namenode -format

4.启动所有Hadoop守护进程

for x in `cd /etc/init.d ; ls hadoop*` ; do sudo service $x start ; done

停止所有 Hadoop 服务

于 2014-07-05T07:06:19.333 回答
13

我有同样的问题,我的磁盘空间非常低。释放磁盘解决了它。

于 2015-04-06T18:04:36.453 回答
2
  1. 检查您的 DataNode 是否正在运行,使用命令:jps.
  2. 如果它没有运行,请等待一段时间并重试。
  3. 如果它正在运行,我认为你必须重新格式化你的 DataNode。
于 2013-12-14T08:59:42.460 回答
1

发生这种情况时,我通常会去tmp/hadoop-username/dfs/目录并手动删除数据名称文件夹(假设您在 Linux 环境中运行)。

然后通过调用bin/hadoop namenode -format格式化 dfs (确保在询问是否要格式化时以大写Y回答;如果没有被询问,则再次重新运行该命令)。

然后您可以通过调用bin/start-all.sh再次启动 hadoop

于 2013-03-22T13:46:31.587 回答
1

我遇到了这个问题,我解决了它如下:

  1. 查找您的数据节点和名称节点元数据/数据保存在哪里;如果找不到,只需在 mac 上执行此命令即可找到它(位于名为“tmp”的文件夹中)

    查找 /usr/local/Cellar/ -name "tmp";

    find 命令是这样的: find <"directory"> -name <"任何该目录或文件的字符串线索">

  2. 找到该文件后, cd 进入它。/usr/local/Cellar//hadoop/hdfs/tmp

    然后 cd 到 dfs

    然后使用 -ls 命令查看数据和名称目录位于那里。

  3. 使用 remove 命令,将它们都删除:

    rm -R 数据。和 rm -R 名称

  4. 如果您还没有完成,请转到 bin 文件夹并结束所有内容:

    sbin/end-dfs.sh

  5. 从服务器或本地主机退出。

  6. 再次登录服务器:ssh <"server name">

  7. 启动dfs:

    sbin/start-dfs.sh

  8. 格式化namenode以确保:

    bin/hdfs 名称节点格式

  9. 您现在可以使用 hdfs 命令将数据上传到 dfs 并运行 MapReduce 作业。

于 2017-09-20T03:39:09.363 回答
1

就我而言,这个问题是通过在数据节点上打开 50010 上的防火墙端口来解决的。

于 2019-02-28T10:27:53.127 回答
0

在 Windows 8.1 上对同一问题进行非常简单的修复
我使用了 Windows 8.1 操作系统和 Hadoop 2.7.2,做了以下事情来克服这个问题。

  1. 当我启动 hdfs namenode -format 时,我注意到我的目录中有一个锁。请参考下图。
    HadoopNameNode
  2. 一旦我删除了如下所示的完整文件夹,然后我再次执行了hdfs namenode -format。 文件夹位置
    完整文件夹删除
  3. 执行以上两个步骤后,我可以成功地将所需的文件放入 HDFS 系统中。我使用start-all.cmd命令启动 yarn 和 namenode。
于 2016-06-17T13:58:28.427 回答
0

在我的情况下,hdfs-site.xml 中的 dfs.datanode.du.reserved 太大,并且名称节点给出了数据节点的私有 IP 地址,因此无法正确路由。私有 ip 的解决方案是将 docker 容器切换到主机网络,并将主机名放在配置文件的主机属性中。

这超越了 关于复制问题的其他可能性堆栈问题

于 2021-01-15T16:51:08.153 回答