我在一台主机上安装了vertica 9.3,在第二台主机上安装了apache kafka,我想把vertica和apache kafka(2.4.0)整合起来。我想把vertica和apache kafka(2.4.0)整合起来。我按照官方的vertica指南进行了配置,但是,当我尝试制作源码时,我得到错误信息:"vertica与apache kafka(2.4.0)集成"。
vkconfig source --create --cluster kafka_weblog --source test --partitions 1 --conf /opt/vertica/packages/kafka/config/my.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_3_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_3_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_3_1-x_grader/build/udx/supported/kafka/KafkaUtil.cpp:163], error code: 0, message: Error getting metadata: [Local: Broker transport failure]
如果我显示表 weblog_sched.stream_clusters
,那么就有 localhost:9092
列中的hosts,但不是我的kafka服务器的ip-address (192.168.0.8
),尽管我在创建集群时指定了kafka服务器的地址。
vkconfig cluster --create --cluster kafka_weblog --hosts 192.168.0.8:9092 --conf /opt/vertica/packages/kafka/config/my.conf
为什么会这样?(我认为,这个错误是与在 weblog_sched.stream_clusters
)
有几个方法可以调试这个问题。
试试 telnet 192.168.0.8 9092
. 如果你能够通过telnet连接,那么这个端口是开放的,Kafka正在运行,并且可以从你执行telnet命令的地方访问。如果你不能通过telnet连接,那么你可以试试这个。
iptables -A INPUT -p tcp --dport 9092 -j ACCEPT
检查你的 advertised.listeners
经纪人配置。确保您已将其设置为 PLAINTEXT://192.168.0.8:9092
如果你使用的是PLAINTEXT)。这很可能会解决你的问题。
请确保将Kafka主机添加在 /etc/hosts
文件的Vertica Cluster。这个问题应该可以解决。如果是这种情况,那么这意味着您的 advertised.listeners
已被错误配置。
硬编码的主机在 /etc/hosts
绝对不是最好的方法。你必须修复你的 advertised.listeners
作为一个更持久的解决方案。