CoreOS & HDFS - Запуск распределенной файловой системы в Linux Containers/Docker
Мне нужна какая-то распределенная файловая система, работающая на кластере CoreOS.
Поэтому я хотел бы запускать HDFS на узлах CoreOS. Это возможно?
Я вижу 2 варианта;
- Расширение CoreOS - установка HDFS непосредственно на CoreOS - не идеально, поскольку это нарушает всю концепцию контейнеризации CoreOS и будет означать установку множества дополнительных компонентов
- Каким-то образом запустите HDFS в контейнере Docker на CoreOS и установите соответствие
Вариант 2 кажется лучшим подходом, однако, есть некоторые потенциальные блокираторы;
- Как надежно выставить физические диски в контейнер Docker с HDFS?
- Как вы масштабируете сходство контейнеров?
- Как это работает на узлах Name и т. Д.?
Приветствия.
1 ответ
Я постараюсь предоставить две возможности. Я не пробовал ни один из них, поэтому они в основном предложения. Но может привести вас на правильный путь.
Во-первых, если вы хотите использовать HDFS и требовать доступа к устройству на хосте, это запустить демоны HDFS в привилегированном контейнере, который имел доступ к необходимым хост-устройствам (непосредственно к дискам). См. Https://docs.docker.com/reference/run/#runtime-privilege-linux-capabilities-and-lxc-configuration для получения информации о --privileged
а также --device
флаги.
Теоретически вы можете передать устройства в контейнер, который обрабатывает доступ к дискам. Тогда вы могли бы использовать что-то вроде --link
разговаривать друг с другом. NameNode будет хранить метаданные на хосте, используя том (переданный с -v
). Хотя, учитывая небольшое прочтение, которое я сделал для NameNode, похоже, что в любом случае для высокой доступности еще не найдется хорошего решения, и это единственная точка отказа.
Второй вариант исследования, если вы ищете кластерную файловую систему, а не HDFS, в частности, это проверить недавнюю поддержку Ceph FS, добавленную в ядро в CoreOS 471.1.0: https://coreos.com/releases/. Тогда вы сможете использовать тот же подход привилегированного контейнера для доступа к дискам хоста для создания кластера Ceph FS. Тогда у вас может быть контейнер "только для данных", в котором установлены инструменты Ceph для монтирования каталога в кластере Ceph FS и представления его в качестве тома для использования другими контейнерами.
Хотя оба они - только идеи, и я лично не использовал HDFS или Ceph (хотя я присматриваю за Ceph и хотел бы попробовать что-то подобное в ближайшее время в качестве доказательства концепции).