Среда: онлайн-настройка CDH

Hadoop
наименование услуги вспомогательная служба CM-64G ЗК-Кафка (3 шт.)-12Г DataNode (3 шт.)-64G NameNode1-64G NameNode2-64G Resourcemanager1-32G Resourcemanager2-32G hive-hbase-16G hive-hbase-16G
MySQL MySQL
CM Activity Monitor Alert Publisher Event Server Host Monitor Service Monitor √ √ √ √ √
HDFS NameNode DataNode Failover Controller JournalNode Икс √ Икс Икс √ Икс √ √ √ Икс √ √ Икс Икс Икс √
Yarn NodeManager Resourcemanager JobHisoryServer √ Икс Икс Икс √ √ Икс √ √
Zookeeper Zookeeper Server
Kafka Kafka Broker
Hive Сервер хранилища метаданных Hive HiveServer2 Шлюз (установите соответствующий сервер приложений) Икс √ √ √ Икс √ √ Икс √
Hbase HMaster HRegionServer Thrift Server Икс √ √ √ Икс √ Икс
Oozie Oozie Server
Hue Hue Server Load Balancer Икс √ √ Икс
Spark Сервер истории Шлюз (установите соответствующий сервер приложений) √ Икс
Flume Агент Flume (установите соответствующий сервер приложений)
Sqoop Sqoop (установить соответствующий сервер приложений)

1 Оптимизация: управление Cloudera

1.1 Cloudera Management Service

Эти сервисы в основном обеспечивают функции мониторинга, а текущая настройка в основном сохраняется во внутреннем хранилище, чтобы было достаточно ресурсов для полного управления кластером.

Служить опции значение конфигурации
Activity Monitor Java Heap Size 2G
Alert Publisher Java Heap Size 2G
Event Server Java Heap Size 2G
Host Monitor Java Heap Size 4G
Service Monitor Java Heap Size 4G
Reports Manager Java Heap Size 2G
Navigator Metadata Server Java Heap Size 8G

2 Оптимизация: зоопарк

Служить опции значение конфигурации
Zookeeper Размер кучи Java 4G
Zookeeper maxClientCnxns (максимальное количество клиентских подключений) 1024
Zookeeper dataDir (каталог файла данных + путь сохранения данных) /hadoop/zookeeper (рекомендуется отдельный каталог)
Zookeeper dataLogDir (каталог журнала транзакций) /hadoop/zookeeper_log (рекомендуется отдельный каталог)

3 Оптимизация: HDFS

3.1 Тест диска

3.1.1 Проверка чтения

hdparmОн используется для просмотра соответствующей информации о жестком диске или для измерения скорости жесткого диска, ее оптимизации и изменения соответствующих настроек параметров жесткого диска.

#安装hdparm
yum install hdparm
#获取硬盘符
fdisk -l
#读测试(读取上一步获取硬盘符)
hdparm -t /dev/vda

Три результата теста:

Timing buffered disk reads: 500 MB in 0.84 seconds = 593.64 MB/sec

Timing buffered disk reads: 500 MB in 0.93 seconds = 538.80 MB/sec

Timing buffered disk reads: 500 MB in 0.74 seconds = 672.95 MB/sec

Описание: почти 1 с чтение диска 500 МБ, скорость чтения составляет около 500 МБ/сек.

3.1.2 Написание тестов

ddЗдесь мы используем время + дд, чтобы просто проверить скорость записи, не очень точно

查看内存缓存情况
free -m

清除缓存
sync; echo 3 > /proc/sys/vm/drop_caches

查block size
blockdev --getbsz /dev/vda

写测试
echo 3 > /proc/sys/vm/drop_caches; time dd if=/dev/zero of=/testdd bs=4k count=100000

Три результата теста:

Записано 100000+0 чтений
Записано 100000+0 записывает

Скопировано 409600000 байт (410 МБ), 0,574066 с, 714 МБ/с -- скопировано 410 МБ, заняло 0,57 секунды, вычислено 714 МБ/с

