Статья опубликована в рамках: LI Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 30 марта 2017 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
дипломов
Распределенные системы вычислений на примере Apache Hadoop
За последнее десятилетие объем создаваемых данных стремительно увеличивается. Ныне каждую секунду формируется более 30 тысяч гигабайт данных, и скорость их создания только увеличивается.
Нам приходится иметь дело с разнообразными данными. Пользователи создают контент в социальных сетях, например, в виде сотен миллионов коротких сообщений в сети Twitter каждый день. Простой обмен фотографиями в Instagram — элементарные действия для пользователя, генерирует огромное количество трафика, который необходимо хранить и обрабатывать. Серверы постоянно производят логирование сообщений о выполняемых операциях. Ученые составляют подробные отчеты об исследованиях окружающего нас мира. Интернет окончательно стал основным и необъятно большим источником данных.
Для cоциальных сетей и интеллектуальной электронной коммерции, например, BestBuy, Wallmart, AliExpress или всем известный Ebay, требуется управление данными в масштабах, которые слишком велики для традиционных (реляционных) баз данных. Появляется такое понятие, как Big Data или большие данные. Большие данные — это не просто аналог реляционных баз данных или развертывание новомодной технологии, это абсолютно иной способ работы с данными. В действительности, не всегда масштабируемость и простота исключают друг друга. В нашем случае лишь требуют разных подходов. Для хранения и обработки данных в системах больших данных используется много работающих параллельно машин — это представляет главные трудности, незнакомые большинству разработчиков.
Абстрактно описать принцип действия любой распределенной файловой системы нелегко, поэтому дальнейшие пояснения будут основываться на примере конкретной распределенной файловой системы под названием Hadoop Distributed File System (далее HDFS). Структура HDFS в достаточной степени представляет принцип действия распределенных файловых систем, чтобы продемонстрировать возможности их применения.
HDFS и Hadoop MapReduce являются двумя ответвлениями проекта Hadoop, реализующего библиотеку на языке Java для распределенного хранения и обработки больших объемов данных [1]. Система Hadoop развертывается на группе серверов, обычно называемой кластером, а HDFS служит в качестве распределенной масштабируемой файловой системы, управляющей хранением данных в кластере. Hadoop — довольно крупный и сложный проект, поэтому опишем его лишь в самых общих чертах.
У кластера HDFS имеются два типа узлов: единственный узел имен и несколько узлов данных. Когда файл выгружается в систему HDFS, он разбивается сначала на блоки фиксированного размера — как правило, от 64 до 256 Мбайт. Затем происходит репликация каждого блока по нескольким (как правило, трем) узлам данных, выбираемым произвольно. В узле имен отслеживается разбиение файла на блоки и местоположение каждого узла. Такая структура хранения приведена на рис. 1.
Рисунок 1. Файлы разбиваются на блоки, распределяемые по узлам данных в кластере.
Такое распределение файла по многим узлам упрощает его параллельную обработку. Когда программе требуется доступ к файлу, хранящемуся в системе HDFS, она обращается к узлу имен, чтобы определить те узлы данных, где размещается содержимое этого файла. Этот процесс иллюстрируется на рис. 2.
Рисунок 2. Клиенты связываются с узлом имен, чтобы определить те узлы данных, где хранятся блоки требующегося файла.
Кроме того, каждый блок реплицируется по нескольким узлам, и поэтому данные остаются доступными даже в том случае, если отдельные узлы работают в автономном режиме. Разумеется, такой отказоустойчивости присущи свои ограничения. Так, если коэффициент репликации равен трем и одновременно выходит из строя три узла, где хранятся миллионы байтов данных, то некоторые блоки, хранящиеся в этих трех узлах, окажутся недоступными.
Реализовывать распределенную файловую систему совсем не просто, но, по крайней мере, вам теперь должно быть ясно, что в ней важнее всего для пользователей. Таким образом, о распределенной файловой системе нужно знать следующее:
- Файлы распределяются по многим машинам для целей масштабируемости и параллельной обработки данных.
- Блоки файлов реплицируются по нескольким узлам для достижения отказоустойчивости.
Список литературы:
- Марц, Натан, Уорен, Джеймс. Большие данные: принципы и практика построения масштабируемых систем обработки данных в реальном времени.: Пер. с англ. — М.: ООО “И.Д.Вильямс”, 2016 – 368 с.: ил. — Парал. Тит. Англ.
дипломов
Оставить комментарий