Please enable JavaScript.
Coggle requires JavaScript to display documents.
2.7 Большие данные Apache Hadoop и Apache Spark - Coggle Diagram
2.7 Большие данные Apache Hadoop и Apache Spark
Принципы построения технологий для работы с большими данными
Распределённое хранение и обработка. Данных много, а их обработка требует больших вычислительных ресурсов, поэтому необходимы распределённые системы из большого количества узлов. Создать такую систему и обеспечить её высокую производительность — непростая задача
Горизонтальная масштабируемость. Данные постоянно накапливаются, а задачи их обработки варьируются от относительно простых до очень сложных. Поэтому нужна возможность легко наращивать объёмы хранилища и гибко изменять количество узлов, на которых обрабатываются данные
Отказоустойчивость. Узлов в кластере много (сотни или даже тысячи), и вероятность того, что они будут выходить из строя, довольно высока. Следует построить распределённую систему так, чтобы сбой на одном или нескольких узлах не влиял на её работу в целом
Hadoop
4 модуля
Hadoop Common — набор библиотек и утилит, которые используются в других решениях, в частности для создания инфраструктуры и управления распределёнными файлами
HDFS — распределённая файловая система (Hadoop Distributed File System), отказоустойчивая и не требующая высокопроизводительного оборудования. Файл в системе делится на блоки, которые распределяются между узлами вычислительного кластера (DataNode). Данные файловой системы и информация о распределении блоков и об узлах данных, содержащих эти блоки, хранится на центральном узле имён (NameNode). HDFS надёжно хранит крупные файлы за счёт дублирования и репликации блоков.
YARN (Yet Another Resource Negotiator) — система управления ресурсами, обеспечивающая безопасное планирование заданий и управление данными. Это набор программ, предоставляющих удобный интерфейс между аппаратными ресурсами кластера и приложениями, использующими эти ресурсы для вычислений и обработки данных
MapReduce — система распределённых вычислений для обработки больших данных.
Классическая конфигурация кластера Hadoop состоит из сервера имён (NameNode), узла-мастера MapReduce (JobTracker) и набора узлов, на каждом из которых развёрнуты сервер данных (DataNode) и так называемый воркер (TaskTracker).
Все операции в MapReduce подразумевают чтение с жёсткого диска и запись на него. Часто время, необходимое для этих операций, в разы превышает время самих вычислений. Поэтому технология MapReduce хорошо работает при распределённых вычислениях в пакетном режиме: когда данные подаются на обработку отдельными большими пакетами. А вот для обработки потоков данных в реальном времени она не подходит. Для таких задач разработаны фреймворки распределённой потоковой обработки данных, наиболее популярный из них — это Apache Spark.
Для чего подходит
обрабатывать большие наборы данных, когда объём даже промежуточных результатов вычислений превышает доступную память
создавать инфраструктуру анализа данных при ограниченном бюджете (Spark требует много оперативной памяти, так что его использование более затратно)
решать задачи, если времени на них достаточно и не требуется немедленно получить результаты
заниматься пакетной обработкой данных, выполнять много операций чтения с диска и записи на него (например анализ исторических и архивных данных)
Spark
Одно из основных отличий Spark от Hadoop заключается в том, что он хранит результаты промежуточных вычислений в памяти, не записывая их на диск. Это даёт большой прирост в производительности.
В основе Spark лежит движок, управляющий планированием и оптимизацией выполнения заданий, а также работой с источником данных (HDFS, объектным хранилищем или БД). Поверх ядра работают библиотеки. Вот основные из них:
Spark SQL — чтобы запускать SQL-подобные команды в распределённых наборах данных;
MLlib — для машинного обучения;
Structured Streaming — для потоковой обработки данных в реальном времени
GraphX — для задач с графами
Для чего подходит
нужно анализировать потоковые данные в реальном времени
скорость решения задачи принципиально важна
задачи включают много параллельных операций с использованием итерационных алгоритмов
задачи связаны с машинным обучением
Yandex Data Proc
Hadoop
Tez — фреймворк для обработки больших данных, содержащий ряд улучшений технологии MapReduce
Spark — фреймворк для распределённой потоковой обработки данных
Hive — платформа для хранения больших данных в распределённом хранилище и для управления ими
ZooKeeper — служба, координирующая работу приложений. Она хранит информацию о настройках системы, обеспечивает синхронизацию распределённого выполнения групповых задач, выявляет конфликтующие задачи и нерациональное использование ресурсов
HBase — распределённая NoSQL база данных (БД), основанная на модели Google BigTable и использующая HDFS. Её основная задача — хранить очень большие таблицы (миллиарды строк и миллионы столбцов) на узлах кластера
Sqoop — инструмент для передачи данных между Hadoop и реляционными БД. С его помощью можно импортировать данные из реляционных СУБД в Hadoop, преобразовать их с использованием MapReduce, а затем экспортировать обратно
Oozie — инструмент для управления рабочим процессом и координации заданий MapReduce. Может объединить несколько задач в единое логическое задание
Flume — распределённая служба, которая собирает, сортирует и перемещает большие объёмы данных журнала событий. Она может обрабатывать потоковые данные, позволяя создавать аналитические приложения для всей экосистемы Hadoop
Livy — служба, которая через REST-интерфейс обеспечивает взаимодействие с кластером Spark, включая отправку заданий или частей кода Spark, а также синхронное или асинхронное получение результатов
Zeppelin — многопользовательский инструмент для анализа и визуализации данных в браузере, а также совместной работы над данными с использованием Spark. Позволяет создавать запросы к данным в Hadoop на SQL, Scala или Python и отображать результаты в виде таблиц, графиков и диаграмм
Кластер
Подкластер. Подкластеры объединяют хосты, выполняющие идентичные функции
подкластер с управляющими хостами (например NameNode для HDFS или ResourceManager для YARN)
подкластер для хранения данных (например DataNode для HDFS)
подкластеры для обработки данных (например NodeManager для YARN)
Хранение данных. Чтобы вы не переплачивали за хранение большого объёма данных на вычислительных узлах, в сервисе реализована связь с объектным хранилищем. В него помещается основной объём данных, а на вычислительных узлах хранятся только горячие данные, к которым нужен быстрый доступ.
Вы можете запускать задания по SSH — без непосредственного доступа к кластеру Data Proc. Поэтому, чтобы вам было удобно, журнал выполнения заданий находится в отдельном бакете в объектном хранилище. Записи в журнал делаются от имени сервисного аккаунта, указанного при создании кластера.
Для кластера Data Proc рекомендуется использовать хотя бы два бакета в объектном хранилище. Один, где сервисный аккаунт имеет права только на чтение, — для исходных данных. Второй, с полным доступом сервисного аккаунта — для журналов и результатов операций. Два бакета помогут уменьшить риски непредвиденных изменений и удаления исходных данных.