Соображения
Эта тема описывает некоторые системные ограничения и конфигурации, которые необходимо учитывать перед выполнением загрузки данных.
Ограничения памяти
Selena предоставляет параметры для ограничения использования памяти для каждого задания загрузки, тем самым снижая потребление памяти, особенно в сценариях высокой конкурентности. Однако не указывайте чрезмерно низкий лимит использования памяти. Если лимит использования памяти слишком низкий, данные могут часто сбрасываться из памяти на диск, поскольку использование памяти для заданий загрузки достигает указанного лимита. Мы рекомендуем указывать подходящий лимит использования памяти на основе вашего бизнес-сценария.
Параметры, используемые для ограничения использования памяти, различаются для каждого метода загрузки. Для получения дополнительной информации см. Stream Load, Broker Load, Routine Load, Spark Load и INSERT. Обратите внимание, что задание загрузки обычно выполняется на нескольких BE или CN. Поэтому параметры ограничивают использование памяти каждого задания загрузки на каждом задействованном BE или CN, а не общее использование памяти задания загрузки на всех задействованных BE или CN.
Selena также предоставляет параметры для ограничения общего использования памяти всех заданий загрузки, выполняющихся на каждом отдельном BE или CN. Для получения дополнительной информации см. раздел "Системные конфигурации" ниже.
Системные конфигурации
Этот раздел описывает некоторые конфигурации параметров, которые применимы ко всем методам загрузки, предоставляемым Selena.
Конфигурации FE
Вы можете настроить следующие параметры в файле конфигурации fe.conf каждого FE:
-
max_load_timeout_secondиmin_load_timeout_secondЭти параметры указывают максимальный период тайм-аута и минимальный период тайм-аута каждого задания загрузки. Периоды тайм-аута измеряются в секундах. Максимальный период тайм-аута по умолчанию составляет 3 дня, а минимальный период тайм-аута по умолчанию составляет 1 секунду. Максимальный и минимальный периоды тайм-аута, к оторые вы указываете, должны находиться в диапазоне от 1 секунды до 3 дней. Эти параметры действительны как для синхронных, так и для асинхронных заданий загрузки.
-
desired_max_waiting_jobsЭтот параметр указывает максимальное количество заданий загрузки, которые могут находиться в очереди ожидания. Значение по умолчанию — 1024 (100 в v2.4 и более ранних версиях, и 1024 в v2.5 и более поздних). Когда количество заданий загрузки в состоянии PENDING на FE достигает максимального числа, которое вы указываете, FE отклоняет новые запросы загрузки. Этот параметр действителен только для асинхронных заданий загрузки.
-
max_running_txn_num_per_dbЭтот параметр указывает максимальное количество текущих транзакций загрузки, разрешенных в каждой базе данных вашего кластера Selena. Задание загрузки может содержать одну или несколько транзакций. Значение по умолчанию — 100. Когда количество транзакций загрузки, выполняющихся в базе данных, достигает максимального числа, которое вы указываете, последующие задания загрузки, которые вы отправляете, не планируются. В этой ситуации, если вы отп равляете синхронное задание загрузки, задание отклоняется. Если вы отправляете асинхронное задание загрузки, задание помещается в очередь ожидания.
примечаниеSelena подсчитывает все задания загрузки вместе и не различает синхронные и асинхронные задания загрузки.
-
label_keep_max_secondЭтот параметр указывает период хранения записей истории для заданий загрузки, которые завершились и находятся в состоянии FINISHED или CANCELLED. Период хранения по умолчанию составляет 3 дня. Этот параметр действителен как для синхронных, так и для асинхронных заданий загрузки.
Конфигурации BE/CN
Вы можете настроить следующие параметры в файле конфигурации be.conf каждого BE или файле конфигурации cn.conf каждого CN:
-
write_buffer_sizeЭтот параметр указывает максимальный размер блока памяти. Размер по умолчанию составляет 100 МБ. Загруженные данные сначала записываются в блок памяти на BE или CN. Когда объем загружаемых данных достигает максимального размера блока памяти, который вы указываете, данные сбрасываются на диск. Вы должны указать подходящий максимальный размер блока памяти на основе вашего бизнес-сценария.
- Если максимальный размер блока памяти чрезмерно мал, на BE или CN может быть создано большое количество небольших файлов. В этом случае производительность запросов снижается. Вы можете увеличить максимальный размер блока памяти, чтобы уменьшить количество создаваемых файлов.
- Если максимальный размер блока памяти чрезмерно велик, удаленные вызовы процедур (RPC) могут истекать по времени. В этом случае вы можете настроить значение этого параметра в соответствии с вашими бизнес-потребностями.
-
streaming_load_rpc_max_alive_time_secПериод тайм-аута ожидания для каждого процесса Writer. Значение по умолчанию — 1200 секунд. Во время процесса загрузки данных Selena запускает процесс Writer для получения данных и записи данных в каждый tablet. Если процесс Writer не получает никаких данных в течение указанного вами периода тайм-аута ожидания, Selena останавливает процесс Writer. Когда ваш кластер Selena обрабатывает данные с низкой скоростью, процесс Writer может не получать следующую партию данных в течение длительного периода времени и поэтому сообщает об ошибке "TabletWriter add batch with unknown id". В этом случае вы можете увеличить значение этого параметра.
-
load_process_max_memory_limit_bytesиload_process_max_memory_limit_percentЭти параметры указывают максимальное количество памяти, которое может быть потреблено для всех заданий загрузки на каждом отдельном BE или CN. Selena определяет меньшее потребление памяти среди значений двух параметров как окончательное потребление памяти, которое разрешено.
-
load_process_max_memory_limit_bytes: указывает максимальный размер памяти. Максимальный размер памяти по умолчанию составляет 100 ГБ. -
load_process_max_memory_limit_percent: указывает максимальное использование памяти. Значение по умолчанию — 30%. Этот параметр отличается от параметраmem_limit. Параметрmem_limitуказывает общее максимальное использование памяти вашего кластера Selena, и значение по умолчанию составляет 90% x 90%.Если емкость памяти машины, на которой находится BE или CN, равна M, максимальное количество памяти, которое может быть потреблено для заданий загрузки, рассчитывается следующим образом:
M x 90% x 90% x 30%.
-
Конфигурации системных переменных
Вы можете настроить следующую системную переменную:
-
query_timeoutПродолжительность тайм-аута запроса. Единица измерения: секунды. Диапазон значений: от
1до259200. Значение по умолчанию:300. Эта переменная будет действовать на все операторы запросов в текущем соединении, а также на операторы INSERT.