Скопировано 409600000 байт (410 МБ), 1,84421 с, 222 МБ/с -- скопировано 410 МБ, заняло 1,84 секунды, оценка 222 МБ/с

Скопировано 409600000 байт (410 МБ), 1,06969 с, 383 МБ/с -- скопировано 410 МБ, заняло 1,06 секунды, оценка 383 МБ/с

3.1.3 Пропускная способность сети

iperf3 измеряет максимальную пропускную способность сети

#安装iperf3
yum -y install iperf3

#服务端
iperf3 -s

#客户端
iperf3 -c 上调命令执行的服务机器IP

Результаты теста:

[ID] --> Идентификатор темы Интерва-->Время передачи Передача --> Получение размера данных Пропускная способность --> Пропускная способность в секунду Retr Роль
[ 4] 0.00-10.00 sec 17.0 GBytes 14.6 Gbits/sec 0 отправитель--> отправить
[ 4] 0.00-10.00 sec 17.0 GBytes 14.6 Gbits/sec приемник --> получить

3.2 Официальный стресс-тест

3.2.1 Подготовка пользователя

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

usermod -s /bin/bash  hive
su hive

3.2.2 Тест производительности записи HDFS

  • Тестовое содержимое: кластер HDFS записывает 10 файлов размером 128 М (-D указывает каталог для хранения файлов)

    hadoop jar /opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/jars/hadoop-mapreduce-client-jobclient-3.0.0-cdh6.2.0-tests.jar TestDFSIO -D test.build.data=/test/benchmark -write -nrFiles 10 -fileSize 128

INFO fs.TestDFSIO: ----- TestDFSIO ----- : write
INFO fs.TestDFSIO: Date & time: Thu Jun 11 10:30:36 CST 2020
ИНФОРМАЦИЯ fs.TestDFSIO: количество файлов: 10 -- десять файлов
ИНФОРМАЦИЯ fs.TestDFSIO: Всего обработано МБ: 1280 --общий размер 1280M
ИНФОРМАЦИЯ fs.TestDFSIO: пропускная способность, Мб/сек: 16,96 --пропускная способность 16,96 Мб/сек.
ИНФОРМАЦИЯ fs.TestDFSIO: Средняя скорость ввода-вывода МБ/с: 17,89 -- Средняя ситуация ввода-вывода 17,89M
ИНФОРМАЦИЯ fs.TestDFSIO: стандартное отклонение скорости ввода-вывода: 4,74 -- стандартное отклонение скорости ввода-вывода
ИНФОРМАЦИЯ fs.TestDFSIO: время выполнения теста, сек: 46,33 -- общее время выполнения

3.2.3 Тест производительности чтения HDFS

  • Тестовое содержимое: кластер HDFS считывает 10 файлов размером 128 МБ.

    hadoop jar /opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/jars/hadoop-mapreduce-client-jobclient-3.0.0-cdh6.2.0-tests.jar TestDFSIO -D test.build.data=/test/benchmark -read -nrFiles 10 -fileSize 128

INFO fs.TestDFSIO: ----- TestDFSIO ----- : read
INFO fs.TestDFSIO: Date & time: Thu Jun 11 10:41:19 CST 2020
ИНФОРМАЦИЯ fs.TestDFSIO: количество файлов: 10 -- количество файлов
ИНФОРМАЦИЯ fs.TestDFSIO: Всего обработано МБ: 1280 --Общий размер
ИНФОРМАЦИЯ fs.TestDFSIO: пропускная способность, Мб/сек: 321,53 --пропускная способность 321,53 Мб/сек.
ИНФОРМАЦИЯ fs.TestDFSIO: Средняя скорость ввода-вывода МБ/с: 385,43 -- Средняя ситуация ввода-вывода 385,43 МБ
ИНФОРМАЦИЯ fs.TestDFSIO: стандартное отклонение скорости ввода-вывода: 107,67 -- стандартное отклонение скорости ввода-вывода
ИНФОРМАЦИЯ fs.TestDFSIO: время выполнения теста, сек: 20,81 -- общее время выполнения

