我是hadoop的新手,我花了几个小时试图谷歌这个问题,但我找不到任何有用的东西.我的问题是HDFS说文件仍然是打开的,即使写入它的过程已经很久了.这使得无法从文件中读取.
我在目录上运行了fsck,它报告一切都很健康.但是,当我运行"hadoop fsck -fs hdfs:// hadoop/logs/raw/directory_containing_file -openforwrite"时,我得到了
Status: CORRUPT
Total size: 222506775716 B
Total dirs: 0
Total files: 630
Total blocks (validated): 3642 (avg. block size 61094666 B)
********************************
CORRUPT FILES: 1
MISSING BLOCKS: 1
MISSING SIZE: 30366208 B
********************************
Minimally replicated blocks: 3641 (99.97254 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 0 (0.0 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 2
Average block replication: 2.9991763
Corrupt blocks: 0
Missing replicas: 0 (0.0 %)
Number of data-nodes: 23
Number of racks: 1
Run Code Online (Sandbox Code Playgroud)
再次对我得到的openforwrite文件执行fsck命令
.Status: HEALTHY
Total size: 793208051 B
Total dirs: 0
Total files: 1
Total blocks (validated): 12 (avg. block size 66100670 B)
Minimally replicated blocks: 12 (100.0 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 0 (0.0 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 2
Average block replication: 3.0
Corrupt blocks: 0
Missing replicas: 0 (0.0 %)
Number of data-nodes: 23
Number of racks: 1
Run Code Online (Sandbox Code Playgroud)
有没有人有任何想法发生了什么以及如何解决它?
我发现这些块似乎丢失了,因为名称节点服务器暂时不可用,从而损坏了该文件的文件系统。看来文件中没有丢失块的部分仍然可以读取/复制。有关处理 hdfs 损坏的更多信息,请访问https://twiki.grid.iu.edu/bin/view/Storage/HadoopRecovery(镜像: http: //www.webitation.org/5xMTitU0r)
编辑:这个问题似乎是由于 Scribe(或更具体地说 Scribe 使用的 DFSClient)在尝试写入 HDFS 时挂起的问题造成的。我们使用 HADOOP-6099 和 HDFS-278 手动修补 hadoop 集群的源代码,重建二进制文件并使用新版本重新启动集群。我们运行新版本的两个月里没有出现任何问题。
| 归档时间: |
|
| 查看次数: |
2854 次 |
| 最近记录: |