5

我正在使用 hadoop 版本 1.0.1 和 Ubuntu linux 11.10 运行单节点集群。当它崩溃时,我正在运行一个简单的脚本,可能是因为我的计算机进入了睡眠状态。我尝试使用重新格式化文件系统

bin/hadoop 名称节点格式

并得到以下错误:

错误namenode.NameNode:java.io.IOException:无法锁定存储/app/hadoop/tmp/dfs/name。该目录已被锁定。在 org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.lock(Storage.java:602)

我尝试使用以下命令添加输入文件:

bin/hadoop fs -copyFromLocal dataDirectory/*.txt inputDirectory

并得到错误:

12/04/15 09:05:21 WARN hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /home/hduser/input/book1.txt 只能复制到0 个节点,而不是 1 个

2015 年 12 月 4 日 09:05:21 警告 hdfs.DFSClient:块 null 坏数据节点 [0] 节点的错误恢复 == null 12/04/15 09:05:21 警告 hdfs.DFSClient:无法获取块位置。源文件“/home/hduser/input/book1.txt” - 中止...

之后,我在输入目录中看到文件,但它们的大小为 0。关于如何添加文件的任何想法?我能够在 hadoop 崩溃之前添加文件,所以我可以重新安装 linux 和 hadoop,但这似乎有点矫枉过正。谢谢。

4

4 回答 4

5

您需要先使用停止 hadoop

bin/stop-all.sh

然后尝试格式化文件系统,因为hadoop(名称节点和数据节点仍在运行)它锁定了文件系统,是否会出现该错误。

因此,如果在给出命令 bin/stop-all.sh 之后只是杀死该进程,那么您可以做的是在 shell 中给出命令“ jps ”,这将向您显示进程(java 进程)并将有一个 pid与每个进程相关的,你可以给命令“kill processno”,比如“kill 23232”,像这样杀死所有进程,并使用你说的命令删除你指定的hdfs文件系统文件夹。

还要检查磁盘空间是否足够可用,假设您已经在 Windows 中安装了 ubuntu,您可以通过在 /host/ 和某个文件夹中指定文件系统来获得更多空间。

注意:您不需要格式化hdfs,因为您可以停止所有namenode和数据节点并再次启动hadoop进程,因为它不会经常被破坏,在停止并启动hadoop之后如果它给出任何错误然后你格式化文件系统。

希望对你有帮助......

于 2012-04-15T16:44:26.443 回答
3
  1. 尝试手动删除为您的名称节点存储数据的目录。这是由mapred-site.xmllikemapred.local.dir等中的属性配置的mapred.system.dir。在此之后,停止 hadoop,重新格式化 namenode 并重试。如果仍然遇到问题,请转到第 2 步

  2. 尝试将名称节点配置设置为其他路径而不是当前路径。在此之后,停止 hadoop,重新格式化 namenode 并重试。如果仍然遇到问题,请转到第 3 步

  3. 验证是否存在足够的磁盘空间。如果没有,则在配置 namenode 的分区中创建一些空间。如果仍然遇到问题,请转到第 4 步

  4. hdfs.site.xml中,设置dfs.replication为 0。在此之后,停止 hadoop,重新格式化 namenode 并重试。

如果仍然面临问题,请告诉我您遇到的错误/异常。

于 2012-04-15T15:55:02.693 回答
2

我过去遇到过这种问题,对我来说这是因为我的磁盘分区已满。所以我建议你检查你的磁盘,看看是否相关。

如果是这种情况,只需释放一些空间,重新启动您的守护程序(您可能必须手动杀死它,有时会发生这种情况),然后重新启动。

于 2012-04-15T16:16:48.283 回答
0

最重要的是,检查 /etc/hadoop/conf/hdfs-site.xml 并确保您没有在以下方面使用相同的值:

dfs.name.dir & dfs.data.dir。

两者应该有不同的值。

阿比

于 2014-02-07T06:16:54.097 回答