Arhn - архитектура программирования

Интеграция Apache Storm Trident и Kafka Spout

Я не могу найти хорошую документацию для правильной интеграции Kafka с Apache Storm Trident. Я попытался изучить связанные ранее опубликованные здесь вопросы, но не получил достаточной информации.

Я хотел бы связать Trident с Kafka как OpaqueTridentKafkaSpout. Вот пример кода, который в настоящее время работает

GlobalPartitionInformation globalPartitionInformation  = new GlobalPartitionInformation(properties.getProperty("topic", "mytopic"));
Broker brokerForPartition0 = new Broker("IP1",9092);
Broker brokerForPartition1 = new Broker("IP2", 9092);
Broker brokerForPartition2 = new Broker("IP3:9092");

globalPartitionInformation.addPartition(0, brokerForPartition0);//mapping from partition 0 to brokerForPartition0
globalPartitionInformation.addPartition(1, brokerForPartition1);//mapping from partition 1 to brokerForPartition1
globalPartitionInformation.addPartition(2, brokerForPartition2);//mapping from partition 2 to brokerForPartition2
StaticHosts staticHosts = new StaticHosts(globalPartitionInformation);
TridentKafkaConfig tridentKafkaConfig = new TridentKafkaConfig(hosts,properties.getProperty("topic", "mytopic"));
tridentKafkaConfig.scheme = new SchemeAsMultiScheme(new StringScheme());
OpaqueTridentKafkaSpout kafkaSpout = new OpaqueTridentKafkaSpout(tridentKafkaConfig);

Благодаря этому я могу генерировать потоки для своей топологии, как показано в приведенном ниже коде.

TridentTopology topology = new TridentTopology();
Stream analyticsStream  = topology.newStream("spout", kafkaSpout).parallelismHint(Integer.valueOf(properties.getProperty("spout","6")))

Хотя я предоставил параллелизм и свои разделы, работает только 1 исполнитель Kafka Spout, и поэтому я не могу его хорошо масштабировать.

Может ли кто-нибудь помочь мне с лучшими способами интеграции Apache Storm Trident (2.0.0) с Apache Kafka (1.0) с кластером из 3 узлов в каждом?

Кроме того, как только он заканчивает читать из Kafka, я постоянно получаю эти журналы

2018-04-09 14:17:34.119 o.a.s.k.KafkaUtils Thread-15-spout-spout-executor[79 79] [INFO] Metrics Tick: Not enough data to calculate spout lag.  2018-04-09 14:17:34.129 o.a.s.k.KafkaUtils Thread-21-spout-spout-executor[88 88] [INFO] Metrics Tick: Not enough data to calculate spout lag.

И в пользовательском интерфейсе Storm я вижу подтверждения для сообщений выше. Любое предложение игнорировать метрические Ticks?


Ответы:


1

Если вы все равно используете Storm 2.0.0, я думаю, вам следует переключиться на носик storm-kafka-client Trident. Модуль storm-kafka предназначен только для поддержки более старых версий Kafka, поскольку базовый API Kafka (SimpleConsumer) удаляется. Новый модуль поддерживает Kafka начиная с 0.10.0.0 и выше.

Вы можете найти пример топологии Trident для нового стока здесь https://github.com/apache/storm/blob/master/examples/storm-kafka-client-examples/src/main/java/org/apache/storm/kafka/trident/TridentKafkaClientTopologyNamedTopics.java.

13.04.2018
  • Как увеличить параллелизм в Apache Storm, используя тематические разделы Kafka? Я вижу из пользовательского интерфейса, что $spoutcoord-spout всегда назначен 1 исполнитель (хотя у меня есть 5 разделов для этой темы Kafka)? Как увеличить пропускную способность? 17.05.2018
  • Вам действительно следует опубликовать другой вопрос для этого, но я считаю, что установка подсказки параллелизма установит количество задач (и начальных исполнителей). например tridentTopology.newStream("spout", tridentSpout).parallelismHint(2) 17.05.2018
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..