3.2.4 Удаление тестовых данных

hadoop jar /opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/jars/hadoop-mapreduce-client-jobclient-3.0.0-cdh6.2.0-tests.jar TestDFSIO  -D test.build.data=/test/benchmark -clean

3.3 Настройка параметров

Служить опции значение конфигурации
NameNode Размер кучи Java 56G
NameNode dfs.namenode.handler.count (подробности см. в 3.3.2) 80
NameNode dfs.namenode.service.handler.count (подробности см. в 3.3.2) 80
NameNode fs.permissions.umask-mode (используйте по умолчанию 022) 027 (используйте значение по умолчанию 022)
DataNode Размер кучи Java 8G
DataNode dfs.datanode.failed.volumes.tolerated (подробности см. в 3.3.3) 1
DataNode dfs.datanode.balance.bandwidthPerSec (пропускная способность баланса DataNode) 100M
DataNode dfs.datanode.handler.count (количество потоков сервера) 64
DataNode dfs.datanode.max.transfer.threads (максимальное количество потоков передачи) 20480
JournalNode Размер кучи Java 1G

3.3.1 Оптимизация блока данных

dfs.blocksize = 128M

  • Файл делится и хранится в блоках, размер блока обычно устанавливается относительно большой (минимум 6M, по умолчанию 128M), а оптимальное значение рассчитывается в зависимости от пропускной способности сети.
  • Чем больше блок, тем быстрее адресация и выше эффективность чтения.Однако, поскольку задачи MapReduce также обрабатываются в наименьшей единице блока, слишком большой блок не способствует параллельной обработке данных.
  • Файл занимает как минимум один блок (если файл размером 1 КБ занимает блок, но пространство все еще составляет 1 КБ)
  • Когда мы читаем файл на HDFS, NameNode будет искать адрес блока, когда время адресации составляет 1% от времени передачи, это лучшее состояние.
    • В настоящее время скорость передачи данных на диск обычно составляет 100 МБ/с.
    • Если время адресации составляет около 10 мс, то время передачи = 10 мс/0,01 = 1000 мс = 1 с.
    • Если время передачи составляет 1 с, а скорость передачи — 100 МБ/с, то мы можем передавать файлы размером 100 МБ в HDFS за одну секунду, и более целесообразно установить размер блока 128 МБ.
    • Если пропускная способность составляет 200 МБ/с, целесообразнее установить размер блока 256 МБ.

3.3.2 Количество потоков сервера для NameNode

  • dfs.namenode.handler.count=20*log2(Размер кластера), например, размер кластера равен 16, а логарифм 8 по основанию 2 равен 4, поэтому для параметра установлено значение 80.
  • dfs.namenode.service.handler.count=20*log2(Размер кластера), например, размер кластера равен 16, а логарифм 8 по основанию 2 равен 4, поэтому для параметра установлено значение 80.

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

3.3.3 Количество томов, которые могут выйти из строя, прежде чем DataNode прекратит обслуживание

Количество DN-дисков будет повреждено, и служба будет остановлена.Значение по умолчанию равно 0, то есть DN будет отключено при выходе из строя любого диска. Для кластера с большим количеством дисков (например, DN имеют более 2 дисков) сбой диска является нормальным явлением.Обычно вы можете установить это значение равным 1 или 2, чтобы избежать частых отключений DN.

4 Оптимизация: YARN + MapReduce

