0924-Улей на высокой скорости
0924-Улей на высокой скорости

Не существует универсального подхода к настройке Hive для запросов Tez. Производительность запросов зависит от размера данных, типа файла, структуры запроса и шаблона запроса. При тестировании производительности мы обычно выполняем настройку производительности путем настройки параметров конфигурации или переписывания SQL. Рекомендуется вносить только одно изменение во время тестирования, чтобы можно было легко проверить, какой параметр вступит в силу.

1 Общий тюнинг

Иногда после обновления с CDH на CDP вы обнаружите, что задание Hive на Tez работает медленнее, чем старые MR или Spark. Это часто вызвано отсутствием настройки задания Tez. Кроме того, на старой платформе CDH, т.к. обычно оно продолжается. Некоторое время оно работает стабильно, и некоторые параметры старого задания MR были более или менее настроены. Однако эти параметры не могут действовать непосредственно в задании Tez, поэтому вы почувствуете, что новый Hive. в CDP производительность лучше, чем у старого Hive в CDH. Вот основные три области, которые могут привести к снижению производительности:

1. Подтвердите конфигурацию планировщика емкости YARN. Если в очереди неправильно настроен верхний предел доступных пользователю ресурсов, это повлияет на производительность запросов. Поэтому вам нужно сосредоточиться на коэффициенте ограничения пользователей, проценте минимального ограничения пользователей и максимальной емкости.

2. Проверьте предохранительные клапаны Hive и Hive на Tez (значения не по умолчанию для конфигураций Hive и HiveServer2) и удалите все старые или просроченные конфигурации.

3. Определите, что работает медленно, например задачи сопоставления, сокращения задач и объединения.

  • • Проверьте Tez Engine в универсальной конфигурации.
  • • Проверьте количество задач на карте, увеличьте или уменьшите
  • • Проверьте количество задач сокращения, увеличения или уменьшения.
  • • исследоватьодновременновопрос:
    • • Проверьте очередьизодновременно, например YARNочередьизупользователя. limit factor
    • • Hive on Tez сеанс через контейнер предварительного нагреваизодновременно

2 Изучите основы Tez

Прежде чем изменять какую-либо конфигурацию, мы должны понять внутреннюю работу Tez, например, как Tez определяет количество карт и редукторов. Вот несколько статей, которые помогут вам понять и изучить:

Язык кода:javascript
копировать
https://cwiki.apache.org/confluence/display/TEZ/How+initial+task+parallelism+works
https://cwiki.apache.org/confluence/display/TEZ/How+does+ShuffleVertexManager+%28Auto+Reduce+Parallelism%29+work

Количество 3 картографа

Tez использует исходные входные данные задания, чтобы определить количество задач картографа. В Tez количество задач определяется разделением по группам, что эквивалентно разделению входных данных, определяющему количество картографов в задании MapReduce.

1.tez.grouping.min-size и tez.grouping.max-size Определить количество картографов, минимальный размер Значение по умолчанию: 16 MB,max-size Значение по умолчанию: 1 GB。

2. После того как Tez подтвердит количество задач картографа, он также обеспечит данные и группировку каждой задачи. max/min Тот же размер, уменьшить tez.grouping.max-size Увеличится количество картографических задач, увеличится tez.grouping.max-size Сократится количество задач.

3. Примеры следующие:

  • • Входные данные (входные шарды/сплиты) – 1000 файлов, примерно по 1,5 МБ каждый.
  • • Общий размер данных – 1000*1,5 МБ = ~ 1,5 ГБ.
  • • Tez попытается обработать эти данные, используя две отдельные задачи.,Поскольку максимальный объем данных для каждой отдельной задачи составляет 1 ГБ.,Таким образом, Tez объединит 1000 индивидуальных входных файлов в две индивидуальные задачи.,что приводит к замедлению времени выполнения.
  • • Еслиtez.grouping.max-size от 1 GB уменьшено до 100 МБ, то количество мапперов можно увеличить до 15 индивидуальный,оти улучшитьодновременнои улучшитьпроизводительность。

Выше приведен простой пример. Файлы формата ORC или Parquet часто используются в производственных средах. Окончательное количество картографов также будет определяться на основе типа хранилища, файла политики разделения и границы блока HDFS.

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

4 количество редукторов

Tez использует несколько механизмов для подтверждения количества редукторов:

1.Tez автоматически рассчитывает количество редукторов в зависимости от объема обрабатываемых данных;

