我们在redhat机器版本7.x上有Hadoop集群版本HDP-26
我们运行以下命令来捕获已损坏块的文件
示例1
[root@master_3 ~]# su hdfs
[hdfs@master_3 root]$ hdfs fsck -list-corruptfileblocks
blk_1097240344/localhdp/Rtrone/intercept_by_type/2018/4/10/16/2018_4_03_11_45.parquet/part-00002-be0f80a9-2c7c-4c50-b18d-db0f94a98cff.snly.parquet
blk_1097240348/localhdp/Rtrone/intkjd_country/2018/4/10/16/2018_4_03_11_45.parquet/part-00003-8600d0e2-c6b6-49b7-89cd-ef243cda4c5e.snly.parquet
The filesystem under path '/' has 2 CORRUPT files
似乎文件是:
/localhdp/Rtrone/intercept_by_type/2018/4/10/16/2018_4_03_11_45.parquet/part-00002-be0f80a9-2c7c-4c50-b18d-db0f94a98cff.snly.parquet
/localhdp/Rtrone/intkjd_country/2018/4/10/16/2018_4_03_11_45.parquet/part-00003-8600d0e2-c6b6-49b7-89cd-ef243cda4c5e.snly.parquet
在google上搜索,我了解处理文件中已损坏块的过程应如下所示:
这将删除损坏的HDFS块:
hdfs fsck / -delete
再次运行hdfs fsck -list-corruptfileblocks以查明损坏的块是否已成功删除
hdfs fsck -list-corruptfileblocks
如果损坏的块仍然存在(如示例1)那么我们需要删除文件,如下所示
hdfs fs -rm /localhdp/Rtrone/intercept_by_type/2018/4/10/16/2018_4_03_11_45.parquet/part-00002-be0f80a9-2c7c-4c50-b18d-db0f94a98cff.snly.parquet
hdfs fs -rm /localhdp/Rtrone/intkjd_country/2018/4/10/16/2018_4_03_11_45.parquet/part-00003-8600d0e2-c6b6-49b7-89cd-ef243cda4c5e.snly.parquet
我是对的还是我错过了什么?
请告诉我有关我的程序需要添加或更新的内容
答案 0 :(得分:-1)
程序很简单。跟随
找出损坏的块
hdfs fsck / | egrep -v '^\.+$' | grep -v eplica
找出与损坏的块相关的文件
hdfs fsck /path/to/corrupt/file -locations -blocks -files
删除损坏的文件
hdfs fs -rm /Corrupted_File_Path
在这些步骤之后重新运行“hdfs fsck /”以查看丢失的块已消失。