Служить опции значение конфигурации Параметр Описание
ResourceManager Размер кучи Java 4G
ResourceManager yarn.scheduler.minimum-allocation-mb (минимальный объем памяти контейнера) 2G Минимальная память, выделенная для контейнера приложения
ResourceManager yarn.scheduler.increment-allocation-mb (приращение памяти контейнера) 512M При использовании Fair Scheduler разрешено увеличивать память контейнера.
ResourceManager yarn.scheduler.maximum-allocation-mb (максимальный объем памяти контейнера) 32G Максимальный объем памяти, выделенный контейнеру приложения
ResourceManager yarn.scheduler.minimum-allocation-vcores (минимальное количество ядер виртуального ЦП контейнера) 1 Минимальное количество ядер ЦП, запрашиваемое каждым Контейнером
ResourceManager yarn.scheduler.increment-allocation-vcores (приращение ядра виртуального ЦП контейнера) 1 Если используется Fair Scheduler, виртуальные ядра ЦП позволяют
ResourceManager yarn.scheduler.maximum-allocation-vcores (максимальное количество ядер виртуального ЦП контейнера) 16 Максимальное количество ядер ЦП, запрашиваемых каждым Контейнером
ResourceManager yarn.resourcemanager.recovery.enabled true Если эта функция включена, любые приложения, работающие в кластере при выходе из строя ResourceManager, возобновятся при следующем запуске ResourceManager. **ПРИМЕЧАНИЕ.** Эта конфигурация всегда включена, если включен RM-HA.
NodeManager Размер кучи Java 4G
NodeManager yarn.nodemanager.resource.memory-mb 40G Объем физической памяти, который может быть выделен контейнеру, относится примерно к 90% памяти пула ресурсов.
NodeManager yarn.nodemanager.resource.cpu-vcores 32 Количество виртуальных ядер ЦП, которое может быть выделено для контейнера, относится примерно к 90% памяти пула ресурсов.
ApplicationMaster yarn.app.mapreduce.am.command-opts правый красный Аргументы командной строки Java, переданные в MapReduce ApplicationMaster"
-Djava.net.preferIPv4Stack=true

"

ApplicationMaster yarn.app.mapreduce.am.resource.mb (память ApplicationMaster) 4G
JobHistory Размер кучи Java 2G
MapReduce mapreduce.map.memory.mb (карта памяти задачи) 4G Верхний предел ресурсов, которые может использовать MapTask. Если количество ресурсов, фактически используемых MapTask, превышает это значение, оно будет принудительно уничтожено.
MapReduce mapreduce.reduce.memory.mb (уменьшить память задачи) 8G Верхний предел ресурсов, которые может использовать ReduceTask. Если фактическое количество ресурсов, используемых ReduceTask, превышает это значение, оно будет принудительно уничтожено.
MapReduce mapreduce.map.cpu.vcores 2 Максимальное количество процессорных ядер, которое может использовать каждая MapTask.
MapReduce mapreduce.reduce.cpu.vcores 4 Максимальное количество ядер процессора, которое может использовать каждый ReduceTask.
MapReduce mapreduce.reduce.shuffle.parallelcopies 20 Количество параллелей для каждого сокращения для извлечения данных из карты.
MapReduce mapreduce.task.io.sort.mb (размер кольцевого буфера для Shuffle) 512M Общий объем буфера памяти для использования при сортировке файлов. Примечание. Эта память создается размером стека JVM (то есть: общий стек JVM пользователя - эта память = общее доступное пользователю пространство стека)
MapReduce mapreduce.map.sort.spill.percent 80% Порог переполнения кольцевого буфера
MapReduce mapreduce.task.timeout 10 минут Время ожидания задачи — это параметр, который часто необходимо устанавливать.Смысл этого параметра следующий: если задача не имеет записи в течение определенного периода времени, то есть она не будет считывать новые данные или выводить данные, она считается, что Задача находится в состоянии Блок. , она может зависнуть, а может и зависнуть навсегда. Чтобы пользовательская программа не была заблокирована навсегда и не завершилась, принудительно устанавливается период тайм-аута. Если вашей программе требуется слишком много времени для обработки каждых входных данных (например, она будет обращаться к базе данных, вытягивать данные по сети и т. д.), рекомендуется увеличить этот параметр.Если параметр слишком мал, появится сообщение об ошибке, что часто встречается: AttemptID:attempt_12267239451721_123456_m_00 0335_0 Время ожидания истекло через 600 секунд. Контейнер уничтожен ApplicationMaster.

