常见问题

最近更新时间: 2026-03-13 09:03:00

NameNode或JournalNode的editlogs目录占用较大磁盘空间

  1. 问题根因:HDFS依赖FsImage Checkpoint进行editlogs合并,当FsImage Checkpoint出现异常时,会导致editlogs无法合并,通常异常情况是由于FsImage目录写满或磁盘异常等情况引起的,此时NameNode重启时间也会变得很长。NameNode FsImage Checkpoint失败后,该FsImage目录默认不会再次使用,需要设置开启FsImage目录自恢复功能。
  2. 解决方案:
#手动开启FsImage目录自恢复选项
su - hdfs
hdfs dfsadmin -restoreFailedStorage true
#开启成功后NameNode后续自动FsImage Checkpoint时,会先尝试恢复FsImage目录
restoreFailedStorage is set to true
  1. 默认开启FsImage目录自恢复功能:
    在TM的HDFS服务页面,选择配置 > hdfs-site.xml ,添加参数为dfs.namenode.name.dir.restore,值为true的自定义配置,下次重启NameNode后FsImage目录自恢复功能会自动打开。

写入文件提示DataXceiver Premature EOF from InputStream

  1. 具体报错:DataXceiver error processing WRITE_BLOCK operation src: /10...:35692 dst: /10...:50010 java.io.IOException: Premature EOF from inputStream。
  2. 问题根因:通常为了不断地向HDFS写入新的数据,作业会打开较多的HDFS文件写入流(Stream)。但HDFS允许同时打开的文件数量是有限的,受限于DataNode参数,超过限制就会出现DataXceiver Premature EOF from inputStream异常。
  3. 解决办法:
  • 查看DataNode日志
java.io.IOException: Xceiver count 4097 exceeds the limit of concurrent xcievers: 4096
at org.apache.hadoop.hdfs.server.datanode.DataXceiverServer.run(DataXceiverServer.java:150)
  • 如果存在以上报错,进行如下修改。
    在TM的HDFS服务页面,选择配置,搜索参数dfs.datanode.max.transfer.threads,并适当地调大该参数值,一般建议翻倍增加,例如8192、16384。