2. Если hive.tez.auto.reducer.parallelism установлен на true,hive Он оценит размер данных и установит предполагаемый параллелизм. Tez оценит источник. Выходной размер вершины выбирается, и оценка корректируется во время выполнения по мере необходимости.

3. По умолчанию,максимумизreduceКоличество1009(hive.exec.reducers.max

4.Hive on Tez использует следующую формулу для оценки количества редукторов, а затем планирует Tez DAG:

Язык кода:javascript
копировать
Max(1, Min(hive.exec.reducers.max [1009], ReducerStage estimate/hive.exec.reducers.bytes.per.reducer))  x  hive.tez.max.partition.factor [2]

5. Вы можете настроить следующие три параметра, чтобы увеличить или уменьшить количество сокращений:

  • hive.exec.reducers.bytes.per.reducer:Каждыйиндивидуальныйreducerизsize,Сокращение может увеличить параллелизм,Увеличение может уменьшить параллелизм.,Значение по умолчанию — 256 МБ.,т. е. если размер ввода да1 ГБ,Будет использован 4индивидуальный редуктор.
  • tez.min.partition.factor,Значение по умолчанию — 0,25.
  • tez.max.partition.factor,Значение по умолчанию — 2,0.,Увеличение приведет к еще большему сокращению,уменьшить меньше уменьшить

6.Можно использоватьmapred.reduce.tasksРучная настройкаreducerизколичество,Но это не рекомендуется.

предположение:

  • • Избегайте настройки редукторов вручную.
  • • Добавление большего количества редукторов не гарантирует лучших результатов.
  • • Если вы хотите увеличить или уменьшить количество редукторов,Может быть основано на оценке этапа сокращения,Уменьшите или увеличьте значение hive.exec.reducers.bytes.per.reducerиз.

5 параллелизма

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

  • hive.server2.tez.default.queues:список значений, разделенных запятыми,Соответствует необходимости поддержания пула Тезсессия изYARNочередь;
  • hive.server2.tez.sessions.per.default.queue:Каждыйиндивидуальный YARN очередьсуществовать Обслуживание бассейнаиз Tez сессия (DAGAppMaster) количество.
  • hive.server2.tez.initialize.default.sessions:Если включено,HiveServer2 существовать При запускесуществоватьобозначениеиз default.queues Запустите все необходимое из Tez сессия для удовлетворения session.per.default.queue Требовать.

Если перечисленные выше свойства определены, HiveServer2 создаст Tez Application Master (AM) для каждой очереди по умолчанию, умноженный на количество сеансов при запуске службы HiveServer2, поэтому:

Язык кода:javascript
копировать
(Tez Sessions)total = HiveServer2instances x (default.queues) x (sessions.per.default.queue)

Пример:

  • • hive.server2.tez.default.queues=”queue1,queue2”
  • • hive.server2.tez.sessions.per.default.queue=2

Hiveserver2 создаст 4 Tez AM (2 для очереди 1 и 2 для очереди 2).

Примечание. Сеансы Tez в пуле будут выполняться всегда, даже в простаивающем кластере. Если использовался HiveServer2, эти Tez AM будут продолжать работать, но если HS2 простаивает, Tez AM будут прекращены по истечении времени ожидания, определенного tez.session.am.dag.submit.timeout.secs.

Случай 1: имя очереди не указано.

  • • Если имя не указано (tez.queue.name),Запрос будет использовать пул только до его инициализации.изTez AM, в данном случае HiveServer2 Подберу свободный из или доступный Тез AM, случайно выбранная очередь.
  • • Если имя не указано,Тогда запрос будетсуществовать HiveServer2 Оставаться в состоянии ожидания до тех пор, пока пул не будет инициализирован по умолчанию. Tez AM Можно обслужить запрос. JDBC/ODBC клиент или HiveServer2 В файле журнала не будет никаких сообщений, и поскольку во время ожидания запроса сообщения не генерируются, пользователь может подумать JDBC/ODBC подключиться или HiveServer2 Проблема есть, но на самом деле она существует и ждет Tez AM Выполните запрос.

Случай 2. Укажите имя очереди.

  • • Если указано имя очереди, независимо от того, сколько человек инициализируется из Tez AM HiveServer2 используется или простаивает. Для этого подключения будет создан новый индивидуальный новый из. Tez AM,и может выполнять запросы,Доступны необходимые даочередные ресурсы.

предположение:

  • • Если вы не хотите ограничивать запросы пользователей одним и тем же Tez AM бассейн,может бытьhive.server2.tez.initialize.default.sessions установлен на false, что может уменьшить конфликты на HiveServer2 и повысить производительность запросов.
  • • Включи этоhive.server2.tez.sessions.per.default.queueувеличитьsessionколичество.
  • • Если вам нужен отдельный или выделенный Tez для каждой группы пользователей AM Пул, вам нужен выделенный сервис HiveServer2, каждый индивидуальный сервис имеет свой собственный по умолчанию. queue имя и номер сеанса, и каждая группа пользователей должна использовать свой собственный HiveServer2.

6 Повторное использование контейнеров и контейнеры для предварительного нагрева

  • • Container reuse:может бытьtez.am.container.reuse.enabled установлен на true, чтобы решить проблему, связанную с тем, что контейнеру каждый раз требуется время для запуска, что экономит время на взаимодействие с YARN, поэтому контейнер всегда сохраняет строку существования и пропускает YARN. queue。
  • • Prewarm контейнеры: относится к каждому Tez Привязка AM изYARN выполняет контейнер с номером по умолчанию, даже если Tez AM В режиме ожидания (запрос не выполняется), каждый AM Столько же будет проведено и изконтейнеров. Поскольку здесь определяется изконтейнер, даже когда существование простаивает, оно будет Tez AM держать,Если слишком много контейнеров простаивают и не освобождаются,приведет к пустой трате ресурсов。Из следующих двухиндивидуальный Контроль недвижимости:
    • • hive.prewarm.enabled
    • • hive.prewarm.numcontainers

7 общих параметров настройки Tez

При работе с проблемами производительности запросов Hive on Tez вы можете сначала проверить следующие параметры:

1.hive.cbo.enable

установлен natrue обеспечивает оптимизацию на основе затрат (CBO),CBO да Hive Часть механической обработки запросов на базе Calcite Обеспечьте поддержку CBO. Создавайте эффективные планы запросов, проверяя указанные условия таблицы в запросе.,В конечном итоге сокращается время выполнения запросов и улучшается использование ресурсов.

2.hive.auto.convert.join

установлен на true позволять Hive Включить объединение на основе размера входного файла Преобразовать в mapjoin оптимизация.

3.hive.auto.convert.join.noconditionaltask.size

Хотите, чтобы существующий запрос выполнял как можно больше изmapjoin,Пользователь управляет размером таблицы, которую можно разместить в памяти, устанавливая этот размер.,этотиндивидуальный Таблица представления значений Преобразовать Общий размер hashmap, хранящийся в памяти, рекомендуется сохранить его установленным. на hive.tez.container.size большой или маленький ⅓。

4.tez.runtime.io.sort.mb

сортировать при сортировке вывода размер буфера, рекомендуется установить это значение на hive.tez.container.size из 40%, максимум 2 ГБ, как правило, не выше этого значения.

5.tez.runtime.unordered.output.buffer.size-mb

Когда вывод не требует сортировки по памяти,Если не записано непосредственно на диск,Он будет использовать размер буфера. Рекомендуется поставить его на hive.tez.container.size из 10%。

6.hive.exec.parallel

Это свойство поддерживает Hive query этаппараллельного исполнения,По умолчаниюfalse,установленный на true помогает на этапе параллельного независимого запроса,оти улучшитьобщийпроизводительность。

7.hive.vectorized.execution.enabled

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

8.hive.merge.tezfiles

По умолчанию false,установлен на true сольется Tez файл. Это свойство может увеличивать или уменьшать время выполнения запроса.,Это зависит от размера данных или количества файлов, которые вы хотите объединить.

9.hive.merge.size.per.task

Относится к общему размеру файла в конце задания.

10.hive.merge.smallfiles.avgsize

Если средний размер выходного файла задания меньше этого числа, Hive запускает дополнительные MapReduce Задание объединяет выходные файлы в файл большего размера, значение По умолчаниюдля16MB。

8 Резюме

Hive on Анализ производительности запросов Tez на первом этапе проверки Hive и Hive on Tez Служитьизкакой-то ключ Конфигурация,Затем для некоторых заданий SQL-запросов обычно необходимо установить некоторые параметры для конкретной настройки производительности.,Большинство параметров существования перечислены в этой статье.,Может использоваться как ссылка. Для некоторой сложной настройки SQL,Или эксплуатационные сбои часто требуют корректировки метода записи SQL.

Оригинальная ссылка:

Язык кода:javascript
копировать
https://blog.cloudera.com/optimizing-hive-on-tez-performance/
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose