Разъем Vertica-Kafka vkconfig - PullRequest
       20

Разъем Vertica-Kafka vkconfig

1 голос
/ 23 февраля 2020

Я пытаюсь определить планировщик Vertica-Kafka. Я выполнил первые несколько команд успешно, но не смог выполнить следующую команду:

$ /opt/vertica/packages/kafka/bin/vkconfig source --create --cluster kafka_nms_cluster --source test --partitions 1 --conf /home/vertica/vkconfig/vkconfig.conf

Ошибка, которую я получил

Exception in thread "main" com.vertica.solutions.kafka.exception.ConfigurationException: ERROR: [[Vertica][VJDBC](5861) ERROR: Error calling processPartition() in User Function KafkaListTopics at [/data/qb_workspaces/jenkins2/ReleaseBuilds/Grader/REL-9_2_1-x_grader/build/udx/supported/kafka/KafkaUtil.cpp:163], error code: 0, message: Error getting metadata: [Local: Broker transport failure]]
        at com.vertica.solutions.kafka.model.StreamSource.validateConfiguration(StreamSource.java:248)
        at com.vertica.solutions.kafka.model.StreamSource.setFromMapAndValidate(StreamSource.java:194)
        at com.vertica.solutions.kafka.model.StreamModel.<init>(StreamModel.java:93)
        at com.vertica.solutions.kafka.model.StreamSource.<init>(StreamSource.java:44)
        at com.vertica.solutions.kafka.cli.SourceCLI.getNewModel(SourceCLI.java:62)
        at com.vertica.solutions.kafka.cli.SourceCLI.getNewModel(SourceCLI.java:13)
        at com.vertica.solutions.kafka.cli.CLI.run(CLI.java:59)
        at com.vertica.solutions.kafka.cli.CLI._main(CLI.java:141)
        at com.vertica.solutions.kafka.cli.SourceCLI.main(SourceCLI.java:29)
Caused by: java.sql.SQLNonTransientException: [Vertica][VJDBC](5861) ERROR: Error calling processPartition() in User Function KafkaListTopics at [/data/qb_workspaces/jenkins2/ReleaseBuilds/Grader/REL-9_2_1-x_grader/build/udx/supported/kafka/KafkaUtil.cpp:163], error code: 0, message: Error getting metadata: [Local: Broker transport failure]
        at com.vertica.util.ServerErrorData.buildException(Unknown Source)
        at com.vertica.dataengine.VResultSet.fetchChunk(Unknown Source)
        at com.vertica.dataengine.VResultSet.initialize(Unknown Source)
        at com.vertica.dataengine.VQueryExecutor.readExecuteResponse(Unknown Source)
        at com.vertica.dataengine.VQueryExecutor.handleExecuteResponse(Unknown Source)
        at com.vertica.dataengine.VQueryExecutor.execute(Unknown Source)
        at com.vertica.jdbc.common.SPreparedStatement.executeWithParams(Unknown Source)
        at com.vertica.jdbc.common.SPreparedStatement.executeQuery(Unknown Source)
        at com.vertica.solutions.kafka.model.StreamSource.validateConfiguration(StreamSource.java:227)
        ... 8 more
Caused by: com.vertica.support.exceptions.NonTransientException: [Vertica][VJDBC](5861) ERROR: Error calling processPartition() in User Function KafkaListTopics at [/data/qb_workspaces/jenkins2/ReleaseBuilds/Grader/REL-9_2_1-x_grader/build/udx/supported/kafka/KafkaUtil.cpp:163], error code: 0, message: Error getting metadata: [Local: Broker transport failure]
        ... 17 more

Однако, когда я пытаюсь запустить KafkaListTopics, используя v sql набор результатов показывает тест topi c с 1 разделом.

[root@dal_server1 ~]# /opt/vertica/bin/vsql -U vertica -c "SELECT KafkaListTopics(USING PARAMETERS brokers='10.22.2.38:9092') OVER ();"

       topic        | num_partitions
--------------------+----------------
 __consumer_offsets |             50
 test               |              1
 TutorialTopic      |              1
(3 rows)

Что может быть причиной этой ошибки?

Спасибо Avi

1 Ответ

0 голосов
/ 24 февраля 2020

Возможно, проблема в кластере, который вы создали до того, как попытались создать источник. У меня была такая же проблема при тестировании интеграции Vertica / Kafka, когда у тестового кластера Kafka нет записи DNS, но имя DNS хранится в таблице stream_clsuters.

Запрос к таблице <scheduler_config_schema>.stream_clusters , Если DNS-имя хранится вместо простого IP-адреса, вы можете сделать две вещи:

  1. Выполнить ручное обновление таблицы stream_clusters, чтобы изменить ее на <ip_address>:<port>, если есть только один узел Kafka, или <ip_address1>:<port>,...,<ip_addressN>:<port>, если их несколько.
  2. Или добавьте имя домена к вашему /etc/hosts на всех узлах Vertica

Например, в stream_clusters таблица, вы видите domain_name_1:9092, запустите этот оператор UPDATE:

UPDATE <scheduler_config_schema>.stream_clusters
SET hosts = '10.22.2.38:9092'
WHERE id = <some_id>

Обычно я бы посоветовал НЕ делать какой-либо вид ручного DML для этих таблиц конфигурации планировщика, но я сделал это, указав c обновлять до и это безопасно (особенно в тестировании).

Конечно, в реальной производственной среде кластеры Kafka должны иметь записи DNS в вашей сети, и вам не придется беспокоиться об этой ошибке, но для тестируя с виртуальными машинами или Docker контейнерами, я сталкивался с этим несколько раз, и приведенные выше предложения сделали свое дело.

...