HDFS (Hadoop Distributed File System) — это распределенная файловая система, которая предназначена для хранения данных больших размеров данных, которые поблочно разделены между узлами вычислительного кластера.
Как устроена HDFS: основные свойства
HDFS — это файловая система, которая предназначена для хранения больших массивов данных в распределенной среде, т.е. в рамках кластера из нескольких узлов.
Файловая система HDFS имеет следующие свойства:
- Механизм репликации — файловая система Haddop предназначена для хранения больших данных, распределенных по нескольким узлам кластера. Чтобы избежать потери данных при сбое какого-либо из узлов, в HDFS предусмотрена репликация данных, которая позволяет копировать данные между всеми узлами вычислительного кластера. Таким образом, выход из строя одного или нескольких узлов не повлечет за собой потерю данных.
- Блоки данных — приложения, которые совместимы с HDFS, работают с большими наборами данных и, как правило, в распределенной среде. Эти приложения записывают свои данные только один раз, но читать эти данные они могут несколько раз и требуют, чтобы чтения выполнялись со скоростью потоковой передачи (непрерывно). Для этого каждый файл HDFS разбивается на блоки, каждый из которых находится на отдельном узле кластера. Размер каждого такого блока составляет 64 МБ.
- Иерархическая организация файлов — пользователи или приложения могут создавать каталоги и хранить файлы в этих каталогах. Таким образом, можно добавлять файл в каталог или удалять файл из него. Существует также возможность переименовывать файл. HDFS не поддерживает жесткие ссылки (составляющая файла, описывающая его элемент каталога)
- Конвейерная репликация — клиент постоянно записывает данные в локальный файл. Как только локальный файл накапливает полный блок данных, клиент извлекает список узлов данных из узла имен (узел, отвечающий за репликацию). Этот список содержит узлы данных (data nodes), в которых будет храниться реплика (копия) этого блока. Затем клиент помещает блок данных в первый узел данных, который начинает получать данные порциями по 4KB и записывать их в свой локальный репозиторий. После этого данные передаются во второй узел данных, который делает то же самое (записывает их в свой репозиторий) и передает дальше по списку. Таким образом, данные передаются от одного узла данных к следующему, как по конвейеру.
Как появилась и развивалась HDFS: краткая история
Самый первый проектный документ для HDFS был написан в 2007 году Дхрубой Бортакуром. Однако разработка началась в еще начале 2005 года Дугом Катингом в рамках проекта для распределенных вычислений Nutch. В январе 2008 года проект Hadoop становится проектом верхнего уровня системы проектов Apache Software Foundation. Как полноценная файловая система, HDFS вышла 10 декабря 2011 года в рамках версии Hadoop 1.0. В мае 2012 года в HDFS добавлены возможности высокой доступности, что позволило узлу имен вручную переключаться на резервные копии.
Таким образом, благодаря своей высокой отказоустойчивости, HDFS является весьма эффективным средством хранения больших массивов данных в распределенной среде. Именно поэтому HDFS является неотъемлемой частью фреймворков экосистемы Hadoop, таких как Spark, Hive, Pig и других технологий работы с большими данными. Прочие направления Big Data, в т.ч. Data Science, включая подготовку и анализ данных, а также аналитические системы на базе алгоритмов машинного обучения (Machine Learning), также активно используют Hadoop Distributed File System.
- Графовые алгоритмы в Apache Spark
- Машинное обучение в Apache Spark
- Потоковая обработка в Apache Spark
- Основы Apache Spark для разработчиков
- Анализ данных с Apache Spark
Источники