5 Оптимизация: Импала

Служить опции значение конфигурации Параметр Описание
Impala Daemon mem_limit (лимит памяти) 50G Ограничение памяти Impala Daemon, установленное самим демоном. Запросы, запущенные на Impalad Daemon, могут быть остановлены, если достигнуто это ограничение.
Impala Daemon Impala Daemon JVM Heap 512M Размер стека демона
Impala Daemon scratch_dirs Несколько независимых дисков (каталогов) на узле Каталог, в который демон Impala записывает данные, такие как информация о сбросе, на диск для освобождения памяти. Это может быть много данных
Impala Catalog Server Java Heap Size 8G Размер стека

6 Оптимизация: Кафка

6.1 Официальный стресс-тест

6.1.1 Стресс-тест производителя Kafka

  • размер записи — это размер фрагмента информации в байтах.

  • num-records — общее количество отправленных сообщений.

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

    bash /opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/lib/kafka//bin/kafka-producer-perf-test.sh --topic test --record-size 100 --num-records 100000 --throughput -1 --producer-props bootstrap.servers=cdh01.cm:9092,cdh02.cm:9092,cdh03.cm:9092

100000 records sent, 225733.634312 records/sec (21.53 MB/sec),

8.20 ms avg latency, 66.00 ms max latency,

3 ms 50th, 28 ms 95th, 30 ms 99th, 30 ms 99.9th.

Анализ параметров: Всего записывается 10w сообщений, а пропускная способность21.53 MB/sec, средняя задержка на запись

составляет 8,20 миллисекунды, а максимальная задержка составляет 66,00 миллисекунд.

6.1.2 Стресс-тест потребителей Kafka

  • zookeeper указывает информацию о ссылке на zookeeper

  • тема указывает название темы

  • fetch-size указывает размер данных для каждой выборки

  • messages Общее количество сообщений для потребления

    bash /opt/cloudera/parcels/CDH-6.2.0-1.cdh6.2.0.p0.967373/lib/kafka//bin/kafka-consumer-perf-test.sh --broker-list cdh01.cm:9092,cdh02.cm:9092,cdh03.cm:9092 --topic test --fetch-size 10000 --messages 10000000 --threads 1

start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec

2020-06-11 17:53:48:179, 2020-06-11 17:54:04:525, 57.2205, 3.5006, 600000, 36706.2278, 3051, 13295, 4.3039, 45129.7480

start.time: 2020-06-11 17:53:48:179 время начала

end.time: 2020-06-11 17:54:04:525 время окончания (16 секунд)

data.consumed.in.MB: 57.2205 потребляет 57M данных

МБ.сек: 3,5006 3,5 млн/с

data.consumed.in.nMsg: 600000 потребляет 600000 сообщений

nMsg.sec: 36706,2278 36706 сообщений/с

rebalance.time.ms: 3051 время баланса 3S

fetch.time.ms: 13295 время выборки 13S

fetch.MB.sec: 4.3039 выборок 4.3M в секунду

fetch.nMsg.sec: 45129.7480 извлекает 45129 сообщений в секунду

Время начала теста, данные окончания теста, данные об общем потреблении57.2205MB, пропускная способность3.5M/S, общее потребление600000бар, средний расход в секунду36706.2278полоска.

6.1.3 Расчет количества машин Kafka

Количество машин Kafka (эмпирическая формула) = 2 X (пиковая скорость производства X количество реплик / 100) + 1

Сначала получите пиковую производственную скорость, а потом по заданному количеству реплик можно будет оценить количество Kafka, которое необходимо развернуть.

Например, наша пиковая производственная скорость составляет 50 м/с. Количество экземпляров 2.

Количество машин Кафки = 2 х (50 х 2/100) + 1 = 3

6.2 Настройка параметров

