Главная страница
Навигация по странице:

  • Согласование настроек размеров сообщений

  • Apache Kafka. Потоковая обработка и анализ данных. Apache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly


    Скачать 7.59 Mb.
    НазваниеApache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
    Дата21.06.2022
    Размер7.59 Mb.
    Формат файлаpdf
    Имя файлаApache Kafka. Потоковая обработка и анализ данных.pdf
    ТипДокументы
    #609074
    страница7 из 39
    1   2   3   4   5   6   7   8   9   10   ...   39
    Извлечение смещений по метке даты/времени
    Размер сегмента журнала влияет на извлечение смещений по метке даты/време- ни. При запросе смещений для раздела с конкретной меткой даты/времени Kafka ищет файл сегмента журнала, который был записан в этот момент. Для этого используется время создания и последнего изменения файла: выполняется поиск файла, который был бы создан до указанной метки даты/времени и последний раз менялся после нее. В ответе возвращается смещение начала этого сегмента журнала, являющееся также именем файла.
    log.segment.ms
    Другой.способ.управления.закрытием.сегментов.журнала.—.с.помощью.параме- тра.
    log.segment.ms
    ,.задающего.отрезок.времени,.по.истечении.которого.сегмент.
    журнала.закрывается..Как.и.параметры.
    log.retention.bytes
    .и.
    log.retention.ms
    ,.
    параметры.
    log.segment.bytes
    .и.
    log.segment.ms
    .не.являются.взаимоисключа- ющими..Kafka.закрывает.сегмент.журнала,.когда.или.истекает.промежуток.
    времени,.или.достигается.заданное.ограничение.по.размеру,.в.зависимости.от.
    того,.какое.из.этих.событий.произойдет.первым..По.умолчанию.значение.пара- метра.
    log.segment.ms
    .не.задано,.в.результате.чего.закрытие.сегментов.журналов.
    обуслов.ливается.их.размером.

    Выбор аппаратного обеспечения 53
    Эффективность ввода/вывода на диск при использовании
    ограничений по времени на сегменты
    Задавая ограничения по времени на сегменты журналов, важно учитывать, что произойдет с производительностью операций с жестким диском при одновремен- ном закрытии нескольких сегментов. Это может произойти при наличии большого числа разделов, которые никогда не достигают пределов размера для сегментов журнала, поскольку отсчет времени начинается при запуске брокера и время для этих разделов истечет тоже одновременно.
    message.max.bytes
    Брокер.Kafka.позволяет.с.помощью.параметра.
    message.max.bytes
    .ограничивать.
    максимальный.размер.генерируемых.сообщений..Значение.этого.параметра.по.
    умолчанию.равно.1.000.000.(1.Мбайт)..Производитель,.который.попытается.от- править.сообщение.большего.размера,.получит.от.брокера.извещение.об.ошибке,.
    а.сообщение.принято.не.будет..Как.и.в.случае.всех.остальных.размеров.в.байтах,.
    указываемых.в.настройках.брокера,.речь.идет.о.размере.сжатого.сообщения,.так.
    что.производители.могут.отправлять.сообщения,.размер.которых.в.несжатом.виде.
    гораздо.больше,.если.их.можно.сжать.до.задаваемых.параметром.
    message.max.bytes пределов.
    Увеличение.допустимого.размера.сообщения.серьезно.влияет.на.производитель- ность..Больший.размер.сообщений.означает,.что.потоки.брокера,.обрабатывающие.
    сетевые.соединения.и.запросы,.будут.заниматься.каждым.запросом.дольше..Также.
    бо'льшие.сообщения.увеличивают.объем.записываемых.на.диск.данных,.что.влияет.
    на.пропускную.способность.ввода/вывода.
    Согласование настроек размеров сообщений
    Размер сообщения, задаваемый на брокере Kafka, должен быть согласован с на- стройкой fetch.message.max.bytes на клиентах потребителей. Если это значение меньше, чем message.max.bytes, то потребители не смогут извлекать превыша- ющие данный размер сообщения, вследствие чего потребитель может зависнуть и прекратить дальнейшую обработку. То же самое относится к параметру replica.
    fetch.max.bytes на брокерах при конфигурации кластера.
    Выбор аппаратного обеспечения
    Выбор.подходящего.аппаратного.обеспечения.для.брокера.Kafka.—.скорее.искус- ство,.чем.наука..У.самой.платформы.Kafka.нет.каких-либо.строгих.требований.
    к.аппаратному.обеспечению,.она.будет.работать.без.проблем.на.любой.системе..
    Но.если.говорить.о.производительности,.то.на.нее.влияют.несколько.факторов:.
    емкость.и.пропускная.способность.дисков,.оперативная.память,.сеть.и.CPU..

    54 Глава 2 • Установка Kafka
    Сначала.нужно.определиться.с.тем,.какие.типы.производительности.важнее.всего.
    для.вашей.системы,.после.чего.можно.будет.выбрать.оптимальную.конфигурацию.
    аппаратного.обеспечения,.вписывающуюся.в.бюджет.
    Пропускная способность дисков
    Пропускная.способность.дисков.брокера,.которые.используются.для.хранения.
    сегментов.журналов,.самым.непосредственным.образом.влияет.на.производитель- ность.клиентов-производителей..Сообщения.Kafka.должны.фиксироваться.в.ло- кальном.хранилище,.которое.бы.подтверждало.их.запись..Лишь.после.этого.можно.
    считать.операцию.отправки.успешной..Это.значит,.что.чем.быстрее.выполняются.
    операции.записи.на.диск,.тем.меньше.будет.задержка.генерации.сообщений.
    Очевидное.действие.при.возникновении.проблем.с.пропускной.способностью.
    дисков.—.использовать.жесткие.диски.с.раскручивающимися.пластинами.(HDD).
    или.твердотельные.накопители.(SSD)..У.SSD.на.порядки.ниже.время.поиска/до- ступа.и.выше.производительность..HDD.же.более.экономичны.и.обладают.более.
    высокой.относительной.емкостью..Производительность.HDD.можно.улучшить.
    за.счет.большего.их.числа.в.брокере,.или.используя.несколько.каталогов.данных,.
    или.устанавливая.диски.в.массив.независимых.дисков.с.избыточностью.(redundant.
    array.of.independent.disks,.RAID)..На.пропускную.способность.влияют.и.другие.
    факторы,.например,.технология.изготовления.жесткого.диска.(к.примеру,.SAS.или.
    SATA),.а.также.характеристики.контроллера.жесткого.диска.
    Емкость диска
    Емкость.—.еще.один.аспект.хранения..Необходимый.объем.дискового.простран- ства.определяется.тем,.сколько.сообщений.необходимо.хранить.одновременно..
    Если.ожидается,.что.брокер.будет.получать.1.Тбайт.трафика.в.день,.то.при.7-днев- ном.хранении.ему.понадобится.доступное.для.использования.хранилище.для.
    сегментов.журнала.объемом.минимум.7.Тбайт..Следует.также.учесть.перерасход.
    как.минимум.10.%.для.других.файлов,.не.считая.буфера.для.возможных.колебаний.
    трафика.или.роста.его.с.течением.времени.
    Емкость.хранилища.—.один.из.факторов,.которые.необходимо.учитывать.при.
    определении.оптимального.размера.кластера.Kafka.и.принятии.решения.о.его.
    расширении..Общий.трафик.кластера.можно.балансировать.за.счет.нескольких.
    разделов.для.каждой.темы,.что.позволяет.использовать.дополнительные.брокеры.
    для.наращивания.доступной.емкости.в.случаях,.когда.плотности.данных.на.одного.
    брокера.недостаточно..Решение.о.том,.сколько.необходимо.дискового.пространства,.
    определяется.также.выбранной.для.кластера.стратегией.репликации.(подробнее.
    обсуждается.в.главе.6).

    Выбор аппаратного обеспечения 55
    Память
    В.обычном.режиме.функционирования.потребитель.Kafka.читает.из.конца.раз- дела,.причем.потребитель.постоянно.наверстывает.упущенное.и.лишь.незна- чительно.отстает.от.производителей,.если.вообще.отстает..При.этом.читаемые.
    потребителем.сообщения.сохраняются.оптимальным.образом.в.страничном.кэше.
    системы,.благодаря.чему.операции.чтения.выполняются.быстрее,.чем.если.бы.бро- керу.приходилось.перечитывать.их.с.диска..Следовательно,.чем.больший.объем.
    оперативной.памяти.доступен.для.страничного.кэша,.тем.выше.быстродействие.
    клиентов-потребителей.
    Для.самой.Kafka.не.требуется.выделения.для.JVM.большого.объема.оперативной.
    памяти.в.куче..Даже.брокер,.который.обрабатывает.X.сообщений.в.секунду.при.
    скорости.передачи.данных.X.мегабит.в.секунду,.может.работать.с.кучей.в.5.Гбайт..
    Остальная.оперативная.память.системы.будет.применяться.для.страничного.кэша.
    и.станет.приносить.Kafka.пользу.за.счет.возможности.кэширования.используемых.
    сегментов.журналов..Именно.поэтому.не.рекомендуется.располагать.Kafka.в.си- стеме,.где.уже.работают.другие.важные.приложения,.так.как.им.придется.делиться.
    страничным.кэшем,.что.снизит.производительность.потребителей.Kafka.
    Передача данных по сети
    Максимальный.объем.трафика,.который.может.обработать.Kafka,.определяет- ся.доступной.пропускной.способностью.сети..Зачастую.это.ключевой.(наряду.
    с.объемом.дискового.хранилища).фактор.выбора.размера.кластера..Затрудняет.
    этот.выбор.присущий.Kafka.(вследствие.поддержки.нескольких.потребителей).
    дисбаланс.между.входящим.и.исходящим.сетевым.трафиком..Производитель.
    может.генерировать.1.Мбайт.сообщений.в.секунду.для.заданной.темы,.но.коли- чество.потребителей.может.оказаться.каким.угодно,.привнося.соответствующий.
    множитель.для.исходящего.трафика..Повышают.требования.к.сети.и.другие.опе- рации,.такие.как.репликация.кластера.(см..главу.6).и.зеркальное.копирование.
    (обсуждается.в.главе.8)..При.интенсивном.использовании.сетевого.интерфейса.
    вполне.возможно.отставание.репликации.кластера,.что.вызовет.неустойчивость.
    его.состояния.
    CPU
    Вычислительные.мощности.не.так.важны,.как.дисковое.пространство.и.опера- тивная.память,.но.они.тоже.в.некоторой.степени.влияют.на.общую.производитель- ность.брокера..В.идеале.клиенты.должны.сжимать.сообщения.ради.оптимизации.
    использования.сети.и.дискового.пространства..Брокер.Kafka,.однако,.должен.раз- архивировать.все.пакеты.сообщений.для.проверки.контрольных.сумм.отдельных.

    56 Глава 2 • Установка Kafka сообщений.и.назначения.смещений..Затем.ему.нужно.снова.сжать.пакет.сообщений.
    для.сохранения.его.на.диске..Именно.для.этого.Kafka.требуется.бо'льшая.часть.вы- числительных.мощностей..Однако.не.следует.рассматривать.это.как.основ.ной.
    фактор.при.выборе.аппаратного.обеспечения.
    Kafka в облачной среде
    Kafka.часто.устанавливают.в.облачной.вычислительной.среде,.например,.Amazon.
    Web.Services.(AWS)..AWS.предоставляет.множество.виртуальных.вычислитель- ных.узлов,.все.с.различными.комбинациями.CPU,.оперативной.памяти.и.дис- кового.пространства..Для.выбора.подходящей.конфигурации.виртуального.узла.
    нужно.учесть.в.первую.очередь.факторы.производительности.Kafka..Начать.можно.
    с.необходимого.объема.хранения.данных,.после.чего.учесть.требуемую.произво- дительность.генераторов..В.случае.потребности.в.очень.низкой.задержке.могут.
    понадобиться.виртуальные.узлы.с.оптимизацией.по.операциям.ввода/вывода.
    с.локальными.хранилищами.на.основе.SSD..В.противном.случае.может.оказаться.
    достаточно.удаленного.хранилища.(например,.AWS.Elastic.Block.Store)..После.
    принятия.этих.решений.можно.будет.выбрать.из.числа.доступных.вариантов.CPU.
    и.оперативной.памяти.
    На.практике.это.означает,.что.в.случае.задействования.AWS.можно.выбрать.
    виртуальные.узлы.типов.m4.или.r3..Виртуальный.узел.типа.m4.допускает.более.
    длительное.хранение,.но.при.меньшей.пропускной.способности.записи.на.диск,.
    поскольку.основан.на.адаптивном.блочном.хранилище..Пропускная.способность.
    виртуального.узла.типа.r3.намного.выше.благодаря.использованию.локальных.
    SSD-дисков,.но.последние.ограничивают.доступный.для.хранения.объем.данных..
    Преимущества.обоих.этих.вариантов.сочетают.существенно.более.дорогостоящие.
    типы.виртуальных.узлов.i2.и.d2.
    Кластеры Kafka
    Отдельный.сервер.Kafka.хорошо.подходит.для.локальной.разработки.или.созда- ния.прототипов.систем,.но.настроить.несколько.брокеров.для.совместной.работы.
    в.виде.кластера.намного.выгоднее.(рис..2.2)..Основная.выгода.от.этого.—.возмож- ность.масштабировать.нагрузку.на.несколько.серверов..Вторая.по.значимости.—.
    возможность.использования.репликации.для.защиты.от.потери.данных.вслед- ствие.отказов.отдельных.систем..Репликация.также.дает.возможность.выполнить.
    работы.по.обслуживанию.Kafka.или.нижележащей.системы.с.сохранением.до- ступности.для.клиентов..В.этом.разделе.мы.рассмотрим.только.настройку.кла- стера.Kafka..Более.подробную.информацию.о.репликации.данных.вы.найдете.
    в.главе.6.

    Кластеры Kafka 57
    Рис. 2.2. Простой кластер Kafka
    Сколько должно быть брокеров?
    Размер.кластера.Kafka.определяется.несколькими.факторами..Первый.из.них.—.
    требующийся.для.хранения.сообщений.объем.дискового.пространства.и.объем.до- ступного.места.на.отдельном.брокере..Если.кластеру.необходимо.хранить.10.Тбайт.
    данных,.а.отдельный.брокер.может.хранить.2.Тбайт,.то.минимальный.размер.кла- стера.—.пять.брокеров..Кроме.того,.использование.репликации.может.повысить.
    требования.к.хранилищу.минимум.на.100.%.(в.зависимости.от.ее.коэффициента).
    (см..главу.6)..Это.значит,.что.при.использовании.репликации.тот.же.кластер.дол- жен.будет.содержать.как.минимум.десять.брокеров.
    Еще.один.фактор,.который.нужно.учесть,.—.возможности.кластера.по.обработке.
    запросов..Например,.каковы.возможности.сетевых.интерфейсов.и.способны.ли.
    они.справиться.с.трафиком.клиентов.при.нескольких.потребителях.данных.или.
    колебаниями.трафика.на.протяжении.хранения.данных.(то.есть.в.случае.вспле- сков.трафика.в.период.пиковой.нагрузки)..Если.сетевой.интерфейс.отдельного.
    брокера.используется.на.80.%.при.пиковой.нагрузке,.а.потребителя.данных.два,.
    то.они.не.смогут.справиться.с.пиковым.трафиком.при.менее.чем.двух.брокерах..
    Если.в.кластере.используется.репликация,.она.играет.роль.дополнительного.по- требителя.данных,.который.необходимо.учесть..Может.быть.полезно.увеличить.
    количество.брокеров.в.кластере,.чтобы.справиться.с.проблемами.производитель- ности,.вызванными.понижением.пропускной.способности.дисков.или.объема.до- ступной.оперативной.памяти.

    58 Глава 2 • Установка Kafka
    Конфигурация брокеров
    Есть.только.два.требования.к.конфигурации.брокеров.при.их.работе.в.составе.од- ного.кластера.Kafka..Первое.—.в.конфигурации.всех.брокеров.должно.быть.одина- ковое.значение.параметра.
    zookeeper.connect
    ..Он.задает.ансамбль.ZooKeeper.и.путь.
    хранения.кластером.метаданных..Второе.—.у.каждого.из.брокеров.кластера.должно.
    быть.уникальное.значение.параметра.
    broker.id
    ..Если.два.брокера.с.одинаковым.
    значением.
    broker.id
    .попытаются.присоединиться.к.кластеру,.то.второй.брокер.
    запишет.в.журнал.сообщение.об.ошибке.и.не.запустится..Существуют.и.другие.
    параметры.конфигурации.брокеров,.используемые.при.работе.кластера,.а.именно.
    параметры.для.управления.репликацией,.описываемые.в.дальнейших.главах.
    Тонкая настройка операционной системы
    Хотя.в.большинстве.дистрибутивов.Linux.есть.готовые.конфигурации.параметров.
    конфигурации.ядра,.которые.довольно.хорошо.подходят.для.большинства.прило- жений,.можно.внести.в.них.несколько.изменений.для.повышения.производитель- ности.брокера.Kafka..В.основном.они.относятся.к.подсистемам.виртуальной.па- мяти.и.сети,.а.также.специфическим.моментам,.касающимся.точки.монтирования.
    диска.для.сохранения.сегментов.журналов..Эти.параметры.обычно.настраиваются.
    в.файле.
    /etc/sysctl.conf
    ,.но.лучше.обратиться.к.документации.конкретного.дис- трибутива.Linux,.чтобы.выяснить.все.нюансы.корректировки.настроек.ядра.
    Виртуальная память
    Обычно.система.виртуальной.памяти.Linux.сама.подстраивается.под.нагрузку.
    системы..Но.можно.внести.некоторые.корректировки.в.работу.как.с.областью.
    подкачки,.так.и.с.«грязными».страницами.памяти,.чтобы.лучше.приспособить.ее.
    к.специфике.нагрузки.Kafka.
    Как.и.для.большинства.приложений,.особенно.тех,.где.важна.пропускная.способ- ность,.лучше.избегать.подкачки.(практически).любой.ценой..Затраты,.обуслов- ленные.подкачкой.страниц.памяти.на.диск,.существенно.влияют.на.все.аспекты.
    производительности.Kafka..Кроме.того,.Kafka.активно.использует.системный.
    страничный.кэш,.и.если.подсистема.виртуальной.памяти.выполняет.подкачку.на.
    диск,.то.страничному.кэшу.выделяется.недостаточное.количество.памяти.
    Один.из.способов.избежать.подкачки.—.не.выделять.в.настройках.никакого.места.
    для.нее..Подкачка.—.не.обязательное.требование,.а.скорее.страховка.на.случай.
    какой-либо.аварии.в.системе..Она.может.спасти.от.неожиданного.прерывания.си- стемой.выполнения.процесса.вследствие.нехватки.памяти..Поэтому.рекомендуется.
    делать.значение.параметра.
    vm.swappiness
    .очень.маленьким,.например.1..Этот.па- раметр.представляет.собой.вероятность.(в.процентах).того,.что.подсистема.вирту- альной.памяти.воспользуется.подкачкой.вместо.удаления.страниц.из.страничного.
    кэша..Лучше.уменьшить.размер.страничного.кэша,.чем.использовать.подкачку.

    Кластеры Kafka 59
    Почему бы не сделать параметр swappiness равным 0?
    Ранее рекомендовалось всегда задавать параметр vm.swappiness равным 0.
    Смысл этого значения был таков: никогда не использовать подкачку, разве что при нехватке памяти. Однако в версии 3.5-rc1 ядра Linux смысл поменялся, и это изменение было бэкпортировано во многие дистрибутивы, включая ядро Red
    Hat Enterprise Linux версии 2.6.32-303. Значение 0 при этом приобрело смысл
    «не использовать подкачку ни при каких обстоятельствах». Поэтому сейчас ре- комендуется использовать значение 1.
    Корректировка.того,.что.ядро.системы.делает.с.«грязными».страницами,.которые.
    должны.быть.сброшены.на.диск,.также.имеет.смысл..Быстрота.ответа.Kafka.про- изводителям.зависит.от.производительности.дисковых.операций.ввода/вывода..
    Именно.поэтому.сегменты.журналов.обычно.размещаются.на.быстрых.дисках:.или.
    отдельных.дисках.с.быстрым.временем.отклика.(например,.SSD),.или.дисковых.
    подсистемах.с.большим.объемом.NVRAM.для.кэширования.(например,.RAID)..
    В.результате.появляется.возможность.уменьшить.число.«грязных».страниц,.по.до- стижении.которого.запускается.фоновый.сброс.их.на.диск..Для.этого.необходимо.
    задать.значение.параметра.
    vm.dirty_background_ratio
    .меньшее,.чем.значение.по.
    умолчанию.(равно.10)..Оно.означает.долю.всей.памяти.системы.(в.процентах),.
    и.во.многих.случаях.его.можно.задать.равным.5..Однако.не.следует.делать.его.
    равным.0,.поскольку.в.этом.случае.ядро.начнет.непрерывно.сбрасывать.страницы.
    на.диск.и.тем.самым.потеряет.возможность.буферизации.дисковых.операций.за- писи.при.временных.флуктуациях.производительности.нижележащих.аппаратных.
    компонентов.
    Общее.количество.«грязных».страниц,.при.превышении.которого.ядро.системы.
    принудительно.инициирует.запуск.синхронных.операций.по.сбросу.их.на.диск,.
    можно.повысить.и.увеличением.параметра.
    vm.dirty_ratio
    .до.значения,.превыша- ющего.значение.по.умолчанию.—.20.(тоже.доля.в.процентах.от.всего.объема.памяти.
    системы)..Существует.широкий.диапазон.возможных.значений.этого.параметра,.
    но.наиболее.разумные.располагаются.между.60.и.80..Изменение.этого.параметра.
    является.несколько.рискованным.в.смысле.как.объема.не.сброшенных.на.диск.дей- ствий,.так.и.вероятности.возникновения.длительных.пауз.ввода/вывода.в.случае.
    принудительного.запуска.синхронных.операций.сброса..При.выборе.более.высо- ких.значений.параметра.
    vm.dirty_ratio
    .настойчиво.рекомендуется.использовать.
    репликацию.в.кластере.Kafka,.чтобы.защититься.от.системных.сбоев.
    При.выборе.значений.этих.параметров.имеет.смысл.контролировать.количество.
    «грязных».страниц.в.ходе.работы.кластера.Kafka.под.нагрузкой.при.промышленной.
    эксплуатации.или.имитационном.моделировании..Определить.его.можно.с.помо- щью.просмотра.файла.
    /proc/vmstat
    :
    # cat /proc/vmstat | egrep "dirty|writeback"
    nr_dirty 3875
    nr_writeback 29
    nr_writeback_temp 0
    #

    1   2   3   4   5   6   7   8   9   10   ...   39


    написать администратору сайта