Apache Hive (Полное путешествие), серия 1 из 3
Апачский улей
Апачский улей
Программное обеспечение хранилища данных Apache Hive™ облегчает чтение, запись и управление большими наборами данных, находящимися в распределенном хранилище, с помощью SQL (стандартный язык запросов).
Где Hive падает в стеке?
На рисунке ниже видно, что Hive — это скорее уровень абстракции, лежащий поверх YARN Map-Reduce 2. Кроме того, обратите внимание, что Hive и Pig лежат в одном горизонтальном стеке.
Архитектура
Как мы видим, Hive — это абстракция поверх заданий Hadoop Map-Reduce. Таким образом, базовая структура такая же, т.е. Hive работает поверх Hadoop.
Итак, Hive в основном состоит из двух компонентов, т.е. Улей а также Хадуп.
Компоненты Hadoop
Ключевые компоненты Hadoop: Пряжа а также HDFS. Yarn — это менеджер ресурсов, а HDFS — это распределенная файловая система Hadoop.
На картинке показано, как данные распределяются по разным узлам.
Компоненты улья
- Внешние интерфейсы — интерфейсы программирования CLI, WebUI, JDBC, ODBC.
- Thrift Server — межъязыковая сервисная платформа.
- Metastore — метаданные о таблицах и разделах Hive.
- Водитель — Мозг Улья! Компилятор, оптимизатор и механизм выполнения
Важность улья
Аналитики данных с Hadoop (неудобно)
В основном аналитики данных чувствуют себя некомфортно при работе с Hadoop из-за характера кода Hadoop (поскольку для каждого анализа вы должны писать индивидуальные задания по уменьшению карты).
Ограничения Hadoop
Самое большое ограничение Hadoop заключается в том, что нужно использовать модель M/R (модель Map-Reduce). Другие ограничения указаны ниже:
* Не многоразовый
* Склонен к ошибкам
* Несколько этапов функций Map/Reduce для сложных заданий.
* Это все равно, что попросить разработчика написать план физического выполнения в БД.
Модель данных улья
- Столы
- Перегородки
- Ведра
Столы
Аналогично реляционным таблицам. Каждая таблица имеет соответствующий каталог в HDFS. Данные сериализуются и хранятся в виде файлов в этом каталоге.
Перегородки
Каждая таблица может быть разбита на разделы. Разделы определяют распределение данных внутри подкаталогов.
Пример
CREATE_TABLE Sales (sale_id INT, amount FLOAT)PARTITIONED BY (country STRING, year INT, month INT)
Таким образом, каждый раздел будет разделен на разные папки, например:
Sales/country=US/year=2012/month=12
Ведра
Данные в каждом разделе разделены на сегменты на основе хеш-функции столбца. Каждое ведро хранится в виде файла в каталоге раздела.
Пример:
H(столбец) mod NumBuckets = номер корзины
H(столбец) mod NumBuckets = номер корзины
Сравнение между Hive и Pig, поскольку они оба попадают в один и тот же горизонтальный блок стека.
Сходства
Оба языка высокого уровня, которые работают поверх структуры map-reduce. Поскольку оба используют базовую HDFS и map-reduce, они оба могут сосуществовать.
Отличия
- Язык
Свинья — процедурная; (A = загрузить «mydata»; дамп A)
Hive — декларативный (выберите * из A) - Тип работы
Свинья — больше подходит для специального анализа (анализ журналов поиска потока кликов по запросу).
Hive — инструмент отчетности (например, еженедельная отчетность BI) - Пользователи
Свиньи — исследователи, программисты (создание сложных конвейеров данных, машинное обучение)
Улей — Бизнес-аналитики - Интеграция
Pig — не имеет комиссионного сервера (т.е. нет/ограниченная межъязыковая поддержка)
Улей — Комиссионный сервер - Потребность пользователя
Pig — улучшенная среда разработки, ожидаемые отладчики
Hive — ожидается лучшая интеграция с технологиями (например, JDBC, ODBC).
Плюсы, минусы и улучшения улья
- Благо для аналитиков данных
- Легкая кривая обучения
- Полностью прозрачен для лежащего в основе Map-Reduce
- Разделы (скорость!)
- Гибкость загрузки данных из localFS/HDFS в таблицы Hive.
- Расширение поддержки запросов SQL (обновления, удаления)
- Улучшенная поддержка отладки в оболочке
Где Hive полезен?
Везде, где задействована пакетная обработка например: обработка журналов, интеллектуальный анализ текста, индексация документов, бизнес-аналитика для клиентов и прогнозное моделирование.
Где не полезно?
Везде, где требуется онлайн-обработка, например: OLTP и запросы в реальном времени.
Благодарим вас за чтение вводного блога об Apache Hive. Теперь, если вы хотите попробовать это. Начнем с настройки Hadoop.
Продолжать Серия Часть 2 из 3 .