Содержание


Краткий сравнительный обзор решений для SQL-доступа к Hadoop

Comments

Потребности в SQL-доступе к Hadoop

Растущие потребности в обработке и анализе больших объемов данных в ИТ-отрасли (включая анализ web-данных, анализ перемещения пользователей по сайтам, анализ журналов сетевого мониторинга, анализ данных социальных сетей и анализ корпоративных данных) и научной сфере (например, анализ данных, генерируемых масштабным моделированием, системами датчиков и высокопроизводительным лабораторным оборудованием) послужили стимулом для разработки новых решений. Платформа Hadoop предлагает простую, но мощную модель программирования и среду исполнения, которые упрощают создание масштабируемых приложений для параллельной обработки значительных объемов данных на больших кластерах из серийно выпускаемых вычислительных систем.

Решение с отрытым исходным кодом Hadoop имеет множество областей применения в науке и отрасли. IBM®, Oracle, Microsoft и некоторые успешные новые компании, такие как Cloudera, MapR, Platfora и Trifecta, разработали решения на базе Hadoop. Теперь термины Hadoop и большие данные стали использоваться как взаимозаменяемые. По оценке Gartner, в настоящее время рынок экосистемы Hadoop оценивается примерно в 77 миллионов долларов, и прогнозируется его рост до 813 миллионов долларов к 2016 году.

С недавнего времени специалисты в ИТ-отрасли и научной сфере начали осознавать ограничения среды Hadoop в ряде областей применения. (Некоторые из таких ограничений описываются в этой статье. Дополнительную информацию об ограничениях среды Hadoop можно получить в отраслевом отчете. В разделе Ресурсы приведены ссылки на другие отчеты.) Например, при обработке масштабных графов среда Hadoop оказывается неэффективной. Недавно компания Google представила систему Pregel на базе проектов с открытым исходным кодом Apache Giraph и Apache Hama, которая использует модель параллельных вычислений Bulk Synchronous Parallel (BSP) для эффективной и масштабируемой обработки масштабных графов на распределенных кластерах из серийно выпускаемых вычислительных систем. Были представлены и некоторые другие проекты для решения проблемы обработки масштабных графов (например, GraphLab и GraphChi) .

Hadoop оказалась неподходящей платформой для масштабной обработки потоковых данных. Компания Twitter анонсировала выпуск системы Storm, которая заполняет этот пробел, предоставляя распределенную и отказоустойчивую платформу для непрерывной обработки потоковых данных в реальном времени. Другими системами в этой области применения являются IBM InfoSphere Streams и Apache S4.

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

Еще одним препятствием является то, что программисты в этой области обычно не знакомы с инфраструктурой MapReduce. Фактически среда Hadoop требует от разработчика прохождения серьезного обучения и применения значительных навыков программирования. Многие программисты предпочитают использовать язык SQL (в котором они более искусны). Этот язык предоставляет им возможность формулировать задачи на декларативном языке высокого уровня и оставлять детали оптимизации внутреннему механизму. Абстракции языка высокого уровня позволяют базовой системе выполнять автоматическую оптимизацию. Эта статья посвящена системам работы с большими данными нового поколения, призванным предоставить эффективные и масштабируемые механизмы для обработки значительных объемов структурированных данных. Сначала представлен обзор SQL-механизма массовой параллельной обработки Big SQL. Затем он сравнивается с похожими системами — Apache HIVE, Cloudera Impala и Pivotal HAWQ.

Обзор Big SQL

Big SQL — это SQL-интерфейс для платформы IBM InfoSphere BigInsights на базе Apache Hadoop, предназначенной для обработки больших данных. Он предоставляет SQL-доступ к данным, которые хранятся в InfoSphere BigInsights, используя среду Hadoop для сложных наборов данных и прямой доступ для выполнения небольших запросов. В первоначальной реализации Big SQL запрос разбивается на серию заданий Hadoop. Для выполнения интерактивных запросов Big SQL использует встроенный оптимизатор запросов, который переписывает входящий запрос как локальное задание для сведения к минимуму задержек, используя механизмы динамического планирования Hadoop. Оптимизатор запросов также обеспечивает традиционную оптимизацию запросов, такую как оптимальный порядок обращения к таблицам и наиболее эффективная стратегия выполнения операторов join.

В последней версии механизма Big SQL концепция другая. Используется архитектура параллельной обработки без разделения ресурсов, в которой базовая инфраструктура Hadoop заменяется SQL-механизмом массовой параллельной обработки, развертываемым непосредственно в физической файловой системе Hadoop Distributed File System (HDFS). Таким образом, Big SQL остается гармоничным участником экосистемы Hadoop, поскольку все данные хранятся в исходном HDFS-формате, а не в специальном формате системы хранения. Данные доступны для всех других инструментов экосистемы Hadoop, таких как Pig и Hive. Системная инфраструктура обеспечивает логическое представление данных для хранения и управления информацией о метаданных. В частности, таблица — это просто представление, которое определено для хранимых данных в HDFS. Кроме того, механизм Big SQL использует каталог базы данных Apache Hive для хранения информации об определениях, местоположении и формате хранения таблиц.

