hadoop - 手动重新平衡 hadoop hdfs 磁盘后,DataNode 不会重启

标签 hadoop

我在 40 台机器的集群中使用 Hadoop hadoop-2.0.0-mr1-cdh4.1.2。 每台机器有 12 个磁盘供 hadoop 使用。 一台机器上的一些磁盘不平衡,我决定按照这篇文章中提到的手动重新平衡:rebalance individual datanode in hadoop 我停止了该服务器上的 DataNode,移动了 block 文件对,在一些磁盘之间移动了整个子目录。

我一停止 DataNode,NameNode 就通过在 UI 中显示以下消息来提示缺少 block : 警告:缺少 2002 个 block 。请检查日志或运行 fsck 以确定丢失的 block 。

然后,我尝试重启DataNode。它拒绝成功启动,并不断记录错误和警告,如下所示:

java.io.IOException:目录无效或发生 I/O 错误:/data/disk3/dfs/data/current/BP-208475052-10.165.18.36-1351280731538/current/finalized/subdir61/subdir28

2013-12-20 01:40:29,046 警告 org.apache.hadoop.hdfs.server.datanode.DataNode:offerService 中的 IOException java.io.IOException: block 池 BP-208475052-10.165.18.36-1351280731538 未找到

2013-12-20 01:40:29,088 错误 org.apache.hadoop.hdfs.server.datanode.DataNode: block 池 BP-208475052-10.165.18.36-1351280731538(存储 ID DS-737580588- 的 BPOfferService 中的异常10.165.18.36-50010-1351280778276) 服务到 aspen8hdp19.turner.com/10.165.18.56:54310 java.lang.NullPointerException

2013-12-20 01:40:34,088 警告 org.apache.hadoop.hdfs.server.datanode.DataNode:offerService 中的 IOException java.io.IOException: block 池 BP-208475052-10.165.18.36-1351280731538 未找到

所以,我有一些问题:

  • 遵循我提到的方法还不够吗? IE。停止 DataNode,移动 block 文件对和/或子目录,重新启动 DataNode。
  • 我需要重启 NameNode 或其他服务吗?
  • 为什么它会提示丢失 block 或损坏文件?
  • 如何重新启动 DataNode 并消除这些异常,从而使 DN 与 NN 成功通信?

感谢您的帮助。 爱德华多。

最佳答案

我要在这里回答我自己的问题。

我遇到的问题是由于移动数据 block 后文件/目录权限和所有权错误造成的。我以 root 身份进行了移动,移动的文件最终获得了以下权限:

drwx-----T 2 root root 12288 Dec 19 23:14 subdir28

一旦我将它改回原来的状态,DN 就会正常重新启动,NN 会停止报告丢失的 block 或损坏的文件。这是它应该拥有的权限:

drwxr-xr-t 2 hdfs hadoop 12288 Dec 20 11:47 subdir28

关于hadoop - 手动重新平衡 hadoop hdfs 磁盘后,DataNode 不会重启,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20698101/

相关文章:

scala - 通过 JDBC 在 spark 上从远程配置单元读取数据返回空结果

java - 获取异常 : IOException input buffer is closed exception while extracting a tar file

hadoop - 为什么在HiveServer2中保留Tez队列?

java - 在运行 hadoop 分布式模式时一直失败

hadoop - 时间戳是否与 Apache Hive 中的时区一起存储?

java - 无法将 Hadoop 2.2 的虚拟内存更改为超过默认的 2.1 GB

apache-spark - Spark/Yarn-连接错误RetryingBlockFetcher尝试从随机端口获取 block

python - 如何在Hadoop中读取相应文件中的文件名和字数?

apache-spark - 将关系数据存储在hadoop中以进行分析

performance - Hadoop 性能