Apache Hive |
Автор: admin Просмотров: 1973 Комментарии:
Добавлен: 1 февраля 2017
Обновлено: 1.02.2017 - 14:02
Инфраструктура хранения данных, построенная поверх Hadoop для обеспечения резюмирования данных, запросов и анализов. Hive даёт SQL-подобный интерфейс для запрашивания данных, хранящихся в разных базах данных и файловых системах, которые связаны с Hadoop.
Традиционные SQL-запросы должны быть выполнены в MapReduce API Java для выполнения SQL-приложений и запросов над распределёнными данными. Hive обеспечивает необходимую абстракцию SQL для интеграции с SQL-запросами (HiveQL), лежащими в основе Java API без необходимости выполнения запросов в низкоуровневом Java API. Поскольку большинство хранилищ данных работает с языками на основе SQL-запросов, Hive поддерживает лёгкую переносимость приложений на базе SQL в Hadoop. Apache Hive разработанный в Facebook, используется и разрабатывается в компаниях Netflix и Financial Industry Regulatory Authority (FINRA). Amazon поддерживает форк Apache Hive, который входит в состав Amazon Elastic MapReduce на веб-сервисах Amazon Web Services.
Возможности Apache Hive
Apache Hive поддерживает анализ больших массивов данных, хранящихся в Hadoop в HDFS и совместимых файловых системах, таких как файловая система Amazon S3. Он предоставляет SQL-подобный язык под названием HiveQL со схемами чтения и с прозрачным преобразованием запросов MapReduce, Apache Tez и Spark jobs. Все три движка выполнения работают на Hadoop YARN. Для ускорения запросов, он предоставляет индексы, в том числе битовые индексы. Другие возможности Hive:
- Индексация для ускорения, виды индексации включают уплотнение и индекс Bitmap от 0.10, планируются другие типы индексов.
- Виды хранимых данных: простой текст, RCFile, HBase, ORC и другие.
- Хранение метаданных в СУБД значительно сокращает время на выполнение семантических проверок во время выполнения запроса.
- Действуя над сжатыми данными, хранящимися в экосистеме Hadoop с использованием алгоритмов, включая DEFLATE, BWT, snappy и т.д.
- Встроенные пользовательские функции (UDF), чтобы обрабатывать даты, строки и другие инструменты добычи данных (Data Mining). Hive поддерживает расширения набора UDF для обработки сценариев использования (use-cases), не поддерживаемые встроенными функциями.
- SQL-подобных запросов (HiveQL), которые неявно преобразуются в MapReduce, Tez, Spark jobs.
По умолчанию, Hive хранит метаданные в встроенной базе данных Apache Derby, а так же в других базах данных клиент-серверного типа, таких как MySQL, которые являются дополнительными. В Hive поддерживаются четыре формата файлов: TEXTFILE, SEQUENCEFILE, ORC и RCFILE. Apache Parquet можно читать через плагины в версиях позже 0.10 начиная с 0,13. Дополнительные плагины Hive поддерживают запросы к Bitcoin Blockchain.
Архитектура Apache Hive
Основные компоненты архитектуры Hive:
- Metastore: хранит метаданные для каждой таблицы, такие как схемы и локации. Сюда также входят метаданные раздела, которые помогают драйверу отслеживать ход выполнения различных наборов данных, распределенных по кластеру. Данные хранятся в традиционном формате СУБД. Метаданные помогают драйверу постоянно отслеживать данные и это очень важно. Таким образом, резервный сервер регулярно копирует данные, которые можно получить в случае потери данных.
- Драйвер: действует как контроллер, который принимает заявления HiveQL. Он начинает выполнение заявления путем создания сессий и контролирует жизненный цикл и ход выполнения. Он хранит необходимые метаданные, образующейся в процессе выполнения оператора HiveQL. Драйвер также выступает в качестве точки сбора данных или для поиска запросов от Reduce.
- Компилятор: выполняет компиляцию запроса HiveQL, который преобразует запрос в план выполнения. Этот план содержит задачи и этапы, необходимые для выполнения с помощью Hadoop MapReduce, чтобы получить вывод переведённый запросом. Компилятор преобразует запрос в абстрактное синтаксическое дерево (Abstract syntax tree (AST)). После проверки на совместимость и на ошибки времени компиляции он преобразует AST в направленный ациклический граф (directed acyclic graph (DAG)). DAG делит операторы на этапы и задачи MapReduce, основываясь на введённых запросах и данных.
- Оптимизатор: выполняет различные преобразования по плану выполнения, чтобы получить оптимизированный DAG. Различные преобразования можно объединить вместе, например pipeline объединить в одно соединение для лучшей производительности. Можно также разделить задачи, такие как применение преобразования данных перед операциями уменьшения, чтобы обеспечить лучшую производительность и масштабируемость. However, the logic of transformation used for optimization used can be modified or pipelined using another optimizer.
- Исполнитель: После компиляции и оптимизации исполнитель выполняет задачи в соответствии с DAG. Он взаимодействует с трекером задач Hadoop, для планирования выполнения задач. Он заботится о конвейерных задачах, убедившись что задача с зависимостью запускается на выполнение только тогда, когда все другие предпосылки выполняются.
- CLI, UI и Thrift Server: CLI (интерфейс командной строки) и UI (пользовательский интерфейс) позволяют внешним пользователям взаимодействовать с Hive путем подачи запросов, инструкций и мониторинга состояния процесса. Thrift server позволяет внешним клиентам взаимодействовать с Hive так же, как с серверами JDBC/ODBC.
HiveQL
Основанный на HiveQL, HiveQL не строго следует полному стандарту SQL-92. iveQL предлагает расширения не в SQL, включая многотабличные вставки и создание таблицу выбора, но только предлагает базовую поддержку индексам. Кроме этого, HiveQL не поддерживает транзакции и материализованное представление, а лишь ограниченную поддержку подзапросов. Поддержка вставки, обновления и удаления со всеми возможностями ACID доступна начиная с версии 0.14.
Внутри, компилятор переводит заявления HiveQL в направленный ациклический график из MapReduce, Tez или Spark jobs, которые представляют Hadoop для исполнения. Примеры:
"Количество слов". Программа подсчета слов подсчитывает количество встречающихся слов в входных данных. Подсчет слов можно записать в HiveQL:
DROP TABLE IF EXISTS docs;
2 CREATE TABLE docs (line STRING);
3 LOAD DATA INPATH 'input_file' OVERWRITE INTO TABLE docs;
4 CREATE TABLE word_counts AS
5 SELECT word, count(1) AS count FROM
6 (SELECT explode(split(line, '\s')) AS word FROM docs) temp
7 GROUP BY word
8 ORDER BY word;
Ниже приводится краткое описание каждого из утверждений выглядящих следующим образом:
DROP TABLE IF EXISTS docs;
2 CREATE TABLE docs (line STRING);
Checks if table docs exists and drops it if it does. Creates a new table called docs with a single column of type STRING called line.
LOAD DATA INPATH 'input_file' OVERWRITE INTO TABLE docs;
Загружает указанный файл или каталог (в данном случае "input_file") в таблицу. OVERWRITE определяет, что целевая таблица, к которой данные были загружены в должна быть переписана; в противном случае данные будут добавляться.
CREATE TABLE word_counts AS
5 SELECT word, count(1) AS count FROM
6 (SELECT explode(split(line, '\s')) AS word FROM docs) temp
7 GROUP BY word
8 ORDER BY word;
Запросы CREATE TABLE word_counts AS SELECT word, count(1) AS count создают таблицу с названием word_counts с двумя колонками: word и count. Этот запрос рисует вывод из запроса inner (SELECT explode(split(line, '\s')) AS word FROM docs) temp". Этот запрос служит для разделения входных слов в разных строках временной таблицы с псевдонимом. Это запрос группирует результаты, основанные на их ключах. Эти результаты в столбцах сохраняют количество вхождений для каждого слова столбца. Это также сортирует слова в алфавитном порядке.
Сравнение с традиционными базами данных
Операции хранения и запросов в Hive близко напоминают традиционные базы данных. Hive работает на диалекте SQL, но есть много различий в структуре и работе Hive по сравнению с реляционными базами данных. Основные различия в том что Hive построен поверх экосистемы Hadoop и должен соответствовать ограничениям Hadoop и MapReduce.
Схема применяется к таблице в традиционных базах данных. Однако таблица обеспечивает соблюдение схемы в момент загрузки данных. Это позволяет базе данных убедиться, что введённые данные следуют представлению таблицы, как указано пользователем. Такая конструкция называется схемой на запись. Hive когда сохраняет свои данные в таблицах, не проверяет его против схемы таблицы во время загрузки. Он проверяет во время выполнения. Эта модель называется схемой на чтение. Эти два подхода имеют свои преимущества и недостатки. Проверка данных в отношении схемы таблицы во время загрузки добавляет дополнительные накладные расходы из-за чего традиционным базам данных требуется больше времени для загрузки данных. Контроль качества производится в отношении данных во время загрузки, чтобы гарантировать, что данные не повреждены. Раннее обнаружение поврежденных данных обеспечивает раннюю обработку исключений. Поскольку таблицы имеют схемы готовые после загрузки данных, он имеет более высокую производительность во время запроса. Hive с другой стороны, может загружать данные динамически без какой-либо проверки схемы, что обеспечивает быструю первоначальную загрузку, но показывает сравнительно меньшую производительность во время выполнения запроса. Hive имеет преимущество, если схема не доступна во время загрузки, а не генерируется динамически позже.
Транзакции являются ключевыми операциями в традиционных базах данных. Типичная РСУБД поддерживает все 4 свойства трансакций: Atomicity, Consistency, Isolation и Durability (атомарность, согласованность, изоляция и прочность). Транзакции Hive, начиная с Hive 0.13 были ограничены только до partition level. Только в Hive 0.14 были добавлены функции с полной поддержкой свойств ACID. Это потому что Hadoop не поддерживает обновления уровня строк над конкретными разделами. Эти многораздельные данные неизменны и должна быть создана новая таблица с обновленными значениями. Hive 0.14 предоставляет различные операции на уровне строк: INSERT, DELETE и UPDATE. Включение транзакций INSERT, UPDATE, DELETE требует установки соответствующих значений свойств конфигурации, например hive.support.concurrency, hive.enforce.bucketing и hive.exec.dynamic.partition.mode.
Безопасность Apache Hive
В Hive v0.7.0 добавлена интеграция с Hadoop. Hadoop использует аутентификацию Kerberos для обеспечения безопасности. Kerberos позволяет взаимную аутентификации между клиентом и сервером. В этой системе, запрос клиента на тикет передается вместе с запросом. Предыдущие версии Hadoop имели несколько проблем: пользователи были в состоянии подделывать свои имена устанавливая свойство hadoop.job.ugi; операции MapReduce запускались под именем пользователя Hadoop или mapred. Благодаря интеграции Hive v0.7.0 с безопасностью Hadoop, эти вопросы во многом были исправлены. Задания TaskTracker запускаются пользователем, который запустил их и имя пользователя которого больше не может быть подделано через свойство hadoop.job.ugi Права доступа для новых файлов в Hive продиктованы HDFS (распределённая файловая система Hadoop) похожа на файловой системе Unix, где есть три сущности: пользователи, группы и другие пользователи с тремя правами: чтение, запись и выполнение. Разрешения по умолчанию для вновь создаваемых файлов можно установить путем изменения значения UMASK для переменной конфигурации Hive hive.files.umask.value
https://en.wikipedia.org/wiki/Apache_Hive
------------------------
ТРИО теплый пол отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Я уже пять лет не занимаюсь сайтом, так как работаю по 12 часов. Образование у меня среднее, и по этому нет нормальной работы. Если бы сайт приносил по 100$ в месяц, я бы добавлял по 50 статей каждый месяц. Если отправите пожертвования, я оставлю Ваши имена и фамилии в списке благодетелей !
Bitcoin: 1AP3JCZVFpHzZwcAyNztbrbFFiLdnKbY1j
Litecoin LfHXHz4k6LnDNNvCodd5pj9aW4Qk67KoUD
Dogecoin D9HHvKNFZxRhjtoh6uZYjMjgcZewwiUME9
Есть также другие кошельки.
Категория: Системы хранения данных
Комментарии |