наименование услуги | вспомогательная служба | 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 | размер стека |