Apache Impala

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:03, 21 января 2019.
Apache Impala
ImpalaLogo.png
Разработчики: Apache Software Foundation
Выпущена: April 28, 2013
Написана на: C++, Java
Операционная система: Кросс-платформенное
Локализация: Английский
Тип ПО: База данных
Лицензия: Apache License 2.0
Веб-сайт impala.apache.org

Apache Impala - это открытая исходная база данных для Apache Hadoop. Impala поставляется компанией Cloudera, MapR, Oracle и Amazon. [Источник 1]

Impala обеспечивает быстрые интерактивные SQL-запросы непосредственно на ваших данных Apache Hadoop, хранящихся в HDFS, HBase или Amazon Simple Storage Service (S3). Помимо использования одной и той же унифицированной платформы хранения, Impala также использует те же метаданные, тот же синтаксис SQL (Hive SQL), драйвер ODBC и пользовательский интерфейс (интерфейс запроса Impala в Hue) как и Apache Hive. Это обеспечивает привычную и унифицированную платформу для запросов в реальном времени или пакетных запросов. [Источник 2]

Impala - это дополнение к инструментам, доступным для запроса больших данных. Impala не заменяет платформы пакетной обработки, созданные на MapReduce, такие как Hive. Hive и другие фреймворки, построенные на MapReduce, лучше всего подходят для длительных пакетных заданий, например, для пакетной обработки заданий типа Extract, Transform и Load (ETL).

Обзор

Как работает Impala с Apache Hadoop

На рисунке 1 показано, как Impala позиционируется в более широкой среде Cloudera: [Источник 3]

Рисунок 1 – Архитектура Impala

Решение Impala состоит из следующих компонентов:

  • Клиенты - организации, включая Hue, клиенты ODBC, клиенты JDBC и Impala Shell, могут взаимодействовать с Impala. Эти интерфейсы обычно используются для выполнения запросов или выполнения административных задач, таких как подключение к Impala.
  • Hive Metastore - хранит информацию о данных, доступных для Impala. Например, metastore позволяет Impala знать, какие базы данных доступны и какова структура этих баз данных. Когда вы создаете, удаляете, изменяете объекты схемы или загружаете данные в таблицы с помощью инструкций Impala SQL, соответствующие изменения метаданных автоматически передаются всем узлам Impala с помощью специализированной службы каталогов, представленной в Impala 1.2.
  • Impala - этот процесс, который выполняется на DataNodes, координирует и выполняет запросы. Каждый экземпляр Impala может получать, планировать и координировать запросы от клиентов Impala. Запросы распределяются между узлами Impala, и эти узлы действуют как рабочие, выполняя параллельные фрагменты запроса.
  • HBase и HDFS - хранение данных для запроса.

Запросы, выполняемые с помощью Impala, обрабатываются следующим образом:

  1. Пользовательские приложения отправляют SQL-запросы в Impala через ODBC или JDBC, которые предоставляют стандартизованные интерфейсы запросов. Пользовательское приложение может подключаться к любому impalad в кластере. Это impalad становится координатором запроса.
  2. Impala анализирует запрос, чтобы определить, какие задачи должны выполняться impalad экземплярами в кластере. Выполнение запланировано для оптимальной эффективности.
  3. Доступ impalad к данным, таким как HDFS и HBase, осуществляется локальными экземплярами для предоставления данных.
  4. Каждый impalad возвращает данные координирущей impalad, которая отправляет эти результаты клиенту.

Основные функции Impala

Impala обеспечивает поддержку:

  • Наиболее распространенные функции SQL-92 для языка запросов HiveQL (HiveQL), включая функции SELECT, joins и aggregate functions.
  • HDFS, HBase и Amazon Simple Storage System (S3) , в том числе:
  1. Форматы файлов HDFS: delimited text files, Parquet, Avro, SequenceFile и RCFile.
  2. Кодеки сжатия: Snappy, GZIP, Deflate, BZIP.
  • Общие интерфейсы доступа к данным:
  1. Драйвер JDBC .
  2. Драйвер ODBC .
  3. Hue Beeswax и пользовательский интерфейс Impala Query.
  • Интерфейс командной строки impala-shell.
  • Проверка подлинности Kerberos (аутентификация).

Преимущества Impala

Impala обеспечивает:

  • Знакомый интерфейс SQL.
  • Возможность запрашивать большие объемы данных («big data») в Apache Hadoop.
  • Распределенные запросы в кластерной среде, для удобного масштабирования и использования экономичного товарного оборудования.
  • Возможность обмена файлами данных между различными компонентами без шага копирования или экспорта/импорта; например, писать с помощью Pig, преобразовывать с помощью Hive и запрашивать с Impala. Impala может читать и записывать таблицы Hive, обеспечивая простой обмен данными с помощью Impala для аналитики данных, созданных Hive.
  • Единая система для большой обработки данных и аналитики, поэтому клиенты могут избежать дорогостоящего моделирования и ETL только для аналитики.

