Поделиться через


Значительные изменения версий в HDInsight 4.0 и преимуществах

HDInsight 4.0 имеет несколько преимуществ по сравнению с HDInsight 3.6. Ниже приведен обзор новых возможностей Azure HDInsight 4.0.

# Компонент OSS Версия HDInsight 4.0 Версия HDInsight 3.6
1 Apache Hadoop 3.1.1 2.7.3
2 Apache HBase 2.1.6 1.1.2
3 Apache Hive 3.1.0 1.2.1, 2.1 (LLAP)
4 Apache Kafka 2.1.1, 2.4(GA) 1,1
5 Apache Phoenix 5 4.7.0
6 Apache Spark 2.4.4, 3.0.0 (предварительная версия) 2,2
7 Apache TEZ 0.9.1 0.7.0
8 Apache ZooKeeper 3.4.6 3.4.6
9 Apache Kafka 2.1.1, 2.4.1 (предварительная версия) 1,1
10 Apache Ranger 1.1.0 0.7.0

Рабочие нагрузки и компоненты

Hive

  • Дополнительные функции
    • Управление рабочей нагрузкой LLAP
    • Соединители JDBC, Druid и Kafka Support LLAP
    • Улучшенные возможности SQL — ограничения и значения по умолчанию
    • Суррогатные ключи
    • Схема сведений.
  • Преимущество производительности
    • Кэширование результатов — кэширование результатов запроса позволяет повторно использовать ранее вычисляемый результат запроса
    • Динамические материализованные представления — предварительная компиляция сводок
    • Улучшения производительности ACID версии 2 в формате хранилища и подсистеме выполнения
  • Безопасность
    • Соответствие GDPR в транзакциях Apache Hive
    • Авторизация выполнения UDF Hive в ranger

HBase

  • Дополнительные функции
    • Процедура 2. Процедура версии 2 или procv2 — это обновленная платформа для выполнения административных операций с несколькими шагами HBase.
    • Полный путь чтения и записи в куче.
    • Уплотнения в памяти
    • Кластер HBase поддерживает ADLS 2-го поколения Premium
  • Преимущество производительности
    • Для ускоренной записи используются управляемые диски Azure SSD ценовой категории "Премиум", которые позволяют повысить производительность журнала упреждающего протоколирования Apache HBase (WAL).
  • Безопасность
    • Ужесточение обоих вторичных индексов, включая локальный и глобальный

Kafka

  • Дополнительные функции
    • Распределение секций Kafka в доменах сбоя Azure
    • Поддержка сжатия Zstd
    • Добавочная перебалансация потребителей Kafka
    • Поддержка MirrorMaker 2.0
  • Преимущество производительности
    • Улучшена производительность агрегирования окна в Kafka Потоки
    • Улучшенная устойчивость брокера путем уменьшения объема памяти преобразования сообщений
    • Улучшения протокола репликации для быстрой отработки отказа лидера
  • Безопасность
    • Управление доступом для создания раздела для определенных разделов или префикса раздела
    • Проверка имени узла, чтобы предотвратить атаки злоумышленника по протоколу SSL в середине
    • Улучшена поддержка шифрования с более быстрой реализацией tls и CRC32C

Spark

  • Дополнительные функции
    • Структурированная поддержка потоковой передачи для ORC
    • Возможность интеграции с новой функцией каталога метаданных
    • Поддержка структурированной потоковой передачи для библиотеки потоковой передачи Hive
    • Прозрачное запись в хранилище Hive
    • Spark Cruise — автоматическая система повторного использования вычислений для Spark.
  • Преимущество производительности
    • Кэширование результатов — кэширование результатов запроса позволяет повторно использовать ранее вычисляемый результат запроса
    • Динамические материализованные представления — предварительная компиляция сводок
  • Безопасность
    • Соответствие GDPR для транзакций Spark

Обнаружение и восстановление секций Hive

Hive автоматически обнаруживает и синхронизирует метаданные секции в хранилище метаданных Hive. Свойство discover.partitions таблицы включает и отключает синхронизацию файловой системы с секциями. В внешних секционированных таблицах это свойство по умолчанию включено (true). При запуске службы хранилища метаданных Hive (HMS) в режиме удаленной службы фоновый поток (PartitionManagementTask) периодически выполняется каждые 300 с (настраиваемая с помощью metastore.partition.management.task.frequency config), который ищет таблицы со discover.partitions свойством таблицы, заданным значением true, и выполняет msck восстановление в режиме синхронизации.