Служить опции значение конфигурации Параметр Описание
Kafka Broker Java Heap Size of Broker 2G Размер стека брокера
Kafka Broker Data Directories Несколько независимых дисков
Кафка сервис Maximum Message Size 10M Максимальный размер сообщения, которое может получить сервер. Это свойство должно быть синхронизировано с максимальным размером выборки, используемым потребителем. В противном случае неуправляемые производители могут публиковать сообщения, которые слишком велики для восприятия.
Кафка сервис Replica Maximum Fetch Size 20M Максимальное количество байтов, которое должно быть извлечено для каждой секции в запросах на выборку, отправляемых репликами лидеру. Это значение должно быть больше, чем message.max.bytes.
Кафка сервис Number of Replica Fetchers 6 Количество потоков, используемых для репликации сообщений от лидера. Увеличение этого значения повысит степень параллелизма ввода-вывода в агенте-последователе.

7 Оптимизация: HBase

Служить опции значение конфигурации Параметр Описание
HBase Java Heap Size 18G Размер клиентской Java-кучи (байты) в основном используется для кэширования табличных данных, но при сбросе будет использоваться GC, поэтому он не должен быть слишком большим.По ресурсам кластера обычно выделяется 70% всей памяти кластера Hbase, 16- >48G достаточно
HBase hbase.client.write.buffer 512M Размер буфера записи. Увеличение этого значения может уменьшить количество вызовов RPC. Однократный вызов будет потреблять больше памяти. Большие буферы требуют больше памяти на клиенте и сервере, поскольку сервер будет создавать экземпляр переданного буфера записи. Зона и процесс, что уменьшает количество удаленных вызовов процедур (RPC).
HBase Master Java Heap Size 8G Размер стека Java для HBase Master
HBase Master hbase.master.handler.count 300 Количество экземпляров сервера RPC, запущенных в мастере HBase.
HBase RegionServer Java Heap Size 31G Размер стека Java для HBase RegionServer
HBase RegionServer hbase.regionserver.handler.count 100 Количество экземпляров RPC-серверов, запущенных в RegionServer.В зависимости от ситуации в кластере это значение может быть соответственно увеличено.Основное решение — количество клиентских запросов.
HBase RegionServer hbase.regionserver.metahandler.count 60 Количество обработчиков, используемых для обработки приоритетных запросов в RegionServer.
HBase RegionServer zookeeper.session.timeout 180000ms Задержка сеанса ZooKeeper в миллисекундах. HBase передает это кворуму ZooKeeper как рекомендуемое максимальное время сеанса.
HBase RegionServer hbase.hregion.memstore.flush.size 1G Если размер хранилища памяти превышает это значение, хранилище памяти будет сброшено на диск. Проверьте это значение, запустив потоки с частотой, указанной в hbase.server.thread.wakefrequency.
HBase RegionServer hbase.hregion.majorcompaction 0 Цикл слияния, под квалифицированными узлами, все HFiles в регионе будут объединены, что очень сильно потребляет ресурсы и запускается вручную при простое.
HBase RegionServer hbase.hregion.majorcompaction.jitter 0 Коэффициент джиттера, согласно приведенному выше циклу слияния, есть коэффициент джиттера, который не является надежным, лучше сделать это вручную
HBase RegionServer hbase.hstore.compactionThreshold 6 Если в каком-либо одном HStore больше указанного количества HStoreFiles, будет запущено уплотнение, чтобы перезаписать все HStoreFiles как один HStoreFile. (один HStoreFile записывается на каждый сброс хранилища памяти) Вы можете продлить сжатие, указав большее количество, но сжатие будет выполняться дольше. Во время сжатия обновления не могут быть сброшены на диск. Длительное сжатие требует достаточного объема памяти для регистрации всех обновлений в течение всего времени сжатия. Если он слишком велик, время ожидания клиента во время сжатия истекает.
HBase RegionServer hbase.client.scanner.caching 1000 Количество строк для выборки при следующем вызове сканера, если в памяти нет доступных данных. Более высокие значения кеша позволяют быстрее работать сканерам, но для этого требуется больше памяти, а некоторые следующие вызовы занимают больше времени, когда кеш пуст.
HBase RegionServer hbase.hregion.max.filesize 50G Максимальный размер HStoreFile. Если какой-либо из HStoreFile ранга превышает это значение, управляемый HR-регион будет разделен на два.
HBase Master hbase.master.logcleaner.plugins плагин очистки журнала org.apache.hadoop.hbase.master.cleaner.TimeToLiveLogCleaner
HBase hbase.replication false Отключить репликацию
HBase hbase.master.logcleaner.ttl 10min Максимальное время хранения HLogs плюс два вышеупомянутых для решения проблемы роста старых WAL.

