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

  • Зачем выбирать новый корневой путь

  • Индивидуальное переопределение значений для каждой темы

  • Как выбрать количество разделов

  • Хранение информации в течение заданного промежутка времени и время последнего изменения

  • Настройка сохранения по размеру и времени

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


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

    Установка брокера Kafka 45
    должен.иметься.файл.
    myid
    .с.идентификатором.этого.сервера..Если.хосты.в.ансамбле.
    носят.названия.
    zoo1.example.com
    ,.
    zoo2.example.com
    .и.
    zoo3.example.com
    ,.то.файл.
    конфигурации.может.выглядеть.приблизительно.так:
    tickTime=2000
    dataDir=/var/lib/zookeeper clientPort=2181
    initLimit=20
    syncLimit=5
    server.1=zoo1.example.com:2888:3888
    server.2=zoo2.example.com:2888:3888
    server.3=zoo3.example.com:2888:3888
    В.этой.конфигурации.
    initLimit
    .представляет.собой.промежуток.времени,.на.
    протяжении.которого.ведомые.узлы.могут.подключаться.к.ведущему..Значение.
    syncLimit
    .ограничивает.отставание.ведомых.узлов.от.ведущего..Оба.значения.
    задаются.в.единицах.
    tickTime
    ,.то.есть.
    initLimit
    .=.20.·.2000.мс.=.40.с..В.конфи- гурации.также.перечисляются.все.серверы.ансамбля..Они.приводятся.в.формате.
    server.X=hostname:peerPort:leaderPort
    .со.следующими.параметрами:
    ‰
    ‰ X
    —.идентификатор.сервера..Обязан.быть.целым.числом,.но.отсчет.может.ве- стись.не.от.нуля.и.не.быть.последовательным;
    ‰
    ‰ hostname
    —.имя.хоста.или.IP-адрес.сервера;
    ‰
    ‰ peerPort
    —.TCP-порт,.через.который.серверы.ансамбля.взаимодействуют.друг.
    с.другом;
    ‰
    ‰ leaderPort
    —.TCP-порт,.через.который.осуществляется.выбор.ведущего.узла.
    Достаточно,.чтобы.клиенты.могли.подключаться.к.ансамблю.через.порт.
    clientPort
    ,.
    но.участники.ансамбля.должны.иметь.возможность.обмениваться.сообщениями.
    друг.с.другом.по.всем.трем.портам.
    Помимо.единого.файла.конфигурации.у.каждого.сервера.в.каталоге.
    dataDir
    .должен.
    быть.файл.
    myid
    ..Он.должен.содержать.идентификатор.сервера,.соответствующий.
    приведенному.в.файле.конфигурации..После.завершения.этих.шагов.можно.запу- стить.серверы,.и.они.будут.взаимодействовать.друг.с.другом.в.ансамбле.
    Установка брокера Kafka
    После.завершения.настройки.Java.и.ZooKeeper.можно.приступать.к.установ- ке.Apache.Kafka..Актуальный.выпуск.Apache.Kafka.можно.скачать.по.адресу.
    http://kafka.apache.org/downloads.html
    ..На.момент.публикации.данной.книги.это.вер- сия.0.9.0.1,.работающая.под.управлением.Scala.2.11.0 1
    1.
    На.момент.выхода.из.печати.русского.издания.—.1.1.1.и.Scala.2.12.6.соответственно..—.
    Примеч. пер.

    46 Глава 2 • Установка Kafka
    В.следующем.примере.установим.платформу.Kafka.в.каталог.
    /usr/local/kafka
    ,.
    настроив.ее.для.использования.запущенного.ранее.сервера.ZooKeeper.и.сохранения.
    сегментов.журнала.сообщений.в.каталоге.
    /tmp/kafka-logs
    :
    # tar -zxf kafka_2.11-0.9.0.1.tgz
    # mv kafka_2.11-0.9.0.1 /usr/local/kafka
    # mkdir /tmp/kafka-logs
    # export JAVA_HOME=/usr/java/jdk1.8.0_51
    # /usr/local/kafka/bin/kafka-server-start.sh -daemon
    /usr/local/kafka/config/server.properties
    #
    После.запуска.брокера.Kafka.можно.проверить.его.функционирование,.выполнив.
    какие-либо.простые.операции.с.кластером,.включающие.создание.тестовой.темы,.
    генерацию.сообщений.и.их.потребление.
    Создание.и.проверка.темы:
    # /usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181
    --replication-factor 1 --partitions 1 --topic test
    Created topic "test".
    # /usr/local/kafka/bin/kafka-topics.sh --zookeeper localhost:2181
    --describe --topic test
    Topic:test PartitionCount:1 ReplicationFactor:1 Configs:
    Topic: test Partition: 0 Leader: 0 Replicas: 0 Isr: 0
    #
    Генерация.сообщений.для.темы.
    test
    :
    # /usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
    Test Message 1
    Test Message 2
    ^D
    #
    Потребление.сообщений.из.темы.
    test
    :
    # /usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
    Test Message 1
    Test Message 2
    ^C
    Consumed 2 messages
    #
    Конфигурация брокера
    Пример.конфигурации.брокера,.поставляемый.вместе.с.дистрибутивом.Kafka,.
    вполне.подойдет.для.пробного.запуска.автономного.сервера,.но.для.большинства.
    установок.его.будет.недостаточно..Существует.множество.параметров.конфигу- рации.Kafka,.регулирующих.все.аспекты.установки.и.настройки..Для.многих.из.

    Конфигурация брокера 47
    них.можно.оставить.значения.по.умолчанию,.поскольку.они.относятся.к.нюансам.
    настройки.брокера.Kafka,.не.применяемым.до.тех.пор,.пока.вы.не.будете.работать.
    с.требующим.их.использования.конкретным.сценарием.
    Основные настройки брокера
    Существует.несколько.настроек.брокера.Kafka,.которые.желательно.обдумать.
    при.развертывании.платформы.в.любой.среде,.кроме.автономного.брокера.на.
    отдельном.сервере..Эти.параметры.относятся.к.основным.настройкам.брокера,.
    и.большинство.из.них.нужно.обязательно.поменять,.чтобы.брокер.мог.работать.
    в.кластере.с.другими.брокерами.
    broker.id
    У.каждого.брокера.Kafka.должен.быть.целочисленный.идентификатор,.задаваемый.
    посредством.параметра.
    broker.id
    ..По.умолчанию.это.значение.равно.0,.но.может.
    быть.любым.числом..Главное,.чтобы.оно.не.повторялось.в.пределах.одного.кла- стера.Kafka..Выбор.числа.может.быть.произвольным,.причем.при.необходимости.
    ради.удобства.сопровождения.его.можно.переносить.с.одного.брокера.на.другой..
    Желательно,.чтобы.это.число.было.как-то.связано.с.хостом,.тогда.более.прозрач- ным.окажется.соответствие.идентификаторов.брокеров.хостам.при.сопровожде- нии..Например,.если.у.вас.имена.хостов.содержат.уникальные.числа.(например,.
    host1.example.com
    ,.
    host2.example.com
    .и.т..д.),.эти.числа.будут.удачным.выбором.
    для.значений.
    broker.id port
    Типовой.файл.конфигурации.запускает.Kafka.с.прослушивателем.на.TCP-порту.
    9092..Этот.порт.можно.изменить.на.любой.другой.доступный.путем.изменения.
    параметра.конфигурации.
    port
    ..Имейте.в.виду,.что.при.выборе.порта.с.номером.
    менее.1024.Kafka.должна.запускаться.от.имени.пользователя.
    root
    ..А.запускать.
    Kafka.от.имени.пользователя.
    root
    .не.рекомендуется.
    zookeeper.connect
    Путь,.который.ZooKeeper.использует.для.хранения.метаданных.брокеров,.задается.
    с.помощью.параметра.конфигурации.
    zookeeper.connect
    ..В.образце.конфигурации.
    ZooKeeper.работает.на.порту.2181.на.локальной.хост-машине,.что.указывается.как.
    localhost:2181
    ..Формат.этого.параметра.—.разделенный.точками.с.запятой.список.
    строк.вида.
    hostname:port/path
    ,.включающий:
    ‰
    ‰ hostname
    .—.имя.хоста.или.IP-адрес.сервера.ZooKeeper;
    ‰
    ‰ port
    .—.номер.порта.клиента.для.сервера;

    48 Глава 2 • Установка Kafka
    ‰
    ‰ /path
    .—.необязательный.путь.ZooKeeper,.используемый.в.качестве.нового.кор- невого.(
    chroot
    ).пути.кластера.Kafka..Если.он.не.задан,.используется.корневой.
    путь.
    Если.заданный.путь.
    chroot
    .не.существует,.он.будет.создан.при.запуске.брокера.
    Зачем выбирать новый корневой путь
    Выбор нового корневого пути для кластера Kafka обычно считается хорошей практикой. Это дает возможность использовать ансамбль ZooKeeper совместно с другими приложениями, включая другие кластеры Kafka, без каких-либо кон- фликтов. Лучше также задать в конфигурации несколько серверов ZooKeeper
    (частей одного ансамбля). Благодаря этому брокер Kafka сможет подключиться к другому участнику ансамбля ZooKeeper в случае отказа сервера.
    log.dirs
    Kafka.сохраняет.все.сообщения.на.жесткий.диск,.и.хранятся.эти.сегменты.жур- налов.в.каталогах,.задаваемых.в.настройке.
    log.dirs
    ..Она.представляет.собой.
    разделенный.запятыми.список.путей.в.локальной.системе..Если.задано.несколько.
    путей,.брокер.будет.сохранять.разделы.в.них.по.принципу.наименее.используемых,.
    с.сохранением.сегментов.журналов.одного.раздела.по.одному.пути..Отметим,.что.
    брокер.поместит.новый.раздел.в.каталог,.в.котором.в.настоящий.момент.хранит- ся.меньше.всего.разделов,.а.не.используется.меньше.всего.пространства,.так.что.
    равномерное.распределение.данных.по.разделам.не.гарантируется.
    num.recovery.threads.per.data.dir
    Для.обработки.сегментов.журналов.Kafka.использует.настраиваемый.пул.потоков.
    выполнения..В.настоящий.момент.он.применяется:
    ‰
    ‰
    при.обычном.запуске.—.для.открытия.сегментов.журналов.каждого.из.разделов;
    ‰
    ‰
    запуске.после.сбоя.—.для.проверки.и.усечения.сегментов.журналов.каждого.
    из.разделов;
    ‰
    ‰
    останове.—.для.аккуратного.закрытия.сегментов.журналов.
    По.умолчанию.задействуется.только.один.поток.на.каждый.каталог.журналов..
    Поскольку.это.происходит.только.при.запуске.и.останове,.имеет.смысл.использо- вать.большее.их.количество,.чтобы.распараллелить.операции..При.восстановлении.
    после.некорректного.останова.выгоды.от.применения.такого.подхода.могут.до- стичь.нескольких.часов.в.случае.перезапуска.брокера.с.большим.числом.разделов!.
    Помните,.что.значение.этого.параметра.определяется.из.расчета.на.один.каталог.
    журналов.из.числа.задаваемых.с.помощью.
    log.dirs
    ..То.есть.если.значение.пара- метра.
    num.recovery.threads.per.data.dir
    .равно.8,.а.в.
    log.dirs
    .указаны.три.пути,.
    то.общее.число.потоков.—.24.

    Конфигурация брокера 49
    auto.create.topics.enable
    В.соответствии.с.конфигурацией.Kafka.по.умолчанию.брокер.должен.автоматиче- ски.создавать.тему,.когда:
    ‰
    ‰
    производитель.начинает.писать.в.тему.сообщения;
    ‰
    ‰
    потребитель.начинает.читать.из.темы.сообщения;
    ‰
    ‰
    любой.клиент.запрашивает.метаданные.темы.
    Во.многих.случаях.такое.поведение.может.оказаться.нежелательным,.особенно.
    из-за.того,.что.не.существует.возможности.проверить.по.протоколу.Kafka.суще- ствование.темы,.не.вызвав.ее.создания..Если.вы.управляете.созданием.тем.явным.
    образом,.вручную.или.посредством.системы.инициализации,.то.можете.установить.
    для.параметра.
    auto.create.topics.enable
    .значение.
    false
    Настройки тем по умолчанию
    Конфигурация.сервера.Kafka.задает.множество.настроек.по.умолчанию.для.созда- ваемых.тем..Некоторые.из.этих.параметров,.включая.число.разделов.и.параметры.
    сохранения.сообщений,.можно.задавать.для.каждой.темы.отдельно.с.помощью.ин- струментов.администратора.(рассматриваются.в.главе.9)..Значения.по.умолчанию.
    в.конфигурации.сервера.следует.устанавливать.равными.эталонным.значениям,.
    подходящим.для.большинства.тем.кластера.
    Индивидуальное переопределение значений для каждой темы
    В предыдущих версиях Kafka можно было переопределять значения описанных параметров конфигурации брокера отдельно для каждой темы с помощью пара- метров log.retention.hours.per.topic, log.retention.bytes.per.topic и log.segment.bytes.
    per.topic. Эти параметры более не поддерживаются, и переопределять значения необходимо с помощью инструментов администратора.
    num.partitions
    Параметр.
    num.partitions
    .определяет,.с.каким.количеством.разделов.создается.
    новая.тема,.главным.образом.в.том.случае,.когда.включено.автоматическое.созда- ние.тем.(что.является.поведением.по.умолчанию)..Значение.этого.параметра.по.
    умолчанию.—.
    1
    ..Имейте.в.виду,.что.количество.разделов.для.темы.можно.лишь.
    увеличивать,.но.не.уменьшать..Это.значит,.что.если.для.нее.требуется.меньше.раз- делов,.чем.указано.в.
    num.partitions
    ,.придется.аккуратно.создать.ее.вручную.(это.
    обсуждается.в.главе.9).
    Как.говорилось.в.главе.1,.разделы.представляют.собой.способ.масштабирования.
    тем.в.кластере.Kafka,.поэтому.важно,.чтобы.их.было.столько,.сколько.нужно.для.
    уравновешивания.нагрузки.по.сообщениям.в.масштабах.всего.кластера.по.мере.

    50 Глава 2 • Установка Kafka добавления.брокеров..Многие.пользователи.предпочитают,.чтобы.число.разделов.
    было.равно.числу.брокеров.в.кластере.или.кратно.ему..Это.дает.возможность.
    равномерно.распределять.разделы.по.брокерам,.что.приведет.к.равномерному.
    распределению.нагрузки.по.сообщениям..Однако.это.не.обязательное.требование,.
    ведь.и.наличие.нескольких.тем.позволяет.выравнивать.нагрузку.
    Как выбрать количество разделов
    Вот несколько факторов, которые следует учитывать при выборе количества разделов.
    ‚ Какой пропускной способности планируется достичь для темы? Например, планируете вы записывать 100 Кбайт/с или 1 Гбайт/с?
    ‚ Какая максимальная пропускная способность ожидается при потреблении сообщений из отдельного раздела? Из каждого раздела всегда будет читать не более чем один потребитель
    1
    , так что если знать, что потребитель записы- вает данные в базу, которая не способна обрабатывать более 50 Мбайт/с по каждому записывающему в нее потоку, становится очевидным ограничение в 50 Мбайт/с при потреблении данных из раздела.
    ‚ Аналогичным образом можно оценить максимальную пропускную способность из расчета на производитель для одного раздела, но поскольку быстродей- ствие производителей обычно выше, чем потребителей, этот шаг чаще всего можно пропустить.
    ‚ При отправке сообщений разделам по ключам добавление новых разделов может оказаться очень непростой задачей, так что желательно рассчитывать пропускную способность, исходя из планируемого в будущем объема исполь- зования, а не текущего.
    ‚ Обдумайте число разделов, размещаемых на каждом из брокеров, а также доступные каждому брокеру объем дискового пространства и полосу про- пускания сети.
    ‚ Старайтесь избегать завышенных оценок, ведь любой раздел расходует опе- ративную память и другие ресурсы на брокере и увеличивает время на выбор ведущего узла.
    С учетом всего этого ясно, что разделов должно быть много, но не слишком много. Если у вас есть предварительные оценки целевой пропускной способности для темы и ожидаемой пропускной способности потребителей, можно получить требуемое число разделов путем деления целевой пропускной способности на ожидаемую пропускную способность потребителей. Так что если необходимо читать из темы 1 Гбайт/с и записывать столько же и мы знаем, что каждый по- требитель способен обрабатывать лишь 50 Мбайт/с, то нам нужно как минимум
    20 разделов. Таким образом, из темы будут читать 20 потребителей, что в сумме даст 1 Гбайт/с.
    Если же такой подробной информации у вас нет, то, по нашему опыту, ограни- чение размеров разделов на диске до 6 Гбайт сохраняемой информации в день часто дает удовлетворительные результаты.
    1.
    Имеется.в.виду,.что.раздел.в.целом.должен.быть.прочитан.одним.потребителем.или.
    группой.потребителей..—.Примеч. пер.

    Конфигурация брокера 51
    log.retention.ms
    Чаще.всего.продолжительность.хранения.сообщений.в.Kafka.ограничивается.
    по.времени..Значение.по.умолчанию.указано.в.файле.конфигурации.с.помощью.
    параметра.
    log.retention.hours
    .и.равно.168.часам,.или.1.неделе..Однако.можно.
    использовать.и.два.других.параметра.—.
    log.retention.minutes
    .и.
    log.retention.ms
    Все.эти.три.параметра.определяют.одно.и.то.же.—.промежуток.времени,.по.исте- чении.которого.сообщения.удаляются..Но.рекомендуется.использовать.параметр.
    log.retention.ms
    ,.ведь.в.случае.указания.нескольких.параметров.приоритет.при- надлежит.наименьшей.единице.измерения,.так.что.всегда.будет.использоваться.
    значение.
    log.retention.ms
    Хранение информации в течение заданного промежутка времени
    и время последнего изменения
    Хранение информации в течение заданного промежутка времени осуществля- ется путем анализа времени последнего изменения (mtime) каждого из файлов сегментов журналов на диске. При обычных обстоятельствах оно соответствует времени закрытия сегмента журнала и отражает метку даты/времени последнего сообщения в файле. Однако при использовании инструментов администратора для переноса разделов между брокерами это время оказывается неточным и приводит к слишком длительному хранению информации для этих разделов.
    Более подробно мы обсудим этот вопрос в главе 9, когда будем рассматривать переносы разделов.
    log.retention.bytes
    Еще.один.способ.ограничения.срока.действия.сообщений.—.на.основе.общего.раз- мера.(в.байтах).сохраняемых.сообщений..Значение.задается.с.помощью.параметра.
    log.retention.bytes
    .и.применяется.пораздельно..Это.значит,.что.в.случае.темы.из.
    восьми.разделов.и.равного.1.Гбайт.значения.
    log.retention.bytes
    .максимальный.
    объем.сохраняемых.для.этой.темы.данных.будет.8.Гбайт..Отметим,.что.объем.со- хранения.зависит.от.отдельных.разделов,.а.не.от.темы..Это.значит,.что.в.случае.
    увеличения.числа.разделов.для.темы.максимальный.объем.сохраняемых.при.ис- пользовании.
    log.retention.bytes
    .данных.также.возрастет.
    Настройка сохранения по размеру и времени
    Если задать значения параметров log.retention.bytes и log.retention.ms (или другого параметра ограничения времени хранения данных), сообщения будут удаляться по достижении любого из этих пределов. Например, если значение log.retention.
    ms равно 86 400 000 (1 день), а log.retention.bytes — 1 000 000 000 (1 Гбайт), вполне могут удаляться сообщения младше 1 дня, если общий объем сообщений за день превысил 1 Гбайт. И наоборот, сообщения могут быть удалены через день, даже если общий объем сообщений раздела меньше 1 Гбайт.

    52 Глава 2 • Установка Kafka log.segment.bytes
    Упомянутые.настройки.сохранения.журналов.касаются.сегментов.журналов,.а.не.
    отдельных.сообщений..По.мере.генерации.сообщений.брокером.Kafka.они.добавля- ются.в.конец.текущего.сегмента.журнала.соответствующего.раздела..По.достижении.
    сегментом.журнала.размера,.задаваемого.параметром.
    log.segment.bytes
    .и.равного.
    по.умолчанию.1.Гбайт,.этот.сегмент.закрывается.и.открывается.новый..После.
    закрытия.сегмент.журнала.можно.выводить.из.обращения..Чем.меньше.размер.
    сегментов.журнала,.тем.чаще.приходится.закрывать.файлы.и.создавать.новые,.что.
    снижает.общую.эффективность.операций.записи.на.диск.
    Подбор.размера.сегментов.журнала.важен.в.случае,.когда.темы.отличаются.низкой.
    частотой.генерации.сообщений..Например,.если.в.тему.поступает.лишь.100.Мбайт.
    сообщений.в.день,.а.для.параметра.
    log.segment.bytes
    .установлено.значение.по.
    умолчанию,.для.заполнения.одного.сегмента.потребуется.10.дней..А.поскольку.
    сообщения.нельзя.объявить.недействительными.до.тех.пор,.пока.сегмент.журна- ла.не.закрыт,.то.при.значении.604.800.000.(1.неделя).параметра.
    log.retention.
    ms
    .к.моменту.вывода.из.обращения.закрытого.сегмента.журнала.могут.скопиться.
    сообщения.за.17.дней..Это.происходит.потому,.что.при.закрытии.сегмента.с.нако- пившимися.за.10.дней.сообщениями.его.приходится.хранить.еще.7.дней,.прежде.
    чем.можно.будет.вывести.из.обращения.в.соответствии.с.принятыми.временными.
    правилами,.поскольку.сегмент.нельзя.удалить.до.того,.как.окончится.срок.действия.
    последнего.сообщения.в.нем.
    1   2   3   4   5   6   7   8   9   ...   39


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