...или Kosmos Distributed File System

Kosmos Distributed File System Сегодня речь пойдет об еще одной распределенной файловой системе - KosmosFS. У русских людей название этого проекта определенно вызывает ассоциации с космосом, но изначально все же свою лепту в него внес изначальный разработчик - Kosmix. По большому счету KFS мало чем выделяется из множества своих конкурентов, по своей структуре она состоит из сервера метаданных и серверов блоков, доступ к системе производится средствами клиентской библиотеки, предоставляющей соответствующий API. Список возможностей файловой системы также вполне стандартен:

  • Инкрементальная масштабируемость. При добавлении дополнительных узлов в кластер, система сама адаптируется для вовлечения их в полноценную работу.
  • Стабильный доступ. Реплицируемость данных (по-умолчанию в трех экземплярах) позволяет гарантировать доступность данных вне зависимости от сбоев в работе отдельных узлов.
  • Балансировка блоков данных. Периодически сервер метаданных перераспределяет данные с целью более оптимального использования дискового пространства.
  • Целостность данных. Для обеспечения целостности данных вычисляются и сравниваются контрольные суммы блоков данных.
  • Кэширование. Для увеличения производительности используется кэширования на уровне клиентской библиотеки.
  • Прозрачная работа с недоступными узлами. Клиентская библиотека прозрачно для приложения переключается на альтернативный сервер с данными, если обнаруживает что один из них недоступен.
  • Поддержка языков программирования:C++, Java, Python.
  • Скрипты. С системой предоставляется набор скриптов для развертывания, запуска и остановки узлов.

Но написать этот пост меня подтолкнул вовсе не этот список. В комментариях к одной из предыдущих моих записей читатели подняли тему о целесообразности использования Java для реализации HDFS в частности и Hadoop в целом. В качестве альтернативы был предложен C++ (только на словах конечно же), аргументируя это тем, что такая реализация была бы эффективнее. KFS же как раз и является той самой альтернативой HDFS, написанной на C++. KFS тесно интегрируется с Hadoop с помощью его интерфейсов для файловой системы. Это позволяет Hadoop-приложениям незаметно работать с KFS точно так же, как если бы на ее месте была бы HDFS. Код для интеграции с Hadoop был выпущен в виде патча к Hadoop-JIRA-1963, а начиная с Hadoop версии 0.15 этот код входит в стандартный дистрибутив, ровно как и детальная инструкция по интеграции.