Архитектура

Чтобы избежать задержки, Impala обходит MapReduce для прямого доступа к данным с помощью специализированного механизма распределенных запросов, как показано на рисунке 2, который очень похож на те, что присутствуют в коммерческих параллельных RDBMS. В результате производительность на порядок выше, чем у Hive, в зависимости от типа запроса и конфигурации.

Рисунок 2 – Распределение запросов в Impala





















Impala в первую очередь состоит из этих исполняемых файлов:

Impalad - The impala daemon. Планирует и выполняет запросы к данным HDFS, HBase и Amazon S3. Запустите один процесс impalad на каждом узле кластера с DataNode.

Statestored - служба имен, которая отслеживает местоположение и статус всех impalad экземпляров в кластере. Запустите один экземпляр этого daemon на узле вашего кластера. Большинство производственных развертываний запускают этот daemon на namenode.

Catalogd - служба координации метаданных, которая передает изменения от операторов Impala DDL и DML всем затронутым узлам Impala, чтобы новые таблицы или недавно загруженные данные сразу отображались для запросов, отправленных через любой узел Impala. Запустите один экземпляр этого daemon на узле вашего кластера, желательно на том же хосте, что и statestored daemon.

impala-shell - интерфейс командной строки для выдачи запросов impala daemon. Вы устанавливаете это на одном или на нескольких хостах в любой точке своей сети, а не в DataNodes. Он может удаленно подключаться к любому экземпляру impala daemon.

Установка Impala

Подобно Hadoop и его экосистемному программному обеспечению, нам необходимо установить Impala на операционную систему Linux. Поскольку cloudera поставляется с Impala, он доступен с помощью Cloudera Quick Start VM.

В этом пункте описывается, как загрузить Cloudera Quick Start VM и запустить Impala. [Источник 4]

Загрузка Cloudera Quick Start VM

Выполните следующие действия, чтобы загрузить последнюю версию Cloudera QuickStartVM .

Шаг 1. Откройте домашнюю страницу веб-сайта cloudera http://www.cloudera.com/ .

Шаг 2. Нажмите на ссылку «Войти в систему» на домашней странице cloudera, которая перенаправит вас на страницу входа. Если вы еще не зарегистрировались, нажмите на ссылку «Зарегистрироваться», которая предоставит вам регистрационную форму. Зарегистрируйтесь и войдите в учетную запись cloudera.

Шаг 3. После входа в систему откройте страницу загрузки сайта cloudera, нажав на ссылку «Загрузки».

Шаг 4. Загрузите cloudera QuickStart VM, нажав кнопку «Загрузить сейчас». Это перенаправит вас на страницу загрузки QuickStart VM. Нажмите кнопку «Получить сейчас», примите лицензионное соглашение и нажмите кнопку «Отправить». Cloudera обеспечивает совместимость с VM VMware, KVM и VIRTUALBOX. Выберите нужную версию. Здесь, мы демонстрируем настройку Cloudera QuickStartVM с помощью виртуальной коробки, поэтому нажмите кнопку VIRTUALBOX DOWNLOAD. Это начнет загрузку файла с именем cloudera-quickstart-vm-5.5.0-0-virtualbox.ovf, который является файлом образа виртуального окна.

Импорт Cloudera QuickStart VM

После загрузки файла cloudera-quickstart-vm-5.5.0-0-virtualbox.ovf нам нужно импортировать его с помощью виртуального окна. Для этого, прежде всего, нужно установить виртуальную коробку в свою систему. Выполните следующие действия, чтобы импортировать загруженный файл.

Шаг 1. Загрузите виртуальную коробку со следующей ссылки и установите ее https://www.virtualbox.org/.

Шаг 2. Откройте программное обеспечение виртуального окна. Нажмите «Файл» и выберите «Импорт устройства», как показано на рисунке 3.

Рисунок 3 – Импорт устройства

















Шаг 3. При нажатии Import Appliance вы получите окно Import Virtual Appliance. Выберите местоположение загруженного файла изображения.

После импорта изображения Cloudera QuickStart VM запустите виртуальную машину. Эта виртуальная машина имеет Hadoop, cloudera Impala и все необходимое программное обеспечение. Снимок виртуальной машины показан на рисунке 4.

Рисунок 4 – Снимок виртуальной машины



















Запуск Impala Shell

