Значительные изменения версий в 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 или более.
Предупреждение
При выполнении каждые management.task
10 минут на сервере SQL Server DTU будет давление.
Вы можете проверить выходные данные из Microsoft портал Azure.
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 замедляется при преобразовании в зонированное время из метки времени. Для получения дополнительных сведений см. здесь.
Кэш автоматических запросов
- При этом
hive.query.results.cache.enabled=true
каждый запрос, выполняющийся в Hive 3, сохраняет свой результат в кэше. - Если входная таблица изменяется, Hive вытеснит недопустимые данные из кэша. Например, если вы выполняете агрегирование и изменения базовой таблицы, запросы, выполняемые чаще всего, остаются в кэше, но устаревшие запросы вытесняются.
- Кэш результатов запроса работает только с управляемыми таблицами, так как Hive не может отслеживать изменения внешней таблицы.
- При присоединении внешних и управляемых таблиц Hive возвращается к выполнению полного запроса. Кэш результатов запроса работает с таблицами ACID. Если вы обновляете таблицу ACID, Hive повторно запускает запрос автоматически.
- Вы можете включить и отключить кэш результатов запроса из командной строки. Это может потребоваться выполнить для отладки запроса.
- Отключите кэш результатов запроса, установив для следующего параметра значение false:
hive.query.results.cache.enabled=false
- Hive сохраняет кэш результатов запроса в
/tmp/hive/__resultcache__/
. По умолчанию Hive выделяет 2 ГБ для кэша результатов запроса. Этот параметр можно изменить, настроив следующий параметр в байтах:hive.query.results.cache.max.size
- Изменения обработки запросов: во время компиляции запросов проверка кэш результатов, чтобы узнать, имеет ли он результаты запроса. Если произошло попадание в кэш, то план запроса устанавливается в значение
FetchTask
, которое считывается из кэшированного расположения.
Во время выполнения запроса:
Parquet DataWriteableWriter
используется NanoTimeUtils
для преобразования объекта метки времени в двоичное значение. Этот запрос вызывает toString()
объект метки времени, а затем анализирует строку.
- Если кэш результатов можно использовать для этого запроса
- Запрос считывается
FetchTask
из кэшированного каталога результатов. - Задачи кластера не требуются.
- Запрос считывается
- Если кэш результатов не может использоваться, выполните задачи кластера как обычные.
- Проверьте, могут ли вычислить результаты запроса, которые были вычислены для добавления в кэш результатов.
- Если результаты можно кэшировать, временные результаты, созданные для запроса, сохраняются в кэше результатов. Вам может потребоваться выполнить действия, чтобы убедиться, что очистка запроса не удаляет каталог результатов запроса.
Компоненты 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
создает уникальный идентификатор для каждой строки, вставленной в таблицу.
Он создает ключи на основе среды выполнения в распределенной системе, которая включает в себя множество факторов, таких как
- Внутренние структуры данных
- Состояние таблицы
- Идентификатор последней транзакции.
Суррогатное создание ключей не требует координации между вычислительными задачами. UDF не принимает аргументы или два аргумента
- Запись битов идентификатора
- Биты идентификатора задачи
Ограничения
Ограничения 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
Руководство по устранению неполадок
Руководство по устранению неполадок с HDInsight версий 3.6–4.0 для рабочих нагрузок Hive содержит решения распространенных проблем, с которыми можно столкнуться при переносе рабочих нагрузок Hive из HDInsight 3.6 в HDInsight 4.0.
Ссылки
Hive 3.1.0
HBase 2.1.6
https://apache.googlesource.com/hbase/+/ba26a3e1fd5bda8a84f99111d9471f62bb29ed1d/RELEASENOTES.md
Hadoop 3.1.1
Дополнительные материалы
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по