8 Оптимизация: Улей

Служить опции значение конфигурации Параметр Описание
HiveServer2 Java Heap Size 4G
Hive MetaStore Java Heap Size 8G
Hive Gateway Java Heap Size 2G
Hive hive.execution.engine Spark Выполнить переключение двигателя
Hive hive.fetch.task.conversion more Выборка изменена на больше, что может сделать глобальный поиск, поиск по полю, поиск по ограничению и т. Д. Не обращаться к механизму вычислений, а напрямую читать файлы в каталоге хранилища, соответствующем таблице, что значительно повышает скорость обычного запроса.
Hive hive.exec.mode.local.auto (расширенная конфигурация службы hive-site.xml, расширенная конфигурация клиента) true Включите локальный режим и обрабатывайте все задачи на одной машине.Для небольших наборов данных время выполнения можно значительно сократить
Hive hive.exec.mode.local.auto.inputbytes.max (расширенная конфигурация службы hive-site.xml, расширенная конфигурация клиента) 50000000 Файл не превышает 50M
Hive hive.exec.mode.local.auto.input.files.max (расширенная конфигурация службы hive-site.xml, расширенная конфигурация клиента) 10 Не более 10
Hive hive.auto.convert.join включи В проблеме соединения поместите маленькую таблицу слева и перейдите к левому соединению (левое соединение) с большой таблицей, что может эффективно снизить вероятность ошибок переполнения памяти.
Hive hive.mapjoin.smalltable.filesize (расширенная конфигурация службы hive-site.xml, расширенная конфигурация клиента) 50000000 Менее 50 м считаются маленькими часами.
Hive hive.map.aggr включи По умолчанию один и тот же ключ отправляется на уменьшение на этапе сопоставления, а перекос данных возникает, когда данные ключа слишком велики.
Hive hive.groupby.mapaggr.checkinterval (расширенная конфигурация службы hive-site.xml, расширенная конфигурация клиента) 200000 Количество записей для операций агрегации на стороне карты
Hive hive.groupby.skewindata (расширенная конфигурация службы hive-site.xml, расширенная конфигурация клиента) true При наличии перекоса данных выполняется балансировка нагрузки.Сгенерированный план запроса будет иметь два задания MR.Первое задание MR будет равномерно распределять ключ и случайное число в Reduce и выполнять некоторые операции агрегирования (предварительная обработка).Второе задание MR Job восстанавливает исходный ключ в соответствии с результатом предварительной обработки, распределяет его в Reduce в соответствии с Group By Key для операции агрегации и завершает окончательную операцию.
Hive hive.exec.parallel (расширенная конфигурация службы hive-site.xml, расширенная конфигурация клиента) true Включить параллельные вычисления
Hive hive.exec.parallel.thread.number (расширенная конфигурация службы hive-site.xml, расширенная конфигурация клиента) 16G Максимальный параллелизм, разрешенный одним и тем же SQL, соответствующим образом увеличен для ресурсов кластера.

9 Оптимизация: Oozie, Hue

Служить опции значение конфигурации Параметр Описание
Oozie Java Heap Size 1G размер стека
Hue Java Heap Size 4G размер стека