Чтобы запустить Impala, откройте терминал и выполните следующую команду.

[cloudera@quickstart ~] $ impala-shell

Это запустит Impala Shell, отобразив следующее сообщение.

Starting Impala Shell without Kerberos authentication 
 Connected to quickstart.cloudera:21000 
 Server version: impalad version 2.3.0-cdh5.5.0 RELEASE (build
 0c891d79aa38f297d244855a32f1e17280e2129b) 
 
 Welcome to the Impala shell. Copyright (c) 2015 Cloudera, Inc. All rights reserved. 
 (Impala Shell v2.3.0-cdh5.5.0 (0c891d7) built on Mon Nov 9 12:18:12 PST 2015)
 
 Press TAB twice to see a list of available commands. 
 
 [quickstart.cloudera:21000] >

Редактор запросов Impala

В дополнение к Impala shell вы можете общаться с Impala с помощью браузера Hue. После установки CDH5 и запуска Impala, если вы откроете свой браузер, вы получите домашнюю страницу cloudera, как показано на рисунке 5.

Рисунок 5 – Домашняя страница cloudera



















Теперь щелкните закладку Hue, чтобы открыть браузер Hue. При нажатии вы можете увидеть страницу входа в браузер Hue, войти в систему с учетными данными cloudera.

Как только вы войдете в браузер Hue, вы можете увидеть Quick Start Wizard of Hue browser, как показано на рисунке 6.

Рисунок 6 – Quick Start Wizard of Hue browser























При нажатии в раскрывающемся меню «Редактор запросов» вы получите список редакторов Impala.

При нажатии Impala в раскрывающемся меню вы получите редактор запросов Impala, как показано на рисунке 7.

Рисунок 7 – Редактор запросов Impala

















Использование Impala Shell (команда impala-shell)

Вы можете использовать инструмент оболочки Impala (impala-shell) для настройки баз данных и таблиц, вставки данных и выдачи запросов. Для специальных запросов и исследований вы можете отправлять SQL-запросы в интерактивный сеанс. Чтобы автоматизировать вашу работу, вы можете указать параметры командной строки для обработки одного оператора или файла сценария. Impala Shell интерпретатор принимает все те же операторы SQL, указанных в отчетности Impala SQL, а также некоторые оболочки только команды, которые можно использовать для настройки производительности и диагностики проблем.

Команда impala-shell вписывается в привычную инструментальную цепочку Unix:

  • Параметр -q позволяет выдать один запрос из командной строки без запуска интерактивного интерпретатора. Вы можете использовать эту опцию для запуска impala-shell из скрипта оболочки или с помощью синтаксиса вызова команд из Python, Perl или другого скрипта.
  • Параметр -f позволяет обрабатывать файл, содержащий несколько операторов SQL, например набор отчетов или операторов DDL для создания группы таблиц и представлений.
  • Параметр --var позволяет передавать переменные замещения в операторы, выполняемые этим сеансом сеанса impala-shell, например инструкции в файле сценария, обработанного параметром -f. Вы кодируете переменную подстановки в командной строке, используя обозначение --var = variable_name = value. В выражении SQL вы подставляете значение с помощью обозначения $ {var: variable_name}. Эта функция доступна в Impala 2.5 и выше.
  • Параметр -o позволяет сохранять вывод запроса в файл.
  • Параметр -B выключает pretty-printing, так что вы можете создавать текстовые файлы, разделенные запятыми, разделенные табуляцией или другими разделителями в качестве вывода. (Используйте --output_delimiter опцию для выбора символа разделителя, по умолчанию используется символ табуляции).
  • В неинтерактивном режиме вывод запроса печатается в stdout или в файл, заданный параметром -o, в то время как случайный вывод печатается в stderr, так что вы можете обрабатывать только вывод запроса как часть конвейера Unix.
  • В интерактивном режиме impala-shell используется readline средство для вызова и редактирования предыдущих команд.

Источники

  1. Overview Apache Impala // Apache Impala. [2017-2018]. URL: https://impala.apache.org/index.html (дата обращения: 10.11.2018).
  2. Документация Apache Impala // Apache Impala website. [2017-2018]. URL: http://impala.apache.org/docs/build3x/html/index.html (дата обращения: 10.11.2018).
  3. How Impala Works with CDH // Cloudera website. [2017-2018]. Дата обновления: 12.12.2018. URL: https://www.cloudera.com/documentation/enterprise/5-8-x/topics/impala_intro.html (дата обращения: 10.11.2018).
  4. Impala Installation // Data-flair website. [2017-2018]. Дата обновления: 19.09.2018. URL: https://data-flair.training/blogs/impala-installation (дата обращения: 10.11.2018).