Где найти реплики поврежденных блоков

У меня есть несколько поврежденных блоков в моем кластере hadoop, и коэффициент репликации, который мы используем, равен 3 . Насколько я понимаю, даже если блок поврежден, у нас будет еще 2 хорошие реплики в других узлах. когда я делаю fsck в хорошем пути к файлу, я получаю подробности ниже с расположением всех реплик: /location/to/goodfile1 29600 байт, 1 блок (ы): ОК 0. BP-xxxx-xx.1xx.1xx.xx-1364828076720:blk_1114138336_1099565732615 len=29600 Live_repl=3 [/default/xx.1xx.1xx.xx:50010, /default/xx.1xx.1xx.xx:50010, /default/xx.1xx.1xx.xx:50010]

Статус: HEALTHY Общий размер: 29600 B Всего каталогов: 0 Всего файлов: 1 Всего символических ссылок: 0 Всего блоков (проверено): 1 (средний размер блока 29600 B) Минимально реплицированных блоков: 1 (100,0 %) Слишком реплицированных блоков: 0 (0,0 %) Недостаточно реплицированные блоки: 0 (0,0 %) Не реплицированные блоки: 0 (0,0 %) Коэффициент репликации по умолчанию: 3 Средняя репликация блоков: 3,0 Поврежденные блоки: 0 Отсутствуют реплики: 0 (0,0 %) Количество данных- узлов: 14 Количество стоек: 1 FSCK закончился в пт 29 декабря 02:32:32 MST 2017 за 1 миллисекунду

но когда я делаю fsck / коррупционный файл -blocks -locations -files в поврежденный файл, я не получаю местоположения реплики, также я вижу среднюю репликацию блока как 0.0: Статус: CORRUPT Общий размер: 27853 B Всего папок: 0 Всего файлов: 1 Всего символических ссылок: 0 Всего блоков (проверено): 1 (средний размер блока 27853 B)


ПОД МИНУТОВЫМИ БЛОКАМИ: 1 (100,0 %) dfs.namenode.replication.min: 1 ПОВЕРХНОСТНЫЕ ФАЙЛЫ: 1 Пропущенные блоки: 1 Пропущенный размер: 27853 B Плохие блоки: 1


Минимально реплицированные блоки: 0 (0,0 %) Слишком реплицированные блоки: 0 (0,0 %) Недостаточно реплицированные блоки: 0 (0,0 %) Не реплицированные блоки: 0 (0,0 %) Коэффициент репликации по умолчанию: 3 Средняя репликация блоков: 0,0 Коррупция блоков: 1 Недостающие реплики: 0 Количество узлов данных: 14 Количество стоек: 1 FSCK закончился в пт 29 декабря 02:39:50 MST 2017 за 0 миллисекунд

может ли кто-нибудь объяснить: 1) поскольку я вижу репликацию avg как 0.0, означает ли это, что у нас нет реплик для поврежденного блока 2) мы обычно удаляем поврежденный блок, чтобы сделать кластер работоспособным, в данном случае это правильный вариант удаления блок. 3) почему я не вижу местоположение реплики для этого поврежденного блока. 4) может кто-нибудь опубликовать образец FSCK на своем поврежденном блоке.

Спасибо.

1 ответ

Решение

Вы можете проверить namenode:50075/blockScannerReport?listblocks, и он выведет список всех блоков (появится очень длинная страница),

Поэтому, когда вы проверяете fsck(утилиту проверки файловой системы) -

hadoop fsck -block -location -racks fullAddressOfFileInHDFS

так что после того, как вы получите, и вы также прикрасили список -

 Over-replicated blocks:    0 (0.0 %)
 Under-replicated blocks:    0 (0.0 %)
 Mis-replicated blocks:        0 (0.0 %)

на самом деле ваш Average block replication: должно быть 1.0 для свежего и крепкого здоровья, но это показывает 0.0 только из-за Corrupt Blocks: 1

Смотрите здесь, блок поврежден, а не файл, поэтому есть несколько способов -

  1. почему бы вам сначала не получить файл локально, используя hadoop fs -get и если файл, который вы получаете локально, хорош, как и позже, удалите файл из кластера и, таким образом, снова поместите файл в то же место, в котором он использовался. hadoop,

  2. во-вторых, найдите файл блока или, если он у вас есть, проверьте состояние работоспособности, которое отображается исправным, затем введите hadoop dfsadmin safemode enter Выполните обслуживание, проверьте узлы данных вручную, после настройки оставьте safemode, hadoop dfsadmin -refreshNodes а позже запустить hadoop balancer Команда, это решит проблему, потому что есть много возможностей сбоя с точкой 1 для подключения этих других инструментов и зависит от этого файла.

Я упомянул то, что я думаю, выбор за вами, с наступающим Новым 2018 годом, спасибо.

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