Как работать с поврежденными файлами / блоками в кластерах Hadoop

У нас есть кластер 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-correctedfileblocks, чтобы узнать, успешно ли удален поврежденный блок.

    hdfs fsck -list-correctedfileblocks

  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.parquet

я прав или я что-то упускаю?

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

Stack Overflow - это сайт для вопросов по программированию и разработке. Этот вопрос кажется не по теме, потому что он не о программировании или разработке. См. О каких темах я могу спросить здесь в Справочном центре. Возможно, лучше спросить Суперпользователь или Обмен стеков Unix и Linux.

jww 02.05.2018 03:08

Я вижу в переполнении стека много похожих вопросов с тем же предметом, что и мой вопрос, как - stackoverflow.com/questions/19205057/…, так в чем разница, почему мой вопрос не подходит для stackoverflow?

enodmilvado 02.05.2018 05:36

Правила сайтов могут меняться с годами. Но, учитывая, что вопрос заключается в администрировании сервера, а не в программировании, его имеет смысл задать в другом месте. (хотя Stackoverflow почти всегда будет лучшим хитом Google)

OneCricketeer 02.05.2018 11:46

@ cricket_007, поскольку я не получил ответа до сих пор, не могли бы вы помочь мне понять, является ли мое решение правильным?

enodmilvado 02.05.2018 11:49

Да, нужно удалить поврежденные блоки. Если вы их перечисляете, то вы их находите и удаляете. В чем проблема?

OneCricketeer 02.05.2018 11:52

@ cricket_007, мои шаги 1-3 в порядке?

enodmilvado 02.05.2018 12:00

Вы неправильно употребляете слово «делает». И правильный способ сказать это: «Мои шаги в порядке?». Но, как написано в ответе, и ссылка у вас есть, да ... Удалите перечисленные файлы

OneCricketeer 02.05.2018 12:08
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
7
511
1

Ответы 1

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

  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 /", чтобы убедиться, что пропущенные блоки исчезли.

Другие вопросы по теме