Где найти реплики поврежденных блоков
У меня есть несколько поврежденных блоков в моем кластере 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
Смотрите здесь, блок поврежден, а не файл, поэтому есть несколько способов -
почему бы вам сначала не получить файл локально, используя
hadoop fs -get
и если файл, который вы получаете локально, хорош, как и позже, удалите файл из кластера и, таким образом, снова поместите файл в то же место, в котором он использовался.hadoop
,во-вторых, найдите файл блока или, если он у вас есть, проверьте состояние работоспособности, которое отображается исправным, затем введите
hadoop dfsadmin safemode enter
Выполните обслуживание, проверьте узлы данных вручную, после настройки оставьтеsafemode
,hadoop dfsadmin -refreshNodes
а позже запуститьhadoop balancer
Команда, это решит проблему, потому что есть много возможностей сбоя с точкой 1 для подключения этих других инструментов и зависит от этого файла.
Я упомянул то, что я думаю, выбор за вами, с наступающим Новым 2018 годом, спасибо.