Это 16-й день моего участия в Gengwen Challenge, пожалуйста, проверьте подробности мероприятия:Обновить вызов
Общая настройка производительности 1: оптимальная конфигурация ресурсов
-
Первым шагом в настройке производительности Spark является выделение большего количества ресурсов для задач.В пределах определенного диапазона увеличение выделения ресурсов пропорционально повышению производительности.После достижения оптимального распределения ресурсов рассмотрите возможность применения стратегий настройки производительности, обсуждаемых ниже.
-
Распределение ресурсов указывается при отправке задач Spark с помощью сценария.Стандартный сценарий отправки задач Spark выглядит следующим образом:
bin/spark-submit \
--class com.atguigu.spark.Analysis \
--master yarn
--deploy-mode cluster
--num-executors 80 \
--driver-memory 6g \
--executor-memory 6g \
--executor-cores 3 \
/usr/opt/modules/spark/jar/spark.jar \
Ресурсы, которые можно выделить, показаны в таблице:
название | инструкция |
---|---|
--num-executors | Настройте количество Исполнителей |
--driver-memory | Настроить память драйвера (небольшое влияние) |
--executor-memory | Настройте размер памяти каждого Исполнителя |
--executor-cores | Настройте количество ядер ЦП для каждого Исполнителя. |
Принцип настройки: постарайтесь настроить ресурсы, выделенные задачей, на максимальное количество ресурсов, которые можно использовать.
- Для выделения конкретных ресурсов мы обсудим два режима работы кластера Spark соответственно:
- Первый - это автономный режим Spark. Перед отправкой задачи вы должны узнать или получить ресурсы, которые вы можете использовать, в отделе эксплуатации и обслуживания. При написании сценария отправки ресурсы распределяются в соответствии с доступными ресурсами, такими как Say the cluster имеет 15 машин, каждая с 8 ГБ памяти и 2 ядрами ЦП, затем укажите 15 Исполнителей, каждому Исполнителю выделено 8 ГБ памяти и 2 ядра ЦП.
- Второй — режим Spark Yarn.Поскольку Yarn использует очереди ресурсов для распределения ресурсов и планирования, при написании скриптов отправки ресурсы распределяются в соответствии с очередями ресурсов, в которые отправляются задания Spark.Например, очереди ресурсов имеют 400 ГБ памяти.100 Ядра ЦП, затем укажите 50 Исполнителей, каждому Исполнителю выделяется 8 ГБ памяти и 2 ядра ЦП.
После настройки различных ресурсов полученное улучшение производительности будет следующим:
название | Разобрать |
---|---|
Увеличить количество Исполнителей | Когда позволяют ресурсы, увеличение числа исполнителей может улучшить параллелизм выполнения задач. Например, если Исполнителей 4 и у каждого Исполнителя по 2 процессорных ядра, то параллельно может выполняться 8 задач, а если увеличить количество Исполнителей до 8 (если позволяют ресурсы), то можно параллельно выполнять 16 задач. удваивается. |
Увеличьте количество ядер процессора на Executor | Когда позволяют ресурсы, увеличение количества ядер ЦП каждого Исполнителя может улучшить параллелизм выполнения задач. Например, если Исполнителей 4 и у каждого Исполнителя по 2 процессорных ядра, то параллельно может выполняться 8 задач, а если количество ядер ЦП каждого Исполнителя увеличить до 4 (если позволяют ресурсы), то можно выполнить 16 задач. в параллельной задаче, параллельная мощность в это время удваивается. |
Увеличить объем памяти на Executor | Когда позволяют ресурсы, после увеличения объёма памяти каждого Исполнителя есть три точки повышения производительности: 1. Можно кэшировать больше данных (то есть кэшируется RDD), соответственно уменьшается количество данных, записываемых на диск, или вообще не записываемых на диск, что снижает возможный дисковый ввод-вывод; 2. Он может предоставить больше памяти для операции тасования, то есть больше места для хранения данных, извлеченных стороной уменьшения, и данные, записываемые на диск, соответственно уменьшаются или даже не записываются на диск, уменьшая возможен дисковый ввод-вывод; 3. Это может предоставить больше памяти для выполнения задачи.Во время выполнения задачи может быть создано много объектов.Когда памяти мало, будет запускаться частый GC.После увеличения памяти можно избежать частого GC и общая производительность может быть улучшена. |
Дополнение: конфигурация сценария отправки Spark для производственной среды
bin/spark-submit \
--class com.atguigu.spark.WordCount \
--master yarn\
--deploy-mode cluster\
--num-executors 80 \
--driver-memory 6g \
--executor-memory 6g \
--executor-cores 3 \
--queue root.default \
--conf spark.yarn.executor.memoryOverhead=2048 \
--conf spark.core.connection.ack.wait.timeout=300 \
/usr/local/spark/spark.jar
Эталонное значение конфигурации параметра:
--num-executors:50~100
--driver-memory:1G~5G
--executor-memory:6G~10G
--executor-cores:3
--master:实际生产环境一定使用yarn