Некоторые датоданы все еще показывают пул блоков, использованный после очистки HDFS
Версия Hadoop: 2.7.3 Датододы: 32 Размер блока: 512 м Репликация: 3
Я очистил все данные в HDFS с помощью команды
hdfs dfs -rm -r /*
После очистки кластера HDFS некоторые датоданы все еще показывают Block pool used
хотя блоки нулевые.
Выход из hdfs fsck /
как следует
Connecting to namenode via http://ip-10-0-2-7:50070/fsck?ugi=ubuntu&path=%2F
FSCK started by ubuntu (auth:SIMPLE) from /10.0.2.7 for path / at Tue Jul 18 04:34:19 UTC 2017
Status: HEALTHY
Total size: 0 B
Total dirs: 1
Total files: 0
Total symlinks: 0
Total blocks (validated): 0
Minimally replicated blocks: 0
Over-replicated blocks: 0
Under-replicated blocks: 0
Mis-replicated blocks: 0
Default replication factor: 3
Average block replication: 0.0
Corrupt blocks: 0
Missing replicas: 0
Number of data-nodes: 32
Number of racks: 1
FSCK ended at Tue Jul 18 04:34:19 UTC 2017 in 1 milliseconds
The filesystem under path '/' is HEALTHY
Я знаю, что удаление блока - это асинхронный процесс, но датоды, имеющие Block Pool Used
не установлен в 0, что занимает много времени, чтобы освободить блоки. Кто-нибудь может мне помочь выяснить, почему на этих серверах удаление блоков происходит медленно или какая-либо другая проблема, из-за которой используются блоки.
1 ответ
Есть несколько возможных причин для этого:
- Программное обеспечение кластера было недавно обновлено с использованием функции обновления HDFS, и обновление не было завершено. Во время непрерывного обновления при удалении файлов фактически не удаляются базовые файлы блоков в узле данных. Вместо этого файлы блоков сохраняются, поэтому, если оператор решит откатить обновление, данные кластера могут быть возвращены обратно в состояние перед обновлением. Как следствие, в течение скользящего окна обновления метрики DataNode, такие как "Используемый пул блоков", продолжают показывать занятое пространство. Простой способ проверить, выполняется ли непрерывное обновление, - перейти в веб-интерфейс NameNode. На вкладке "Обзор" будет отображено сообщение "Обновление начато". Чтобы завершить обновление, запустите
hdfs dfsadmin -rollingUpgrade
, После этого DataNodes начнет удалять файлы блоков (асинхронно). - Пользователь кластера использовал снимки HDFS. Снимки поддерживают состояние пути к файловой системе в момент создания снимка. Чтобы поддержать это, узлам данных может потребоваться сохранить блоки для ранее удаленных файлов на случай, если пользователь решит прочитать старый снимок, содержащий данные. Бег
hdfs fsck
с-includeSnapshots
Аргумент может показать, есть ли снимки в использовании. - Из-за некоторой ошибки ввода-вывода (сбой диска, нарушение прав доступа к базовым файлам блоков) узлу DataNode не удается удалить файлы блоков. Это маловероятно, но если есть проблема, то в журналах DataNode будет показано больше информации.