На рисунке 1 показана общая архитектура механизма Big SQL. В этой архитектуре узел-координатор SQL обеспечивает компиляцию и оптимизацию входящих SQL-операторов для генерирования эффективного плана параллельного выполнения запросов. План распределяет выполнение запроса по набору узлов-исполнителей. Узлы-исполнители постоянно работают, что обеспечивает отсутствие задержки запуска.

Рисунок 1. Архитектура механизма Big SQL
Diagram of the architecture for a the Big SQL engine
Diagram of the architecture for a the Big SQL engine

Исходя из доступности ресурсов механизм Big SQL динамически и автоматически определяет наилучшую степень внутреннего параллелизма для каждого запроса. Планировщик, компонент механизма Big SQL, использует информацию каталога о местоположении данных, чтобы обеспечивать эффективную обработку максимально близко к данным. Планировщик также обеспечивает дальнейшую оптимизацию плана выполнения запроса на основе физического размещения данных и связанной статистики. Например, он может принять решение об исключении частей, которые не существенны для предиката запроса. Механизм исполнения Big SQL предоставляет средства кэширования в оперативной памяти и включает возможность сброса больших наборов данных на локальный диск в каждом узле, обрабатывающем запрос. Таким образом, единственным ограничением на размер запросов, групп и сортировки является дисковая емкость кластера.

Фактически Big SQL не работает в изоляции. Обычно узлы используются совместно другими инструментами и заданиями в экосистеме Hadoop, например, заданиями MapReduce, узлами HBase и заданиями Pig. Поэтому Big SQL можно сконфигурировать для ограниченного потребления ресурсов кластера (например, задать процентную долю использования процессоров или оперативной памяти). Конфигурационные настройки могут указывать, чтобы ресурсы автоматически настраивались исходя из рабочей нагрузки.

Используя Big SQL, можно также выполнять запросы к гетерогенным системам, например, если необходимо соединить данные, хранящиеся в HDFS, с данными, которые хранятся в других реляционных базах данных, таких как IBM® DB2®, Oracle и Teradata. Big SQL поддерживает открытую интеграцию с инструментами бизнес-анализа, такими как IBM® Cognos® и Microstrategy.

Big SQL поддерживает мощный SQL-диалект, расширяющий язык SQL:2011, обширный спектр типов реляционных данных, а также использование хранимых процедур и пользовательских функций. Big SQL также предоставляет полную поддержку следующих операций:

  • Механизмы подзапросов SQL:
    • EXISTS
    • NOT
    • EXISTS
    • IN
    • ANY
    • SOME
    • HAVING
  • Стандартные операции join:
    • inner
    • outer
    • equality
    • non-equality
  • Операции манипулирования с наборами:
    • union
    • intersect
    • except
  • Обширные аналитические возможности:
    • Группировка наборов с использованием оператора CUBE
    • Группировка наборов с использованием оператора ROLLUP
    • Стандартные аналитические функции:
      • CORRELATION
      • COVARIANCE
      • STDDEV
      • VARIANCE

Сравнение с другими системами SQL-on-Hadoop

Некоторые другие системы также предоставляют поддержку SQL для Hadoop. В этой статье предлагается краткий обзор некоторых из ключевых систем и их сравнение с IBM Big SQL.

Hive

Apache Hive считается первым решением с поддержкой SQL-on-Hadoop. Это продукт с открытым исходным кодом для организации хранилищ данных на базе платформы Hadoop. Он поддерживает знакомые концепции реляционных баз данных, такие как таблицы, столбцы и разделы, и предлагает некоторую поддержку SQL для неструктурированных данных. Hive сохраняет расширяемость и гибкость платформы Hadoop. Hive поддерживает все основные типы примитивов (например, integers, floats и strings) и сложные типы (например, maps, lists и structs). Это решение также поддерживает запросы на SQL-подобном декларативном языке Hive Query Language (HiveQL), который является подмножеством SQL92, и поэтому понятен всем, кто знаком с SQL. Запросы автоматически компилируются в задания MapReduce, выполняемые в среде Hadoop. HiveQL позволяет включать в запросы пользовательские сценарии MapReduce.

В целом Hive — это хороший интерфейс для специалистов по реляционным базам данных, хотя детали базовой реализации не скрыты. HiveQL отличается от стандартного SQL по некоторым аспектам, таким как наилучший способ определения операций join для максимальной производительности. В HiveQL нет некоторых функций языка SQL. Он предоставляет возможность вставлять пользовательский код для ситуаций, которые не вписываются в SQL, и он включает инструменты для обработки входа и выхода. Hive не поддерживает:

  • Операторы UPDATE и DELETE statements
  • Операции INSERT для отдельных строк
  • Типы данных даты и времени, поскольку они рассматриваются как строки

Big SQL использует каталог Hive. К существующим таблицам Hive могут напрямую обращаться Big SQL и другие инструменты InfoSphere BigInsights. Однако Big SQL поддерживает более обширный набор функций SQL, чем Hive. Например, Big SQL поддерживает подзапросы с использованием в операторах In и Not in, операторы Having, операторы With, расширенные функции агрегации и обобщенные табличные выражения. Big SQL обеспечивает более высокую производительность выполнения простых запросов, исключая 15-секундную задержку, необходимую при выполнении запроса Hive для запуска задания Hadoop.

Cloudera Impala

Решение с открытым исходным кодом Impala предлагает механизм выполнения SQL-запросов с массовой параллельной обработкой, работающий в среде Apache Hadoop. Этот продукт компании Cloudera не использует Hadoop для выполнения запросов. Он использует свой собственный набор демонов, которые устанавливаются в дополнение к узлам данных и настраиваются для оптимизации локальной обработки с целью исключения узких мест. Impala является компонентом экосистемы Hadoop и совместно использует инфраструктуру (например, метаданные, Apache Hive и Apache Pig). Поэтому пользователь может выполнять запросы к данным независимо от того, где они хранятся, в HDFS или в Apache HBase. Impala использует те же метаданные и синтаксис SQL (Hive SQL), что и Apache Hive. В сравнении с Impala, механизм Big SQL поддерживает значительно более обширный диалект SQL и больше функций. Одним из основных ограничений решения Impala является то, что оно использует реализацию join в оперативной памяти. Поэтому запросы могут не выполняться, если соединенные таблицы не помещаются в оперативной памяти.

Pivotal HAWQ

HAWQ (HAdoop With Query) — это проект с закрытым исходным кодом компании EMC Pivotal, предлагающий базу данных с массовой параллельной обработкой. HAWQ — это в сущности база данных Greenplum, расширенная для хранения данных в файловой системе HDFS. HAWQ использует СУБД Postgres и систему хранения HDFS как внутренний механизм хранения. Поскольку решение HAWQ использует Postgres, оно может поддерживать весь синтаксис SQL. SQL-доступ к данным HDFS обеспечивается с использованием внешних таблиц.

Ключевая архитектура механизма HAWQ включает следующие компоненты:

  • HAWQ Master — обеспечивает прием соединений от клиентов и управление системными таблицами, которые содержат информацию о метаданных. HAWQ имеет свой собственный каталог, не используя каталог HIVE. Кроме того, основной узел обеспечивает синтаксический разбор и оптимизацию запросов, а также генерирование планов их выполнения.
  • HAWQ Segment — блок обработки, обеспечивающий выполнение локальных операций базы данных над своими собственными наборами данных.
  • Узлы HAWQ Storage — хранят все пользовательские данные. HAWQ использует собственный формат файлов для хранения данных HDFS.
  • HAWQ Interconnect — обеспечивает управление межпроцессными взаимодействиями между сегментами в ходе выполнения запросов.

BIG SQL предлагает более гладкую интеграцию с различными компонентами экосистемы Hadoop. Однако, помимо полной поддержки SQL, решение HAWQ может обеспечивать высокую производительность благодаря унаследованному механизму массовой параллельной обработки.

Заключение

В последнее десятилетие платформа Hadoop стала популярным механизмом для эффективного использования возможностей больших компьютерных кластеров. Она позволяет программистам сосредоточиваться на данных и применении преобразований к наборам записей, поскольку распределенное выполнение и отказоустойчивость прозрачно обеспечиваются инфраструктурой MapReduce. Недавно появились новые системы, ориентированные на конкретные области применения. Эти системы формируют новое поколение решений для работы с большими данными. Такие системы вряд ли полностью заменят инфраструктуру MapReduce. Вероятнее всего, они будут сосуществовать и дополнять друг друга в различных сценариях.

SQL — это наиболее широко используемый язык для обеспечения доступа к структурированным данным, их анализа и использования. Потребность в поддержке SQL в среде Hadoop для обработки больших структурированных данных стремительно растет. Эта статья посвящена новым системам SQL-on-Hadoop, разработка которых набирает обороты в связи с ростом потребностей в выполнении интерактивных запросов в среде Hadoop для обработки масштабных наборов данных. Представлен обзор IBM Big SQL и трех других ключевых систем — Hive, Impala и HAWQ. Однако на рынке появились и другие системы, включая Microsoft Polybase, Google BigQuery, Teradata (SQL-H), Hadapt, Apache Drill, Facebook Presto и SAP HANA. Изучите ресурсы, ссылки на которые приведены в этой статье, чтобы провести собственное исследование систем SQL-on-Hadoop.


Ресурсы для скачивания


Похожие темы


Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Большие данные и аналитика, Information Management
ArticleID=1009746
ArticleTitle=Краткий сравнительный обзор решений для SQL-доступа к Hadoop
publish-date=06302015