Экосистема обработки больших данных

Hadoop

Hadoop используется для обработки большего объема данных и быстрорастущих данных, предназначен для обработки неструктурированных данных, при использовании нужно учесть, что сам по себе он не дает доступ к данным в реальном времени, при формировании запросов обрабатывается весь массив данных.

Hadoop применяют для построения глобальной аналитики, систем машинного обучения, корреляционного анализа разнообразных данных, систем статистики. Hadoop сам по себе не может использоваться как операционная база данных. Как правило, в корпоративной среде Hadoop используется совместно с реляционными базами данных. Для устранения базовых недостатков фреймворка используются дополнительные модули и внешние приложения, взаимодействие с которыми описывается ниже.

Hbase

Hbase — нереляционная распределенная база данных с открытым исходным кодом; написана на Java; является аналогом Google BigTable. Разрабатывается в рамках проекта Hadoop. Работает поверх распределенной файловой системы HDFS и обеспечивает BigTable-подобные возможности для Hadoop, то есть обеспечивает отказоустойчивый способ хранения больших объемов разреженных данных. HBase используется тогда, когда нужен произвольный доступ к данным, хранящимся в HDFS, в реальном времени и с правом записи и чтения.

Модель доступа к данным в HBase имеет следующие ограничения — поиск ряда по одному ключу; не поддерживаются транзакции; доступны только операции по одной строке.

Hive

Hive – это надстройка над Hadoop для того, чтобы облегчить выполнение таких задач, как суммирование данных, непрограммируемые запросы и анализ больших наборов данных — может быть использован теми, кто знает язык SQL; создает задания MapReduce, которые исполняются на кластере Hadoop; определения таблиц в Hive надстраиваются над данными в HDFS.

Hive поддерживает анализ больших массивов данных, хранящихся в Hadoop в HDFS и совместим с другими файловыми системами такими, как Amazon S3. Он обеспечивает SQL-подобный язык, называемый HiveQL, сохраняя полную поддержку Map/Reduce, для ускорения запросов обеспечивается построение индексов, в том числе растровых индексов.

Pig

Pig – это надстройка, предназначенная для анализа больших наборов данных и состоящая из языка высокого уровня (PigLatin) для написания программ анализа данных и инфраструктуры для запуска этих программ. Язык характеризуется относительно простым синтаксисом. Написанные сценарии скрыто преобразуются в задачи MapReduce, которые исполняются на кластере Hadoop.

Pig и Hive обеспечивают практически одинаковый функционал работы с данными, хотя Hive работает быстрее. Оба модуля дают разные инструменты реализации, поэтому выбор зависит исключительно от разработчика приложений.

Sqoop

Sqoop — это инструмент, предназначенный для эффективной передачи больших массивов данных между Hadoop и структурированными СУБД (например, реляционными) в обоих направлениях. Sqoop стал ключевым решением для трансфера данных между SQL и Hadoop. Проект предоставляет коннекторы для популярных систем MySQL, PostgreSQL, Oracle, SQL Server и DB2. Также есть возможность разрабатывать высокоскоростные коннекторы для специализированных систем, таких как корпоративные хранилища данных.

Spark In memory database

Spark In memory database — специализированная распределенная система для ускорения обработки данных в памяти. Интегрирован с Hadoop. По сравнению с предоставляемым в Hadoop механизмом MapReduce, Spark обеспечивает в 100 раз более высокую производительность при обработке данных в памяти и в 10 раз при размещении данных на дисках. Движок может выполняться на узлах кластера Hadoop как при помощи Hadoop YARN, так и в обособленном режиме. Поддерживается обработка данных в хранилищах HDFS, HBase, Cassandra, Hive и любом формате ввода Hadoop (InputFormat). В отличие от MapReduce Spark не сохраняет промежуточные наборы результатов на да диск (если они не слишком большие, чтобы вписаться в RAM). Spark формирует RDDs (Resilient Distributed Datasets), который может находится и обрабатываются в оперативной памяти полностью либо частично. RDDs не имеет жесткого формата.

Система позиционируется как быстрый инструмент для работы с данными хранящимися в кластере Hadoop.

Shark

Shark — компонент Spark, обеспечивающий распределенный механизм SQL-запросов для данных Hadoop. Shark полностью совместим с клиентом Hive. Shark является компонентом Spark. Это высокопроизводительный продукт с открытым исходным кодом,обеспечивающий распределенный механизм SQL-запросов для данных Hadoop. Shark полностью совместим с клиентом Hive. Благодоря Shark обеспечивается высокая производительность и усовершенствованная аналитика пользователям Hive.

MySQL

MySQL — свободная реляционная система управления базами данных. Разработку и поддержку MySQL осуществляет корпорация Oracle. Продукт распространяется как под GNU General Public License. Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.

Максимальный размер таблиц в MySQL ограничивается максимальным размером файла который позволяет создать операционная система.

MySQL является решением для малых и средних приложений. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удаленные клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.

PostgreSQL

PostgreSQL — свободная объектно-реляционная система управления базами данных (СУБД). PostgreSQL базируется на языке SQL и поддерживает многие из возможностей стандарта SQL:2003. Сильными сторонами PostgreSQL считаются — поддержка БД практически неограниченного размера(максимальный размер таблицы 32Тбайт); мощные и надежные механизмы транзакций и репликации; расширяемая система встроенных языков программирования(PL/pgSQL, PL/Perl, PL/Python, PL/Tcl; дополнительно можно использовать PL/Java, PL/PHP, PL/Py, PL/R, PL/Ruby, PL/Scheme, PL/sh иPL/V8). PostgreSQL поддерживает одновременную модификацию БД несколькими пользователями с помощью механизма Multiversion Concurrency Control (MVCC). Благодаря этому соблюдаются требования ACID, и практически отпадает нужда в блокировках чтения.

PostgreSQL имеет более продвинутый функционал построения запросов и индексов по сравнению с MySQL. Практически применяется как оперативная база данных в высоко нагруженных проектах.

MongoDB

MongoDB — документо-ориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц. Основные возможности: документо-ориентированное хранение (JSON-подобная схема данных); достаточно гибкий язык для формирования запросов; динамические запросы; поддержка индексов; профилирование запросов; эффективное хранение двоичных данных больших объемов, например, фото и видео; журналирование операций, модифицирующих данные в базе данных; поддержка отказоустойчивости и масштабируемости, асинхронная репликация, набор реплик и распределения базы данных на узлы; может работать в соответствии с парадигмой MapReduce; полнотекстовый поиск, в том числе на русском языке, с поддержкой морфологии.

MongoDB может рассматриваться как прямая альтернатива реляционным базам данных. MongoDB в большинстве случаев способна стать заменой реляционной базе данных. Она намного проще и понятнее; быстрее работает и имеет меньше ограничений для разработчиков приложений. Легко реализуется горизонтальная масштабируемость и встроен автошардинг (при спользовании SQL решений придется использовать сторонние утилиты). Но при выборе NoSQL решений, от функции автоматического «без права на ошибку» (поддержки транзакций и целостности) скорее всего придется отказаться и реализовывать ее вручную, зачастую отказываясь от кэширования записи. Основное преимущество NoSQL, когда архитектура модели мало использует связи (особенно многие-ко-многим), но часто «опускается» до композиции и агрегации или необходимости работать с иерархией наследования классов/объектов модели.

Добавить комментарий

Ваш адрес email не будет опубликован.

закрыть

Поделиться

Отправить на почту
закрыть

Вход

закрыть

Регистрация

+ =