HDFS говорит, что файл все еще открыт, но процесс записи в него был убит - PullRequest
6 голосов
/ 18 марта 2011

Я новичок в hadoop, и последние пару часов я пытался найти эту проблему в Google, но не смог найти ничего, что могло бы помочь.Моя проблема в том, что HDFS говорит, что файл все еще открыт, хотя процесс записи в него давно мертв.Это делает невозможным чтение из файла.

Я запустил fsck в каталоге, и он сообщает, что все в порядке.Однако, когда я запускаю "hadoop fsck -fs hdfs: // hadoop / logs / raw / directory_conisting_file -openforwrite", я получаю

Status: CORRUPT
 Total size:    222506775716 B
 Total dirs:    0
 Total files:   630
 Total blocks (validated):  3642 (avg. block size 61094666 B)
  ********************************
  CORRUPT FILES:    1
  MISSING BLOCKS:   1
  MISSING SIZE:     30366208 B
  ********************************
 Minimally replicated blocks:   3641 (99.97254 %)
 Over-replicated blocks:    0 (0.0 %)
 Under-replicated blocks:   0 (0.0 %)
 Mis-replicated blocks:     0 (0.0 %)
 Default replication factor:    2
 Average block replication: 2.9991763
 Corrupt blocks:        0
 Missing replicas:      0 (0.0 %)
 Number of data-nodes:      23
 Number of racks:       1

Повторное выполнение команды fsck над файлом openforwrite я получаю

.Status: HEALTHY
 Total size:    793208051 B
 Total dirs:    0
 Total files:   1
 Total blocks (validated):  12 (avg. block size 66100670 B)
 Minimally replicated blocks:   12 (100.0 %)
 Over-replicated blocks:    0 (0.0 %)
 Under-replicated blocks:   0 (0.0 %)
 Mis-replicated blocks:     0 (0.0 %)
 Default replication factor:    2
 Average block replication: 3.0
 Corrupt blocks:        0
 Missing replicas:      0 (0.0 %)
 Number of data-nodes:      23
 Number of racks:       1

У кого-нибудь есть идеи, что происходит и как я могу это исправить?

1 Ответ

1 голос
/ 22 марта 2011

Я обнаружил, что блоки, кажется, отсутствуют, потому что сервер namenode был временно недоступен, что повредило файловую систему для этого файла. Оказалось, что часть файла без отсутствующих блоков все еще может быть прочитана / скопирована. Дополнительная информация о борьбе с коррупцией в hdfs доступна по адресу https://twiki.grid.iu.edu/bin/view/Storage/HadoopRecovery (зеркало: http://www.webcitation.org/5xMTitU0r)

Редактировать: Кажется, эта проблема была из-за проблемы с Scribe (или, точнее, с DFSClient, используемым Scribe), зависшим при попытке записи в HDFS. Мы вручную исправили источник нашего кластера hadoop с помощью HADOOP-6099 и HDFS-278, перестроили двоичные файлы и перезапустили кластер с новой версией. В течение двух месяцев, в течение которых мы работали с новой версией, проблем не было.

...