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

  • Идентификаторы клиентов и группы потребителей

  • Таблица 9.3.

  • Автоматическое перераспределение ведущих реплик

  • "partitions" : [ { "partition"

  • "topics" : [ { "topic"

  • Повышение эффективности использования сети при переназначении реплик

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


    Скачать 7.59 Mb.
    НазваниеApache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
    Дата21.06.2022
    Размер7.59 Mb.
    Формат файлаpdf
    Имя файлаApache Kafka. Потоковая обработка и анализ данных.pdf
    ТипДокументы
    #609074
    страница28 из 39
    1   ...   24   25   26   27   28   29   30   31   ...   39
    223
    Ключ конфигурации Описание
    file.delete.delay.ms
    Длительность.(в.миллисекундах).ожидания.перед.удалением.
    сегментов.журнала.и.индексов.для.данной.темы.с.диска flush.messages
    Количество.сообщений,.которое.может.быть.получено,.прежде.чем.
    будет.выполнен.принудительный.сброс.сообщений.данной.темы.
    на.диск flush.ms
    Промежуток.времени.(в.миллисекундах).перед.принудительным.
    сбросом.сообщений.данной.темы.на.диск index.interval.bytes
    Допустимое.количество.байтов.сообщений,.генерируемых.между.
    записями.индекса.сегмента.журнала max.message.bytes
    Максимальный.размер.отдельного.сообщения.данной.темы.
    (в.байтах)
    message.format.version
    Используемая.брокером.при.записи.сообщений.на.диск.версия.
    формата.сообщений..Должна.представлять.собой.допустимую.
    версию.API.(например,.0.10.0)
    message.timestamp.dif- ference.max.ms
    Максимально.допустимая.разница.(в.миллисекундах).между.меткой.
    даты/времени.отправки.сообщения.и.меткой.даты/времени.брокера.
    о.его.получении..Допустимо.только.в.случае,.если.ключ.message.
    timestamp.type.равен.CreateTime message.timestamp.type Используемая.при.записи.сообщений.на.диск.метка.даты/времени..
    Текущие.значения.—.CreateTime.для.задаваемой.клиентом.метки.
    даты/времени.и.LogAppendTime.при.записи.сообщения.в.раздел.
    брокером min.cleanable.dirty.ratio Частота.попыток.сжатия.разделов.данной.темы.утилитой.сжатия.
    журналов.(в.виде.отношения.числа.несжатых.сегментов.журнала.
    к.общему.числу.сегментов)..Имеет.смысл.только.для.тем.со.сжатием.
    журналов min.insync.replicas
    Минимальное.количество.согласованных.реплик,.необходимое.для.
    того,.чтобы.раздел.темы.считался.доступным preallocate
    При.установке.в.true.место.под.сегменты.журналов.для.этой.темы.
    будет.выделяться.заранее,.при.создании.нового.сегмента retention.bytes
    Объем.хранимых.сообщений.этой.темы.(в.байтах)
    retention.ms
    Длительность.(в.миллисекундах).хранения.сообщений.данной.темы segment.bytes
    Объем.сообщений.(в.байтах),.записываемый.в.отдельный.сегмент.
    журнала.в.разделе segment.index.bytes
    Максимальный.размер.(в.байтах).отдельного.индекса.сегмента.
    журнала segment.jitter.ms
    Максимальное.число.миллисекунд,.задаваемых.случайным.образом.
    и.добавляемых.к.ключу.segment.ms.при.создании.сегментов.журналов segment.ms
    Частота.(в.миллисекундах).чередования.сегментов.журналов.
    для.каждого.из.разделов unclean.leader.elec- tion.enable
    При.установке.в.false.для.данной.темы.будет.запрещен.«нечистый».
    выбор.ведущей.реплики

    224 Глава 9 • Администрирование Kafka
    Например,.установим.для.темы.my-topic.длительность.сохранения,.равную.1.ч.
    (3.600.000.мс):
    # kafka-configs.sh --zookeeper zoo1.example.com:2181/kafka-cluster
    --alter --entity-type topics --entity-name my-topic --add-config retention.ms=3600000
    Updated config for topic: "my-topic".
    #
    Переопределение настроек клиентов по умолчанию
    Единственные.настройки,.которые.можно.переопределить.для.клиентов.Kafka,.—.
    квоты.производителей.и.потребителей..И.то.и.другое.представляет.собой.объем.
    данных.(в.байтах.в.секунду),.который.разрешается.генерировать/потреблять.всем.
    клиентам.с.заданным.идентификатором.клиента.в.расчете.на.одного.брокера..
    То.есть.если.вы.задаете.квоту.в.10.Мбайт/с.на.клиент.для.кластера.в.пять.брокеров,.
    то.этот.клиент.сможет.генерировать.10.Мбайт/с.данных.для.каждого.из.брокеров,.
    что.в.итоге.составит.50.Мбайт/с.
    Идентификаторы клиентов и группы потребителей
    Идентификаторы клиентов — далеко не всегда то же самое, что название груп- пы потребителей. Потребители могут задавать собственные идентификаторы клиентов, так что вполне возможно существование в разных группах нескольких потребителей с одинаковым идентификатором клиента. Рекомендуется задавать уникальный идентификатор клиента для каждой группы потребителей, причем каким-то образом идентифицирующий ее. Благодаря этому группа потребителей сможет использовать квоту совместно, а поиск по журналам, какая группа от- вечает за запрос, значительно упростится.
    Формат.команды.изменения.настроек.клиента:
    kafka-configs.sh --zookeeper zoo1.example.com:2181/kafka-cluster
    --alter --entity-type clients --entity-name
    --add-config =[,=...]
    В.табл..9.3.приведены.настройки.(ключи.конфигурации).клиентов.
    Таблица 9.3. Настройки (ключи конфигурации) клиентов
    Ключ конфигурации Описание
    producer_bytes_rate
    Допустимый.объем.генерируемых.для.одного.брокера.в.секунду.
    по.отдельному.идентификатору.клиента.сообщений.(в.байтах)
    consumer_bytes_rate
    Допустимый.объем.потребляемых.из.одного.брокера.в.секунду.
    по.отдельному.идентификатору.клиента.сообщений.(в.байтах)

    Управление разделами 225
    Описание переопределений настроек
    С.помощью.утилиты.командной.строки.можно.вывести.список.всех.переопре- делений.настроек.и.просмотреть.конкретные.настройки.темы.или.клиента..
    Как.и.в.остальных.утилитах,.здесь.для.этого.используется.команда.
    --describe
    Например,.выведем.список.всех.переопределений.настроек.для.темы.my-topic:
    # kafka-configs.sh --zookeeper zoo1.example.com:2181/kafka-cluster
    --describe --entity-type topics --entity-name my-topic
    Configs for topics:my-topic are retention.ms=3600000,segment.ms=3600000
    #
    Только переопределения настроек темы
    Описание конфигурации выводит только переопределения и не включает настрой- ки кластера по умолчанию. Сейчас не существует возможности ни через ZooKeeper, ни по протоколу Kafka динамически выяснить настройки самих брокеров. Это зна- чит, что в случае использования в ходе автоматизации вышеупомянутой утилиты для выяснения настроек темы или клиента необходимо отдельно предоставить ей информацию о настройках кластера по умолчанию.
    Удаление переопределений настроек
    Можно.полностью.удалить.динамические.настройки,.в.результате.чего.объект.
    возвратится.к.настройкам.кластера.по.умолчанию..Для.удаления.переопределений.
    настроек.используется.команда.
    --alter
    .с.параметром.
    --delete-config
    Например,.удалим.переопределения.настроек.ключа.
    retention.ms
    .для.темы.my- topic:
    # kafka-configs.sh --zookeeper zoo1.example.com:2181/kafka-cluster
    --alter --entity-type topics --entity-name my-topic
    --delete-config retention.ms
    Updated config for topic: "my-topic".
    #
    Управление разделами
    Среди.утилит.Kafka.есть.два.сценария.для.управления.разделами:.один.пред- назначен.для.повторного.выбора.ведущих.реплик,.а.второй.представляет.собой.
    низкоуровневую.утилиту.распределения.разделов.по.брокерам..С.их.помощью.
    можно.должным.образом.сбалансировать.трафик.сообщений.в.кластере.броке- ров.Kafka.

    226 Глава 9 • Администрирование Kafka
    Выбор предпочтительной ведущей реплики
    Как.обсуждалось.в.главе.6,.у.разделов.может.быть.по.несколько.реплик,.для.боль- шей.надежности..Однако.только.одна.из.них.может.быть.ведущей.репликой.раз- дела,.и.вся.генерация.и.потребление.выполняются.на.соответствующем.брокере..
    Эта.реплика.определяется.внутри.Kafka.как.первая.согласованная.в.списке.реплик,.
    но.в.случае.останова.и.перезапуска.брокера.не.становится.автоматически.ведущей.
    для.каких-либо.разделов.
    Автоматическое перераспределение ведущих реплик
    Существует настройка брокера для автоматического перераспределения ведущих реплик, но использовать ее при промышленной эксплуатации не рекомендуется.
    Модуль автоматической балансировки серьезно влияет на производительность и может привести к длительной приостановке трафика клиента, если кластеры большие.
    Один.из.способов.вернуть.брокерам.статус.ведущих.—.инициировать.выбор.пред- почтительной.ведущей.реплики..При.этом.контроллер.кластера.выбирает.опти- мальные.ведущие.реплики.для.разделов..Обычно.эта.операция.не.влияет.на.про- изводительность,.так.как.у.клиентов.есть.возможность.следить.за.сменой.ведущей.
    реплики.автоматически..Инициировать.эту.операцию.вручную.можно.с.помощью.
    утилиты.
    kafka-preferred-replica-election.sh
    Например,.запустим.выбор.предпочтительной.ведущей.реплики.для.всех.тем.кла- стера.с.одной.темой.из.восьми.разделов:
    # kafka-preferred-replica-election.sh --zookeeper zoo1.example.com:2181/kafka-cluster
    Successfully started preferred replica election for partitions
    Set([my-topic,5], [my-topic,0], [my-topic,7], [my-topic,4],
    [my-topic,6], [my-topic,2], [my-topic,3], [my-topic,1])
    #
    Если.число.разделов.у.кластеров.велико,.запуск.отдельной.процедуры.выбора.
    предпочтительной.ведущей.реплики.может.завершиться.неудачей..Запрос.должен.
    быть.записан.в.z-узел.(znode).ZooKeeper.в.метаданных.кластера,.и.если.его.размер.
    превышает.размер.z-узла.(по.умолчанию.1.Мбайт),.то.произойдет.ошибка..В.этом.
    случае.необходимо.создать.файл.с.JSON-объектом,.содержащим.список.разделов,.
    и.разбить.запрос.на.несколько.шагов..Формат.для.этого.JSON-файла.следующий:
    {
    "partitions": [
    {
    "partition": 1,
    "topic": "foo"
    },

    Управление разделами 227
    {
    "partition": 2,
    "topic": "foobar"
    }
    ]
    }
    Например,.инициируем.выбор.предпочтительной.ведущей.реплики.с.заданным.
    списком.разделов,.находящимся.в.файле.
    partitions.json
    :
    # kafka-preferred-replica-election.sh --zookeeper zoo1.example.com:2181/kafka-cluster --path-to-json-file partitions.json
    Successfully started preferred replica election for partitions
    Set([my-topic,1], [my-topic,2], [my-topic,3])
    #
    Смена реплик раздела
    Время.от.времени.возникает.необходимость.изменить.распределение.реплик.для.
    раздела..Вот.несколько.примеров.таких.случаев.
    ‰
    ‰
    Разделы.темы.не.сбалансированы.в.масштабах.кластера,.что.приводит.к.не- равномерной.нагрузке.брокеров.
    ‰
    ‰
    Один.из.брокеров.отключился,.и.раздел.недореплицирован.
    ‰
    ‰
    Был.добавлен.новый.брокер,.и.ему.необходимо.выделить.часть.нагрузки.кла- стера.
    Для.выполнения.этой.операции.можно.воспользоваться.утилитой.
    kafka-reassign- partitions.sh
    ..Ее.необходимо.использовать.как.минимум.в.два.этапа..На.первом.
    этапе.на.основе.списка.брокеров.и.тем.генерируется.набор.перемещений,.выпол- няемых.на.втором.этапе..Существует.также.необязательный.третий.этап,.на.кото- ром.сгенерированный.список.используется.для.проверки.степени.завершенности.
    перераспределений.разделов.
    Для.генерации.набора.перемещений.разделов.необходимо.создать.файл.с.JSON- объектом,.содержащим.список.тем..Формат.JSON-объекта.следующий.(номер.
    версии.в.настоящий.момент.всегда.равен.1):
    {
    "topics": [
    {
    "topic": "foo"
    },
    {
    "topic": "foo1"
    }
    ],
    "version": 1
    }

    228 Глава 9 • Администрирование Kafka
    Например,.сгенерируем.перемещения.разделов,.чтобы.перенести.перечисленные.
    в.файле.
    topics.json
    .разделы.на.брокеры.с.идентификаторами.0.и.1:
    # kafka-reassign-partitions.sh --zookeeper zoo1.example.com:2181/kafka-cluster --generate
    --topics-to-move-json-file topics.json --broker-list 0,1
    Current partition replica assignment
    {"version":1,"partitions":[{"topic":"my-topic","partition":5,"replicas":[0,1]},
    {"topic":"my-topic","partition":10,"replicas":[1,0]},{"topic":"my-topic",
    "partition":1,"replicas":[0,1]},{"topic":"my-topic","partition":4,"replicas":[1,0]},
    {"topic":"my-topic","partition":7,"replicas":[0,1]},{"topic":"my-topic",
    "partition":6,"replicas":[1,0]},{"topic":"my-topic","partition":3,"replicas":[0,1]},
    {"topic":"my-topic","partition":15,"replicas":[0,1]},{"topic":"my-topic",
    "partition":0,"replicas":[1,0]},{"topic":"my-topic","partition":11,"replicas":
    [0,1]},{"topic":"my-topic","partition":8,"replicas":[1,0]},{"topic":"my-topic",
    "partition":12,"replicas":[1,0]},{"topic":"my-topic","partition":2,"replicas":
    [1,0]},{"topic":"my-topic","partition":13,"replicas":[0,1]},{"topic":"my-topic",
    "partition":14,"replicas":[1,0]},{"topic":"my-topic","partition":9,"replicas":
    [0,1]}]}
    Proposed partition reassignment configuration
    {"version":1,"partitions":[{"topic":"my-topic","partition":5,"replicas":[0,1]},
    {"topic":"my-topic","partition":10,"replicas":[1,0]},{"topic":"my-topic",
    "partition":1,"replicas":[0,1]},{"topic":"my-topic","partition":4,"replicas":[1,0]},
    {"topic":"my-topic","partition":7,"replicas":[0,1]},{"topic":"my-topic",
    "partition":6,"replicas":[1,0]},{"topic":"my-topic","partition":15,"replicas":[0,1]},
    {"topic":"my-topic","partition":0,"replicas":[1,0]},{"topic":"my-topic",
    "partition":3,"replicas":[0,1]},{"topic":"my-topic","partition":11,"replicas":[0,1]},
    {"topic":"my-topic","partition":8,"replicas":[1,0]},{"topic":"my-topic",
    "partition":12,"replicas":[1,0]},{"topic":"my-topic","partition":13,"replicas":
    [0,1]},{"topic":"my-topic","partition":2,"replicas":[1,0]},{"topic":"my-topic",
    "partition":14,"replicas":[1,0]},{"topic":"my-topic","partition":9,
    "replicas":[0,1]}]}
    #
    Список.брокеров.задается.через.командную.строку.утилиты.в.виде.разделенного.
    запятыми.списка.идентификаторов.брокеров..В.результате.утилита.выведет.в.стан- дартный.поток.вывода.два.JSON-объекта.с.описанием.текущего.распределения.
    разделов.для.тем.и.предлагаемого.распределения..Формат.этих.JSON-объектов:.
    {"partitions":
    [{"topic":
    "my-topic",
    "partition":
    0,
    "replicas":
    [1,2]
    }],
    "version":_1_}
    Первый.JSON-объект.имеет.смысл.сохранить.на.случай.необходимости.возврата.
    к.прежнему.распределению..Второй.JSON-объект.—.с.предлагаемым.распределе- нием.—.необходимо.сохранить.в.новый.файл..Этот.файл.затем.передается.обратно.
    утилите.
    kafka-reassign-partitions.sh
    .для.второго.этапа.
    Например,.выполните.предлагаемое.перераспределение.разделов.из.файла.
    reassign.json
    :
    # kafka-reassign-partitions.sh --zookeeper zoo1.example.com:2181/kafka-cluster --execute
    --reassignment-json-file reassign.json

    Управление разделами 229
    Current partition replica assignment
    {"version":1,"partitions":[{"topic":"my-topic","partition":5,"replicas":[0,1]},
    {"topic":"my-topic","partition":10,"replicas":[1,0]},{"topic":"my-topic",
    "partition":1,"replicas":[0,1]},{"topic":"my-topic","partition":4,"replicas":
    [1,0]},{"topic":"my-topic","partition":7,"replicas":[0,1]},{"topic":
    "my-topic","partition":6,"replicas":[1,0]},{"topic":"my-topic","partition":3,
    "replicas":[0,1]},{"topic":"my-topic","partition":15,"replicas":[0,1]},{"topic":
    "my-topic","partition":0,"replicas":[1,0]},{"topic":"my-topic","partition":11,
    "replicas":[0,1]},{"topic":"my-topic","partition":8,"replicas":[1,0]},{"topic":
    "my-topic","partition":12,"replicas":[1,0]},{"topic":"my-topic","partition":2,
    "replicas":[1,0]},{"topic":"my-topic","partition":13,"replicas":[0,1]},
    {"topic":"my-topic","partition":14,"replicas":[1,0]},{"topic":"my-topic",
    "partition":9,"replicas":[0,1]}]}
    Save this to use as the --reassignment-json-file option during rollback
    Successfully started reassignment of partitions {"version":1,"partitions":
    [{"topic":"my-topic","partition":5,"replicas":[0,1]},{"topic":"my-topic",
    "partition":0,"replicas":[1,0]},{"topic":"my-topic","partition":7,"replicas":
    [0,1]},{"topic":"my-topic","partition":13,"replicas":[0,1]},{"topic":
    "my-topic","partition":4,"replicas":[1,0]},{"topic":"my-topic","partition":12,
    "replicas":[1,0]},{"topic":"my-topic","partition":6,"replicas":[1,0]},{"topic":
    "my-topic","partition":11,"replicas":[0,1]},{"topic":"my-topic","partition":10,
    "replicas":[1,0]},{"topic":"my-topic","partition":9,"replicas":[0,1]},{"topic":
    "my-topic","partition":2,"replicas":[1,0]},{"topic":"my-topic","partition":14,
    "replicas":[1,0]},{"topic":"my-topic","partition":3,"replicas":[0,1]},{"topic":
    "my-topic","partition":1,"replicas":[0,1]},{"topic":"my-topic","partition":15,
    "replicas":[0,1]},{"topic":"my-topic","partition":8,"replicas":[1,0]}]}
    #
    Эта.команда.запустит.перераспределение.заданных.реплик.разделов.по.новым.
    брокерам..Контроллер.кластера.выполняет.это.действие.посредством.добавления.
    новых.реплик.в.список.реплик.каждого.из.разделов,.увеличивая.коэффициент.
    репликации..После.этого.новые.реплики.копируют.все.существующие.сообщения.
    для.всех.разделов.с.текущей.ведущей.реплики..В.зависимости.от.размера.разделов.
    на.диске.эта.операция.может.занять.немало.времени,.так.как.возникают.затраты.
    на.копирование.данных.по.сети.в.новые.реплики..После.завершения.репликации.
    контроллер.удаляет.старые.реплики.из.списка.реплик,.уменьшая.коэффициент.
    репликации.до.первоначального.значения.
    Повышение эффективности использования сети
    при переназначении реплик
    При удалении множества разделов с отдельного брокера, например, при удалении этого брокера из кластера, рекомендуется останавливать и перезапускать брокер перед началом переназначения. Это приведет к тому, что ведущими репликами для находящихся на этом брокере разделов станут другие брокеры кластера
    (если не включена возможность автоматического выбора ведущей реплики).
    Это значительно повышает производительность выполнения переназначений и снижает влияние на кластер, поскольку связанный с репликацией трафик будет распределяться по нескольким брокерам.

    230 Глава 9 • Администрирование Kafka
    Во.время.выполнения.переназначения.и.после.его.завершения.можно.использовать.
    утилиту.
    kafka-reassign-partitions.sh
    .для.проверки.состояния.переназначе- ния..Это.позволит.выяснить,.сколько.переназначений.выполняется.в.настоящий.
    момент,.какие.из.них.были.завершены.и.какие.завершились.неудачей.в.случае.
    возникновения.ошибок..Для.этого.у.вас.должен.быть.файл.с.JSON-объектом,.за- действованным.на.этапе.выполнения.
    Например,.проверим.состояние.выполняющегося.переназначения.разделов.из.
    файла.
    reassign.json
    :
    # kafka-reassign-partitions.sh --zookeeper zoo1.example.com:2181/kafka-cluster --verify
    --reassignment-json-file reassign.json
    Status of partition reassignment:
    Reassignment of partition [my-topic,5] completed successfully
    Reassignment of partition [my-topic,0] completed successfully
    Reassignment of partition [my-topic,7] completed successfully
    Reassignment of partition [my-topic,13] completed successfully
    Reassignment of partition [my-topic,4] completed successfully
    Reassignment of partition [my-topic,12] completed successfully
    Reassignment of partition [my-topic,6] completed successfully
    Reassignment of partition [my-topic,11] completed successfully
    Reassignment of partition [my-topic,10] completed successfully
    Reassignment of partition [my-topic,9] completed successfully
    Reassignment of partition [my-topic,2] completed successfully
    Reassignment of partition [my-topic,14] completed successfully
    Reassignment of partition [my-topic,3] completed successfully
    Reassignment of partition [my-topic,1] completed successfully
    Reassignment of partition [my-topic,15] completed successfully
    Reassignment of partition [my-topic,8] completed successfully
    #
    1   ...   24   25   26   27   28   29   30   31   ...   39


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