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
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.