Если таблица является транзакционной таблицей, то перед выполнением этой msck repairтаблицы получается монопольная блокировка. При использовании этого свойства MSCK REPAIR TABLE table_name SYNC PARTITIONS таблицы больше не требуется выполняться вручную. Если у вас есть внешняя таблица, созданная с помощью версии Hive, которая не поддерживает обнаружение секций, включите обнаружение секций для таблицы.

ALTER TABLE exttbl SET TBLPROPERTIES ('discover.partitions' = 'true');

Установите синхронизацию секций каждые 10 минут, выраженных в секундах: в конфигурации Ambari > Hive > — set metastore.partition.management.task.frequency значение 3600 или более.

 Screenshot showing Ambari Hive config file with frequency value.

Предупреждение

При выполнении каждые management.task 10 минут на сервере SQL Server DTU будет давление.

Вы можете проверить выходные данные из Microsoft портал Azure.

Screenshot showing compute utilization graph.

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

ms (milliseconds)
s (seconds)
m (minutes)
d (days)

Настройка периода хранения секций в течение одной недели.

ALTER TABLE employees SET TBLPROPERTIES ('partition.retention.period'='7d');

Метаданные секции и фактические данные сотрудников в Hive автоматически удаляются через неделю.

Hive 3

Оптимизации производительности, доступные в Hive 3

Поддержка векторизации OLAP Dynamic Semijoin с поддержкой векторизации с помощью кэша автоматических запросов LLAP.

Новые возможности SQL

Материализованные представления суррогатных ключей ограничивает хранилище метаданных CachedStore.

Векторизация OLAP

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

Динамическое Semijoin сокращение

Значительно повышает производительность выборочных соединений. Он создает фильтр цветения с одной стороны соединения и фильтрует строки с другой стороны. Пропускает сканирование и дальнейшее вычисление строк, которые не будут квалифицировать соединение.

Поддержка векторизации Parquet с помощью LLAP

Векторное выполнение запросов — это функция, которая значительно сокращает использование ЦП для типичных операций запроса, таких как

  • Сканирование
  • фильтры
  • aggregate
  • Соединения

Векторизация также реализуется для формата ORC. Spark также использует Кто le Stage Codegen и эту векторизацию (для Parquet) с Spark 2.0. Добавлен столбец метки времени для векторизации Parquet и форматирования в LLAP.

Предупреждение

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

Кэш автоматических запросов

  1. При этом hive.query.results.cache.enabled=trueкаждый запрос, выполняющийся в Hive 3, сохраняет свой результат в кэше.
  2. Если входная таблица изменяется, Hive вытеснит недопустимые данные из кэша. Например, если вы выполняете агрегирование и изменения базовой таблицы, запросы, выполняемые чаще всего, остаются в кэше, но устаревшие запросы вытесняются.
  3. Кэш результатов запроса работает только с управляемыми таблицами, так как Hive не может отслеживать изменения внешней таблицы.
  4. При присоединении внешних и управляемых таблиц Hive возвращается к выполнению полного запроса. Кэш результатов запроса работает с таблицами ACID. Если вы обновляете таблицу ACID, Hive повторно запускает запрос автоматически.
  5. Вы можете включить и отключить кэш результатов запроса из командной строки. Это может потребоваться выполнить для отладки запроса.
  6. Отключите кэш результатов запроса, установив для следующего параметра значение false: hive.query.results.cache.enabled=false
  7. Hive сохраняет кэш результатов запроса в /tmp/hive/__resultcache__/. По умолчанию Hive выделяет 2 ГБ для кэша результатов запроса. Этот параметр можно изменить, настроив следующий параметр в байтах: hive.query.results.cache.max.size
  8. Изменения обработки запросов: во время компиляции запросов проверка кэш результатов, чтобы узнать, имеет ли он результаты запроса. Если произошло попадание в кэш, то план запроса устанавливается в значение FetchTask , которое считывается из кэшированного расположения.

Во время выполнения запроса:

Parquet DataWriteableWriter используется NanoTimeUtils для преобразования объекта метки времени в двоичное значение. Этот запрос вызывает toString() объект метки времени, а затем анализирует строку.

  1. Если кэш результатов можно использовать для этого запроса
    1. Запрос считывается FetchTask из кэшированного каталога результатов.
    2. Задачи кластера не требуются.
  2. Если кэш результатов не может использоваться, выполните задачи кластера как обычные.
    1. Проверьте, могут ли вычислить результаты запроса, которые были вычислены для добавления в кэш результатов.
    2. Если результаты можно кэшировать, временные результаты, созданные для запроса, сохраняются в кэше результатов. Вам может потребоваться выполнить действия, чтобы убедиться, что очистка запроса не удаляет каталог результатов запроса.

Компоненты SQL

Материализованные представления

Начальная реализация, представленная в Apache Hive 3.0.0, посвящена внедрению материализованных представлений и автоматическому перезаписи запросов на основе этих материализации в проекте. Материализованные представления можно хранить изначально в Hive или в других пользовательских обработчиках хранилища (ORC), и они могут легко использовать захватывающие новые функции Hive, такие как ускорение LLAP.

Дополнительные сведения см. в статье Hive — Материализованные представления — Microsoft Tech Community

Суррогатные ключи

Используйте встроенную SURROGATE_KEY определяемую пользователем функцию (UDF) для автоматического создания числовых идентификаторов строк при вводе данных в таблицу. Созданные суррогатные ключи могут заменить широкие, несколько составных ключей.

Hive поддерживает суррогатные ключи только в таблицах ACID. Таблица, к которой требуется присоединиться с помощью суррогатных ключей, не может содержать типы столбцов, которым требуется приведение. Эти типы данных должны быть примитивами, такими как INT или STRING.

Соединения с помощью созданных ключей быстрее, чем соединения с помощью строк. Использование созданных ключей не приводит к принудительному вводу данных в один узел по номеру строки. Ключи можно создавать в виде абстракций естественных ключей. Суррогатные ключи имеют преимущество по сравнению с UUID, которые являются медленнее и вероятностными.

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

  1. Внутренние структуры данных
  2. Состояние таблицы
  3. Идентификатор последней транзакции.

Суррогатное создание ключей не требует координации между вычислительными задачами. UDF не принимает аргументы или два аргумента

  1. Запись битов идентификатора
  2. Биты идентификатора задачи

Ограничения

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

Ограничения Description
Проверить Ограничивает диапазон значений, которые можно поместить в столбец.
ПЕРВИЧНЫЙ КЛЮЧ Определяет каждую строку в таблице с помощью уникального идентификатора.
FOREIGN KEY Определяет строку в другой таблице с помощью уникального идентификатора.
УНИКАЛЬНЫЙ КЛЮЧ Проверяет, отличаются ли значения, хранящиеся в столбце.
NOT NULL Гарантирует, что столбец не может иметь значение NULL.
ВКЛЮЧЕНИЕ Гарантирует, что все входящие данные соответствуют ограничению.
DISABLE Не гарантирует, что все входящие данные соответствуют ограничению.
VALIDATEC шестнадцатерично, что все существующие данные в таблице соответствуют ограничению.
NOVALIDATE Не проверка, что все существующие данные в таблице соответствуют ограничению
РЕЗЕРВИРОВАНИЕ Карты включить NOVALIDATE.
НЕ ПРИМЕНЯЕТСЯ Карты отключить NOVALIDATE.
RELY Задает соблюдение ограничения; используется оптимизатором для применения дальнейших оптимизаций.
NORELY Указывает, что ограничение не поддерживается.

Дополнительные сведения см. в разделе https://cwiki.apache.org/confluence/display/Hive/Supported+Features%3A++Apache+Hive+3.1.

Хранилище метаданных CachedStore

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

hive.metastore.rawstore.impl=org.apache.hadoop.hive.metastore.cache.CachedStore

 Screenshot showing Hive metastore property file value against 'hive.metastore.rawstore.impl field.

Руководство по устранению неполадок

Руководство по устранению неполадок с HDInsight версий 3.6–4.0 для рабочих нагрузок Hive содержит решения распространенных проблем, с которыми можно столкнуться при переносе рабочих нагрузок Hive из HDInsight 3.6 в HDInsight 4.0.

Ссылки

Hive 3.1.0

https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.1.0/hive-overview/content/hive_whats_new_in_this_release_hive.html

HBase 2.1.6

https://apache.googlesource.com/hbase/+/ba26a3e1fd5bda8a84f99111d9471f62bb29ed1d/RELEASENOTES.md

Hadoop 3.1.1

https://hadoop.apache.org/docs/r3.1.1/hadoop-project-dist/hadoop-common/release/3.1.1/RELEASENOTES.3.1.1.html

Дополнительные материалы