我们在7.x的redhat机器上拥有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 fsck /-删除
hdfs fsck -list-corruptfileblocks
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
我是对的还是我错过了什么?
请让我知道我的程序需要添加或更新的内容
最佳答案
程序非常简单。
hdfs fsck / | egrep -v '^\.+$' | grep -v eplica
hdfs fsck /path/to/corrupt/file -locations -blocks -files
hdfs fs -rm /Corrupted_File_Path
完成这些步骤后,重新运行“hdfs fsck /”以查看丢失的块已消失。