HadoopFS (HDFS) как распределенное файловое хранилище

#hadoop #hdfs

#hadoop #hdfs

Вопрос:

Я рассматриваю возможность использования HDFS в качестве системы хранения файлов с горизонтальным масштабированием для нашего клиентского видеохостинга. Меня больше беспокоит то, что HDFS разрабатывалась не для этих нужд, это скорее «система с открытым исходным кодом, используемая в настоящее время в ситуациях, когда необходимо обработать огромные объемы данных». Мы не хотим обрабатывать данные, просто храним их, создаем на базе HDFS что-то вроде небольшого внутреннего аналога Amazon S3.

Вероятно, важным моментом является то, что размер сохраняемого файла будет довольно небольшим — от 100 МБ до 10 ГБ.

Кто-нибудь использовал HDFS в таких целях?

Комментарии:

1. HDFS имеет SPOF: en.wikipedia.org/wiki/… Это исправлено в последней версии разработки (альфа / бета). Вы что-нибудь разработали?

Ответ №1:

Если вы используете эквивалент S3, то он уже должен предоставлять распределенную, монтируемую файловую систему нет? Возможно, вы можете проверить OpenStack на http://openstack.org/projects/storage /.

Ответ №2:

Основным недостатком было бы отсутствие семантики POSIX. Вы не можете смонтировать диск, и вам нужны специальные API для чтения и записи с него. Java API является основным. Существует проект под названием libhdfs, который создает C API поверх JNI, но я никогда им не пользовался. Thriftfs — еще один вариант.

Я также не уверен в производительности чтения по сравнению с другими альтернативами. Может быть, кто-то еще знает. Проверяли ли вы другие распределенные файловые системы, такие как Lustre?

Комментарии:

1. На самом деле вы можете смонтировать файловую систему с помощью FUSE, но это довольно ограничено.

2. Тим, java api не так уж плох в моем случае, пока мы являемся разработчиками Java, главный вопрос в общей стабильности системы. Я проверил другие системы с вики-страницы, которую вы прислали, но это первое требование — она должна быть с открытым исходным кодом и поддерживать большие файлы. Многие из них, такие как MogileFS, предназначены для работы с файлами относительно небольшого размера, такими как изображения и так далее. Я еще не рассматривал Глянец, сойдет, спасибо.

3. Стабильность — одна из главных особенностей HDFS. Поскольку он автоматически реплицирует данные, вам не нужно беспокоиться о том, что ваши узлы данных потеряют данные. Однако в настоящее время namenode по-прежнему является SPOF (существуют исправления HDFS, которые дают вам отказоустойчивый узел, но, похоже, их нет в основных дистрибутивах Hadoop). Пропускная способность довольно хорошая, поскольку блоки могут передаваться потоком со всех узлов, у которых есть реплика (размеры блоков часто 64 или 128 МБ), так что вы получаете параллельное чтение.

Ответ №3:

Возможно, вы захотите рассмотреть MongoDB для этого. У них есть GridFS, которые позволят вам использовать его в качестве хранилища. Затем вы можете горизонтально масштабировать свое хранилище с помощью сегментов и обеспечить отказоустойчивость с помощью репликации.