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

  • Потребители Kafka и ZooKeeper

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


    Скачать 7.59 Mb.
    НазваниеApache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
    Дата21.06.2022
    Размер7.59 Mb.
    Формат файлаpdf
    Имя файлаApache Kafka. Потоковая обработка и анализ данных.pdf
    ТипДокументы
    #609074
    страница8 из 39
    1   ...   4   5   6   7   8   9   10   11   ...   39
    60 Глава 2 • Установка Kafka
    Диск
    Если.не.считать.выбора.аппаратного.обеспечения.подсистемы.жестких.дисков,.
    а.также.конфигурации.RAID-массива.в.случае.его.использования,.сильнее.всего.
    влияет.на.производительность.применяемая.для.этих.дисков.файловая.система..
    Существует.множество.разных.файловых.систем,.но.в.качестве.локальной.чаще.
    всего.задействуется.EXT4.(fourth.extended.file.system.—.четвертая.расширенная.
    файловая.система).или.XFS.(Extents.File.System.—.файловая.система.на.основе.
    экстентов)..EXT4.работает.довольно.хорошо,.но.требует.потенциально.небез- опасных.параметров.тонкой.настройки..Среди.них.установка.более.длительного.
    интервала.фиксации,.чем.значение.по.умолчанию.(5),.с.целью.понижения.частоты.
    сброса.на.диск..В.EXT4.также.появилось.отложенное.выделение.блоков,.повы- шающее.вероятность.потери.данных.и.повреждения.файловой.системы.в.случае.
    системного.отказа..В.файловой.системе.XFS.также.используется.алгоритм.отло- женного.выделения,.но.более.безопасный,.чем.в.EXT4..Производительность.XFS.
    для.типичной.нагрузки.Kafka.тоже.выше,.причем.нет.необходимости.производить.
    тонкую.настройку.сверх.автоматической,.выполняемой.самой.файловой.системой..
    Она.эффективнее.также.при.пакетных.операциях.записи.на.диск,.объединяемых.
    для.повышения.пропускной.способности.при.вводе/выводе.
    Вне.зависимости.от.файловой.системы,.выбранной.в.качестве.точки.монтирова- ния.для.сегментов.журналов,.рекомендуется.указывать.параметр.монтирования.
    noatime
    ..Метаданные.файла.содержат.три.метки.даты/времени:.время.создания.
    (
    ctime
    ),.время.последнего.изменения.(
    mtime
    ).и.время.последнего.обращения.к.фай- лу.(
    atime
    )..По.умолчанию.значение.атрибута.
    atime
    .обновляется.при.каждом.чтении.
    файла..Это.значительно.увеличивает.число.операций.записи.на.диск..Атрибут.
    atime обычно.не.слишком.полезен,.за.исключением.случая,.когда.приложению.необхо- дима.информация.о.том,.обращались.ли.к.файлу.после.его.последнего.изменения.
    (в.этом.случае.можно.применить.параметр.
    realtime
    )..Kafka.вообще.не.использу- ет.атрибут.
    atime
    ,.так.что.можно.спокойно.его.отключить..Установка.параметра.
    noatime
    .для.точки.монтирования.предотвращает.обновления.меток.даты/времени,.
    но.не.влияет.на.корректную.обработку.атрибутов.
    ctime
    .и.
    mtime
    Передача данных по сети
    Корректировка.настроек.по.умолчанию.сетевого.стека.Linux.—.обычное.дело.для.
    любого.приложения,.генерирующего.много.сетевого.трафика,.так.как.ядро.по.
    умолчанию.не.приспособлено.для.высокоскоростной.передачи.больших.объемов.
    данных..На.деле.рекомендуемые.для.Kafka.изменения.не.отличаются.от.изменений,.
    рекомендуемых.для.большинства.веб-серверов.и.других.сетевых.приложений..
    Вначале.необходимо.изменить.объемы.(по.умолчанию.и.максимальный).памяти,.
    выделяемой.для.буферов.отправки.и.получения.для.каждого.сокета..Это.значи- тельно.увеличит.производительность.в.случае.передачи.больших.объемов.данных..
    Соответствующие.параметры.для.значений.по.умолчанию.буферов.отправки.

    Промышленная эксплуатация 61
    и.получения.каждого.сокета.называются.
    net.core.wmem_default
    .и.
    net.core.rmem_
    default
    .соответственно,.а.разумное.их.значение.будет.2.097.152.(2.Мбайт)..Имейте.
    в.виду,.что.максимальный.размер.не.означает.выделения.для.каждого.буфера.та- кого.пространства,.а.лишь.позволяет.сделать.это.при.необходимости.
    Помимо.настройки.сокетов.необходимо.отдельно.задать.размеры.буферов.от- правки.и.получения.для.сокетов.TCP.с.помощью.параметров.
    net.ipv4.tcp_wmem и.
    net.ipv4.tcp_rmem
    ..В.них.указываются.три.разделенных.пробелами.целых.числа,.
    определяющих.минимальный.размер,.размер.по.умолчанию.и.максимальный.раз- мер.соответственно..Пример.этих.параметров.—.
    4096 65536 2048000
    .—.означает,.
    что.минимальный.размер.буфера.4.Кбайт,.размер.по.умолчанию.—.64.Кбайт,.
    а.максимальный.—.2.Мбайт..Максимальный.размер.не.может.превышать.значений,.
    задаваемых.для.всех.сокетов.параметрами.
    net.core.wmem_max
    .и.
    net.core.rmem_max
    В.зависимости.от.настоящей.загрузки.ваших.брокеров.Kafka.может.понадобиться.
    увеличить.максимальные.значения.для.повышения.степени.буферизации.сетевых.
    соединений.
    Существует.еще.несколько.полезных.сетевых.параметров..Можно.включить.оконное.
    масштабирование.TCP.путем.установки.значения.
    1
    .параметра.
    net.ipv4.tcp_win- dow_scaling
    ,.что.позволит.клиентам.передавать.данные.эффективнее.и.обеспечит.
    возможность.буферизации.этих.данных.на.стороне.брокера..Значение.параметра.
    net.ipv4.tcp_max_syn_backlog
    .большее,.чем.принятое.по.умолчанию.
    1024
    ,.по- зволяет.повысить.число.одновременных.подключений..Значение.параметра.
    net.core.netdev_max_backlog
    ,.превышающее.принятое.по.умолчанию.
    1000
    ,.может.
    помочь.в.случае.всплесков.сетевого.трафика,.особенно.при.скоростях.сетевого.
    подключения.порядка.гигабит,.благодаря.увеличению.количества.пакетов,.поме- щаемых.в.очередь.для.последующей.обработки.ядром.
    Промышленная эксплуатация
    Когда.наступит.время.перевести.среду.Kafka.из.режима.тестирования.в.промыш- ленную.эксплуатацию,.для.настройки.надежного.сервиса.обмена.сообщениями.
    останется.позаботиться.лишь.еще.о.нескольких.моментах.
    Параметры сборки мусора
    Тонкая.настройка.сборки.мусора.Java.для.приложения.всегда.была.своеобразным.
    искусством,.требующим.подробной.информации.об.использовании.памяти.прило- жением.и.немалой.толики.наблюдений,.проб.и.ошибок..К.счастью,.это.изменилось.
    после.выхода.Java.7.и.появления.сборщика.мусора.Garbage.First.(G1)..G1.умеет.
    автоматически.приспосабливаться.к.различным.типам.нагрузки.и.обеспечивать.
    согласованность.пауз.на.сборку.мусора.на.протяжении.всего.жизненного.цикла.
    приложения..Он.также.с.легкостью.управляется.с.кучей.большого.размера,.так.как.

    62 Глава 2 • Установка Kafka разбивает.ее.на.небольшие.зоны,.вместо.того.чтобы.собирать.мусор.по.всей.куче.
    при.каждой.паузе.
    В.обычном.режиме.работы.для.выполнения.всего.этого.G1.требуются.минималь- ные.настройки..Для.корректировки.его.производительности.используются.два.
    параметра.
    ‰
    ‰ MaxGCPauseMillis
    ..Задает.желаемую.длительность.паузы.на.каждый.цикл.сбор- ки.мусора..Это.не.фиксированный.максимум.—.при.необходимости.G1.может.
    превысить.эту.длительность..По.умолчанию.данное.значение.равно.200.мс..
    Это.значит,.что.G1.будет.стараться.планировать.частоту.циклов.сборки.мусора,.
    а.также.числа.зон,.обрабатываемых.в.каждом.цикле,.так,.чтобы.каждый.цикл.
    занимал.примерно.200.мс.
    ‰
    ‰ InitiatingHeapOccupancyPercent
    ..Задает.долю.в.процентах.от.общего.размера.
    кучи,.до.превышения.которой.сборка.мусора.не.начинается..Значение.по.умол- чанию.равно.45..Это.значит,.что.G1.не.запустит.цикл.сборки.мусора.до.того,.как.
    будет.использоваться.45.%.кучи,.включая.суммарное.использование.зон.как.
    новых.(Eden),.так.и.старых.объектов.
    Брокер.Kafka.весьма.эффективно.использует.память.из.кучи.и.создает.объекты,.так.
    что.можно.задавать.более.низкие.значения.этих.параметров..Приведенные.в.дан- ном.разделе.значения.параметров.сборки.мусора.признаны.вполне.подходящими.
    для.сервера.с.64.Гбайт.оперативной.памяти,.где.Kafka.работала.с.кучей.размером.
    5.Гбайт..Этот.брокер.мог.работать.при.значении.
    20
    .параметра.
    MaxGCPauseMillis
    А.значение.параметра.
    InitiatingHeapOccupancyPercent
    .установлено.в.
    35
    ,.благодаря.
    чему.сборка.мусора.запускается.несколько.раньше,.чем.при.значении.по.умолчанию.
    Сценарий.запуска.Kafka.по.умолчанию.использует.не.сборщик.мусора.G1,.а.но- вый.параллельный.сборщик.мусора.и.конкурентный.сборщик.мусора.маркировки.
    и.очистки..Это.можно.легко.изменить.посредством.переменных.среды..Изменим.
    приведенную.ранее.команду.запуска.следующим.образом:
    # export JAVA_HOME=/usr/java/jdk1.8.0_51
    # export KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:+UseG1GC
    -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35
    -XX:+DisableExplicitGC -Djava.awt.headless=true"
    # /usr/local/kafka/bin/kafka-server-start.sh -daemon
    /usr/local/kafka/config/server.properties
    #
    Планировка ЦОД
    При.использовании.ориентированных.на.разработку.систем.физическое.располо- жение.брокеров.Kafka.в.ЦОД.особого.значения.не.имеет,.так.как.частичная.или.
    полная.недоступность.кластера.в.течение.коротких.промежутков.времени.влияет.
    на.работу.не.сильно..Однако.при.промышленной.эксплуатации.простой.в.процессе.
    выдаче.данных.означает.потерю.денег.из-за.невозможности.или.обслужить.поль-

    Промышленная эксплуатация 63
    зователей,.или.получить.телеметрию.их.действий..При.этом.возрастает.важность.
    использования.репликации.в.кластере.Kafka.(см..главу.6),.а.также.физического.
    расположения.брокеров.в.стойках.в.ЦОД..Если.не.позаботиться.об.этом.до.раз- вертывания.Kafka,.могут.потребоваться.дорогостоящие.работы.по.перемещению.
    серверов.
    Брокер.Kafka.ничего.не.знает.о.размещении.по.стойкам.во.время.назначения.но- вых.разделов.брокерам,.а.значит,.он.не.способен.учесть.возможное.расположение.
    двух.брокеров.в.одной.физической.стойке.или.в.одной.и.той.же.зоне.доступности.
    (при.работе.в.облачном.сервисе,.например,.AWS),.вследствие.чего.может.случайно.
    поставить.все.реплики.раздела.в.соответствие.брокерам,.использующим.в.одной.
    стойке.одни.и.те.же.сетевые.и.силовые.подключения..В.случае.отказа.этой.стойки.
    разделы.окажутся.недоступными.для.клиентов..Кроме.того,.в.результате.«нечи- стых».выборов.ведущего.узла.это.может.привести.к.дополнительной.потере.данных.
    на.восстановление.(см..подробности.в.главе.6).
    Рекомендуемая.практика:.установка.каждого.брокера.Kafka.в.кластере.в.отдельной.
    стойке.или,.по.крайней.мере,.использование.ими.различных.критических.точек.
    инфраструктурных.сервисов,.таких.как.питание.и.сеть..Обычно.это.означает.как.
    минимум.использование.для.брокеров.серверов.с.резервным.питанием.(подклю- чение.к.двум.разным.цепям.электропитания).и.двойных.сетевых.коммутаторов.
    с.объединенным.интерфейсом.к.самим.серверам.для.переключения.на.другой.ин- терфейс.без.перебоев.в.работе..Время.от.времени.может.понадобиться.выполнить.
    обслуживание.аппаратной.части.стойки.или.шкафа.с.их.отключением,.например,.
    передвинуть.сервер.или.заменить.электропроводку.
    Размещение приложений на ZooKeeper
    Kafka.использует.ZooKeeper.для.хранения.метаданных.о.брокерах,.темах.и.раз- делах..Запись.в.ZooKeeper.выполняют.только.при.изменении.списков.участников.
    групп.потребителей.или.изменениях.в.самом.кластере.Kafka..Объем.трафика.при.
    этом.минимален,.так.что.использование.выделенного.ансамбля.ZooKeeper.для.од- ного.кластера.Kafka.не.обоснованно..На.самом.деле.один.ансамбль.ZooKeeper.часто.
    применяется.для.нескольких.кластеров.Kafka.(с.задействованием.нового.корневого.
    пути.ZooKeeper.для.каждого.кластера,.как.описывалось.ранее.в.данной.главе).
    Потребители Kafka и ZooKeeper
    До Apache Kafka 0.9.0.0 потребители использовали не только брокеры, но и ZooKeeper для непосредственного сохранения информации о составе групп потребителей и соответствующих темах, а также для периодической фиксации смещений для каждого из обрабатываемых разделов (для обеспечения возможно- сти восстановления после сбоев между потребителями в группе). В версии 0.9.0.0 появился новый интерфейс потребителей, благодаря которому стало возможно делать это непосредственно с помощью брокеров Kafka. Он описан в главе 4.

    64 Глава 2 • Установка Kafka
    Однако.при.работе.потребителей.и.ZooKeeper.с.определенными.настройками.есть.
    нюанс..Для.фиксации.смещений.потребители.могут.использовать.или.ZooKeeper,.
    или.Kafka,.причем.интервал.между.фиксациями.можно.настраивать..Если.потреби- тели.применяют.ZooKeeper.для.смещений,.то.каждый.потребитель.будет.произво- дить.операцию.записи.ZooKeeper.через.заданное.время.для.каждого.потребляемого.
    им.раздела..Обычный.промежуток.времени.для.фиксации.смещений.—.1.минута,.
    так.как.именно.через.такое.время.группа.потребителей.читает.дублирующие.сооб- щения.в.случае.сбоя.потребителя..Эти.фиксации.могут.составлять.существенную.
    долю.трафика.ZooKeeper,.особенно.в.кластере.с.множеством.потребителей,.так.что.
    их.следует.учитывать..Если.ансамбль.ZooKeeper.не.способен.обрабатывать.такой.
    объем.трафика,.может.понадобиться.увеличить.интервал.фиксации..Однако.реко- мендуется,.чтобы.работающие.с.актуальными.библиотеками.Kafka.потребители.
    использовали.Kafka.для.фиксации.смещений.и.не.зависели.от.ZooKeeper.
    Не.считая.использования.одного.ансамбля.для.нескольких.кластеров.Kafka,.
    не.рекомендуется.делить.ансамбль.с.другими.приложениями,.если.этого.можно.
    избежать..Kafka.весьма.чувствительна.к.длительности.задержки.и.времени.ожи- дания.ZooKeeper,.и.нарушение.связи.с.ансамблем.может.вызвать.непредсказуемое.
    поведение.брокеров..Вследствие.этого.несколько.брокеров.вполне.могут.одно- временно.отключиться.в.случае.потери.подключений.к.ZooKeeper,.что.приведет.
    к.отключению.разделов..Это.также.создаст.дополнительную.нагрузку.на.диспетчер.
    кластера,.что.может.вызвать.возникновение.неочевидных.ошибок.через.длительное.
    время.после.нарушения.связи,.например,.при.попытке.контролируемого.останова.
    брокера..Следует.выносить.другие.приложения,.создающие.нагрузку.на.диспетчер.
    кластера.в.результате.активного.использования.или.неправильного.функциониро- вания,.в.отдельные.ансамбли.
    Резюме
    В.этой.главе.мы.поговорили.о.том,.как.установить.и.запустить.Apache.Kafka..Рас- смотрели,.как.выбрать.подходящее.аппаратное.обеспечение.для.брокеров,.и.разо- брались.в.специфических.вопросах.настроек.для.промышленной.эксплуатации..
    Теперь,.имея.кластер.Kafka,.мы.можем.пройтись.по.основным.вопросам.клиентских.
    приложений.Kafka..Следующие.две.главы.будут.посвящены.созданию.клиентов.
    как.для.генерации.сообщений.для.Kafka.(глава.3),.так.и.для.их.дальнейшего.по- требления.(глава.4).

    3
    Производители Kafka: запись сообщений в Kafka
    Используется.ли.Kafka.в.качестве.очереди,.шины.передачи.сообщений.или.плат- формы.хранения.данных,.в.любом.случае.всегда.создаются.производитель,.записы- вающий.данные.в.Kafka,.потребитель,.читающий.данные.из.нее,.или.приложение,.
    выполняющее.и.то.и.другое.
    Например,.в.системе.обработки.транзакций.для.кредитных.карт.всегда.будет.кли- ентское.приложение,.например,.интернет-магазин,.отвечающее.за.немедленную.
    отправку.каждой.из.транзакций.в.Kafka.сразу.же.после.выполнения.платежа..
    Еще.одно.приложение.будет.отвечать.за.немедленную.проверку.этой.транзакции.
    с.помощью.процессора.правил.и.выяснение.того,.одобрена.она.или.отклонена..
    Затем.ответ.«одобрить/отклонить».можно.будет.записать.в.Kafka.и.передать.
    в.интернет-магазин,.инициировавший.транзакцию..Третье.приложение.будет.вы- полнять.чтение.как.транзакции,.так.и.информации.о.том,.одобрена.ли.она,.из.Kafka.
    и.сохранять.их.в.базе.данных,.чтобы.аналитик.мог.позднее.просмотреть.принятые.
    решения.и,.возможно,.усовершенствовать.процессор.правил.
    Apache.Kafka.поставляется.со.встроенным.клиентским.API,.которым.разработчики.
    могут.воспользоваться.при.создании.взаимодействующих.с.Kafka.приложений.
    В.этой.главе.мы.научимся.использовать.производители.Kafka,.начав.с.обзора.их.
    архитектуры.и.компонентов..Мы.покажем,.как.создавать.объекты.
    KafkaProducer и.
    ProducerRecord
    ,.отправлять.записи.в.Kafka.и.обрабатывать.возвращаемые.ею.со- общения.об.ошибках..Далее.приведем.обзор.наиболее.важных.настроек,.служащих.
    для.управления.поведением.производителя..Завершим.главу.более.детальным.
    обзором.использования.различных.методов.секционирования.и.сериализато- ров,.а.также.обсудим.написание.ваших.собственных.сериализаторов.и.объектов.
    Partitioner
    В.главе.4.мы.займемся.клиентом-потребителем.Kafka.и.чтением.данных.из.Kafka.

    66 Глава 3 • Производители Kafka: запись сообщений в Kafka
    Сторонние клиенты
    Помимо встроенных клиентов в Kafka имеется двоичный протокол передачи дан- ных. Это значит, что приложения могут читать сообщения из Kafka или записывать сообщения в нее простой отправкой соответствующих последовательностей бай- тов на сетевой порт Kafka. Существует множество клиентов, реализующих про- токол передачи данных Kafka на различных языках программирования, благодаря чему можно легко использовать ее не только в Java-приложениях, но и в таких языках программирования, как C++, Python, Go и многих других. Эти клиенты не включены в проект Apache Kafka, но в «Википедии» в статье о проекте при- водится список клиентов для отличных от Java языков. Рассмотрение протокола передачи данных и внешних клиентов выходит за рамки текущей главы.
    Обзор производителя
    Существует.множество.причин,.по.которым.приложению.может.понадобиться.
    записывать.сообщения.в.Kafka:.фиксация.действий.пользователей.для.аудита.или.
    анализа,.запись.показателей,.сохранение.журнальных.сообщений,.запись.поступа- ющей.от.интеллектуальных.устройств.информации,.асинхронное.взаимодействие.
    с.другими.приложениями,.буферизация.информации.перед.записью.ее.в.базу.
    данных.и.многое.другое.
    Эти.разнообразные.сценарии.использования.означают.также.разнообразие.тре- бований:.каждое.ли.сообщение.критично.важно.или.потеря.части.сообщений.
    допустима?.Допустимо.ли.случайное.дублирование.сообщений?.Нужно.ли.при- держиваться.каких-либо.жестких.требований.относительно.длительности.задержки.
    или.пропускной.способности?
    В.рассмотренном.ранее.примере.обработки.транзакций.для.кредитных.карт.кри- тично.важно.было.не.терять.ни.одного.сообщения.и.не.допускать.их.дублирования..
    Длительность.задержки.должна.быть.низкой,.но.допустимы.задержки.до.500.мс,.
    а.пропускная.способность.должна.быть.очень.высокой.—.предполагается.обраба- тывать.миллионы.сообщений.в.секунду.
    Совсем.другим.сценарием.использования.было.бы.хранение.информации.о.щелч- ках.кнопкой.мыши.на.сайте..В.этом.случае.допустима.потеря.части.сообщений.
    или.небольшое.количество.повторяющихся.сообщений..Длительность.задержки.
    может.быть.высокой,.так.как.она.никак.не.влияет.на.удобство.работы.пользователя..
    Другими.словами,.ничего.страшного,.если.сообщение.поступит.в.Kafka.только.через.
    несколько.секунд,.главное,.чтобы.следующая.страница.загрузилась.сразу.же.после.
    щелчка.пользователя.по.ссылке..Пропускная.способность.зависит.от.ожидаемого.
    уровня.пользовательской.активности.на.сайте.
    Различие.в.требованиях.влияет.на.использование.API.производителей.для.записи.
    сообщений.в.Kafka.и.на.используемые.настройки.

    Обзор производителя
    1   ...   4   5   6   7   8   9   10   11   ...   39


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