写入hdfs只能复制到0个节点,而不是minreplication(=1)

t3irkdon  于 2021-06-03  发布在  Hadoop
关注(0)|答案(7)|浏览(370)

我有3个数据节点正在运行,当运行一个作业时,我得到以下错误信息:,
java.io.ioexception:文件/user/ashshar/olhcache/loadermap9b663bd9只能复制到0节点,而不是minreplication(=1)。有3个datanode正在运行,此操作中排除了3个节点。在org.apache.hadoop.hdfs.server.blockmanagement.blockmanager.choosetarget(blockmanager。java:1325)
这个错误主要发生在datanode示例空间不足或者datanode没有运行时。我尝试重新启动datanodes,但仍然得到相同的错误。
我的集群节点上的dfsadmin报告清楚地显示了大量可用空间。
我不知道为什么会这样。

sqougxex

sqougxex1#

我遇到了这个问题,我解决了它如下:
查找datanode和namenode元数据/数据的保存位置;如果找不到它,只需在mac上执行此命令即可找到它(位于名为“tmp”的文件夹中)
find/usr/local/cell/-name“tmp”;
find命令如下:find<“directory”>-name<“该目录或文件的任何字符串线索”>
找到那个文件后,把cd放进去/usr/local/cellar//hadoop/hdfs/tmp
然后cd到dfs
然后使用-ls命令查看数据和名称目录是否位于其中。
使用remove命令,将它们都删除:
rm-r数据。和rm-r名称
转到bin文件夹并结束所有尚未完成的操作:
sbin/end-dfs.sh文件
从服务器或本地主机退出。
再次登录服务器:ssh<“server name”>
启动dfs:
sbin/start-dfs.sh文件
格式化namenode以确保:
bin/hdfs namenode-格式
现在可以使用hdfs命令将数据上载到dfs并运行mapreduce作业。

e4yzc0pl

e4yzc0pl2#

我也有同样的问题,我的磁盘空间非常少。释放磁盘解决了这个问题。

cqoc49vn

cqoc49vn3#

对于Windows8.1上的同一问题,非常简单的修复
我使用windows8.1os和hadoop2.7.2,做了以下事情来克服这个问题。
当我启动hdfs namenode格式时,我注意到我的目录中有一个锁。请参考下图。

一次,我删除了完整的文件夹,如下图所示,然后再次执行hdfs namenode格式。


在执行了以上两个步骤之后,我可以成功地将所需的文件放入hdfs系统。我使用start-all.cmd命令启动yarn和namenode。

7cwmlq89

7cwmlq894#

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.1名称节点格式

sudo -u hdfs hdfs namenode -format

4.启动所有hadoop守护进程

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

停止所有hadoop服务
vaqhlq81

vaqhlq815#

发生这种情况时,我通常会转到tmp/hadoop username/dfs/目录,手动删除数据和名称文件夹(假设您在linux环境中运行)。
然后通过调用bin/hadoop namenode-format格式化dfs(当被问及是否要格式化时,请确保用大写的y来回答;如果没有请求,则重新运行命令)。
然后可以通过调用bin/start-all.sh再次启动hadoop

jm2pwxwz

jm2pwxwz6#

检查datanode是否正在运行,请使用以下命令: jps .
如果没有运行,请稍候,然后重试。
如果它正在运行,我认为您必须重新格式化您的datanode。

bjp0bcyl

bjp0bcyl7#

在我的例子中,这个问题是通过打开datanodes上50010的防火墙端口来解决的。

相关问题