как управлять поврежденными файлами / блоками в кластерах hadoop - PullRequest
0 голосов
/ 01 мая 2018

У нас есть кластерная версия Hadoop HDP - 26, на redhat-машинах версия 7.x

Мы запускаем следующую команду для захвата файлов с поврежденными блоками

Пример 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 я понимаю, что процедура обработки поврежденного блока в файлах должна быть следующей:

  1. Это приведет к удалению поврежденных блоков HDFS:

    hdfs fsck / -delete

  2. снова запустите hdfs fsck -list-injfileblocks, чтобы узнать, успешно ли удален поврежденный блок

    hdfs fsck -list-injffileblocks

  3. если поврежденные блоки все еще существуют (как пример 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.par32 *

я прав или мне что-то не хватает?

Пожалуйста, дайте мне знать, что нужно добавить или обновить относительно моей процедуры

1 Ответ

0 голосов
/ 02 мая 2018

Процедура очень проста. Следуйте

  1. Узнайте поврежденные блоки

      hdfs fsck / | egrep -v '^\.+$' | grep -v eplica
    
  2. Поиск файлов, связанных с поврежденными блоками

     hdfs fsck /path/to/corrupt/file -locations -blocks -files
    
  3. Удалить поврежденный файл

     hdfs fs -rm /Corrupted_File_Path
    

После этих шагов перезапустите "hdfs fsck /", чтобы увидеть, что пропавшие блоки исчезли.

...