【问题标题】:hadoop BlockMissingExceptionhadoop BlockMissingException
【发布时间】:2018-01-05 05:20:33
【问题描述】:

我遇到以下错误:

Diagnostics: org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-467931813-10.3.20.155-1514489559979:blk_1073741991_1167 file=/user/oozie/share/lib/lib_20171228193421/oozie/hadoop-auth-2.7.2-amzn-2.jar
Failing this attempt. Failing the application.

虽然我已经为 /user/oozie/share/lib/ 目录设置了复制因子 3。此路径下的所有 jar 在 3 个数据节点上都可用,但缺少一些 jar。 任何机构都可以建议为什么会发生这种情况以及如何防止这种情况发生。

【问题讨论】:

  • 你试过运行一些hadoop fsck 命令吗?
  • 是的,我试过 hadoop fsck /user/oozie/share/lib/lib_20171228193421/ -files -blocks -racks 命令,响应是:/user/oozie/share/lib/lib_20171228193421/oozie/ Hadoop-auth-2.7.2-AMZN-2.JAR:损坏BlockPool BP-467931813-10.3.20.155-1514489559979块BLK_1073741991缺少1个总尺寸70594 B 0. BP-467931813-10.3.20.155-1514489559979:BLK_1073741991_1167 LEN = 70594 失踪!
  • 发生这种情况是因为您的一个数据节点坏了。例如,磁盘可能出现故障。看到这个了吗? stackoverflow.com/questions/19205057/…
  • 我同意复制块的所有 3 个数据节点肯定都坏了。但是现在有没有办法让那个块回来。如何防止这种情况发生。
  • 在我的例子中,我们需要多次调整集群的大小,以便经常添加和删除新的 DN。那我怎样才能避免这个异常呢。

标签: hadoop hive


【解决方案1】:

我在尝试从 hdfs 读取文件时遇到了同样的异常。此链接中“客户端在连接到 DataNodes 时使用主机名”部分下的解决方案对我有用: https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-hdfs/HdfsMultihoming.html#Clients_use_Hostnames_when_connecting_to_DataNodes

我将此 XML 块添加到“hdfs-site.xml”并重新启动了 datanode 和 namenode 服务器:

<property>
    <name>dfs.client.use.datanode.hostname</name>
    <value>true</value>
    <description>Whether clients should use datanode hostnames when
      connecting to datanodes.
    </description>
</property>

【讨论】:

    【解决方案2】:

    请检查hdfs目录中文件的所有者,我遇到这个问题是因为所有者是“root”,当我将它更改为“your_user”时解决了。

    【讨论】:

      猜你喜欢
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-24
      相关资源
      最近更新 更多