Почему файловая система Hadoop не поддерживает случайный ввод / вывод? - PullRequest
2 голосов
/ 24 апреля 2011

Распределенные файловые системы, такие как Google File System и Hadoop, не поддерживают произвольный ввод / вывод.
(Он не может изменить файл, который был написан ранее. Возможно только написание и добавление.)

Почему они создали такую ​​файловую систему?
Каковы важные преимущества дизайна?

P.S. Я знаю, что Hadoop будет поддерживать изменение записанных данных.
Но они сказали, что производительность будет очень плохой. Почему?

Ответы [ 2 ]

6 голосов
/ 24 апреля 2011

Hadoop распространяет и копирует файлы. Поскольку файлы реплицируются, любая операция записи должна будет найти каждый реплицированный раздел по сети и обновить файл. Это сильно увеличит время операции. Обновление файла может увеличить размер блока и потребовать разбиения файла на 2 блока, а затем повторить второй блок. Я не знаю внутренностей и когда / как это разделит блок ... но это потенциальное осложнение.

Что делать, если задание не удалось или его убили, который уже выполнил обновление и получил повторный запуск? Это может обновить файл несколько раз.

Преимущество отсутствия обновления файлов в распределенной системе заключается в том, что вы не знаете, кто еще использует файл при его обновлении, вы не знаете, где хранятся фрагменты. Существуют потенциальные тайм-ауты (узел с блоком не отвечает), поэтому вы можете получить несоответствующие данные (опять же, я не знаю, что такое внутреннее устройство hadoop, и обновление с отключенным узлом может быть обработано, просто то, что я мозгового штурма) )

Существует множество потенциальных проблем (несколько изложенных выше) с обновлением файлов в HDFS. Ни один из них не является непреодолимым, но для проверки и учета потребуется хит производительности.

Поскольку основная цель HDFS - хранить данные для использования в mapreduce, обновление на уровне строк не столь важно на данном этапе.

0 голосов
/ 24 апреля 2011

Я думаю, что это из-за размера блока данных, и вся идея Hadoop заключается в том, что вы не перемещаете данные, а вместо этого перемещаете алгоритм к данным.

Hadoop предназначен для пакетной обработки данных не в реальном времени. Если вы ищете способы реализации чего-то более похожего на традиционную СУБД с точки зрения времени отклика и произвольного доступа, взгляните на HBase , который построен на основе Hadoop.

...