Kafka Connect: JDBC Source Connector: создайте тему с несколькими разделами - PullRequest
0 голосов
/ 13 февраля 2019

Я создал пример данных опроса конвейера из MySQL и записал их в HDFS (в том числе в таблицу кустов).

В связи с моими требованиями мне нужно создать пару Source + Connector для каждой таблицы базы данных.После того, как я опубликовал параметры конфигурации для моего соединителя источника и приемника.

Я вижу, что тема создана с одним разделом и с коэффициентом репликации 1.

Создание темы должно быть автоматическим, значитЯ не могу создать темы вручную перед созданием пары «Источник + приемник».

Мои вопросы:

1) Есть ли способ настроить количество разделов и коэффициент репликации при создании соединителя источника?

2) Если возможно создать несколько разделов, какую стратегию разделения использует Исходный соединитель?

3) Какое правильное количество рабочих должно быть создано для Соединителей источника и приемника?

Разъем источника:

{
  "connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
  "mode": "timestamp+incrementing",
  "timestamp.column.name": "modified",
  "incrementing.column.name": "id",
  "topic.prefix": "jdbc_var_cols-",
  "tasks.max": "1",
  "poll.interval.ms": "1000",
  "query": "SELECT id,name,email,department,modified FROM test",
  "connection.url": "jdbc:mariadb://127.0.0.1:3306/connect_test?user=root&password=confluent"
}

Разъем раковины:

{
  "connector.class": "io.confluent.connect.hdfs.HdfsSinkConnector",
  "topics.dir": "/user/datalake/topics-hive-var_cols3",
  "hadoop.conf.dir": "/tmp/quickstart/hadoop/conf",
  "flush.size": "5",
  "schema.compatibility": "BACKWARD",
  "connect.hdfs.principal": "datalake@MYREALM.LOCAL",
  "connect.hdfs.keytab": "/tmp/quickstart/datalake.keytab",
  "tasks.max": "3",
  "topics": "jdbc_var_cols-",
  "hdfs.url": "hdfs://mycluster:8020",
  "hive.database": "kafka_connect_db_var_cols3",
  "hdfs.authentication.kerberos": "true",
  "rotate.interval.ms": "1000",
  "hive.metastore.uris": "thrift://hive_server:9083",
  "hadoop.home": "/tmp/quickstart/hadoop",
  "logs.dir": "/logs",
  "format.class": "io.confluent.connect.hdfs.avro.AvroFormat",
  "hive.integration": "true",
  "hdfs.namenode.principal": "nn/_HOST@MYREALM.LOCAL",
  "hive.conf.dir": "/tmp/quickstart/hadoop/conf"
}

1 Ответ

0 голосов
/ 17 февраля 2019

1) Есть ли способ настроить количество разделов и коэффициент репликации при создании исходного соединителя?

Не из Connect, нет.

Звучит так, будто у вас в брокере включено автоматическое создание тем, поэтому он использует значения по умолчаниюВ идеале это должно быть отключено в производственной среде, и поэтому вы должны создавать темы заранее.

Какую стратегию разделения использует Source Connector?

Зависит от того, какой Connector и как написан код (т. Е. Если / как он генерирует ключ Record),Скажем, например, с соединителем JDBC ключ может быть первичным ключом вашей таблицы базы данных.Это было бы хэшировано с использованием DefaultPartitioner.Я не верю, что Connect позволяет указывать пользовательский разделитель на уровне каждого соединителя.Если бы ключи были нулевыми, то сообщения были бы распределены по всем разделам.

3) Какое правильное количество рабочих должно быть создано для соединителей источника и приемника?

Опять же, зависит от источника.Для JDBC у вас будет одна задача на таблицу.

Для приемников, однако, задачи могут быть только до количества разделов для топиков (как и для всех групп потребителей).


Кроме того, обычно вы запускаете кластер Connect отдельно от базы данных (и кластера Hadoop)

...