Tag: apache kafka

第二和第三个分布的Kafka Connector工作人员无法正常工作

在Kafka集群3和Zookeeper集群相同的情况下,我创build了一个分布式连接器节点。 使用单个任务成功运行此节点。 然后我提出了第二个连接器,这似乎是运行的任务中的一些代码肯定跑了。 然而,它似乎并没有活下去(尽pipe没有错误抛出,没有保持活着是由缺乏预期的活动,而第一个连接器继续正常运行)。 当我在每个连接器节点上调用URL http://localhost:8083/connectors/mqtt/tasks ,它会告诉我连接器有一个任务。 我期望这是两个任务,每个节点/工作人员一个。 (目前工作人员configuration说tasks.max = 1但我也尝试将其设置为3。 当我尝试启动第三个连接器时,出现错误: "POST /connectors HTTP/1.1" 500 90 5 (org.apache.kafka.connect.runtime.rest.RestServer:60) ERROR IO error forwarding REST request: (org.apache.kafka.connect.runtime.rest.RestServer:241) java.net.ConnectException: Connection refused 试图再次从shell调用连接器POST方法返回错误: {"error_code":500,"message":"IO Error trying to forward REST request: Connection refused"} 我也尝试升级到今天发布的Apache Kafka 0.10.1.1。 我仍然看到问题。 每个连接器都运行在由单个映像定义的独立Docker容器上。 他们应该是相同的。 问题可能是我试图运行POST请求到每个worker上的http://localhost:8083/connectors ,当我只需要在单个worker上运行一次,然后该连接器的任务将自动分发给其他工人。 如果是这种情况,我如何获得分配的任务? 我目前有最多三个,但只有一个似乎是在一个单一的工作人员上运行。 更新 我最终用Yuribuild议的方法运行。 我给每个工人一个唯一的组ID,然后给每个连接器任务相同的名称。 这允许三个连接器和他们的单个任务共享一个偏移量,所以在接收器连接器的情况下,他们从卡夫卡消耗的消息不会被复制。 他们基本上是作为独立的连接器运行,因为工人有不同的组ID,因此不会相互通信。 如果连接器工作人员具有相同的组ID,则不能添加具有相同名称的多个连接器。 […]

在docker中运行的服务不能产生消息给kafka

我有一个rest服务运行在端口5000上的docker容器中,用于通过docker容器运行的kafka主题产生消息。 我已经使用以下属性configuration了我的生产者客户端: bootstrap.servers=localhost:9093 我已经开始我的包含以下命令: docker run -d -p 127.0.0.1:5000:5000 <contained id> 我也做了下面的configuration宣传kafka主机和端口 advertised.host.name=localhost advertised.port=9093 尽pipe当我尝试产生一个kafka话题时,所有的configuration,然后我得到以下错误: – org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms. 有人可以指出实际的问题在哪里?

具有较高CPU使用率的logstash kafkainputfilter

我遇到了一个问题,即kafka logstashpipe道消耗太多cpu(启动时约为300%,几秒钟后达到100%),但基本上可以工作:pipe道可以将事件以kafka的forms传递到elasticsearch,而不会出现错误消息 logstash运行在Docker容器中,并带有最新版本的lostash(2.1.1,从https://hub.docker.com/_/logstash/中拉出)。 docker run –rm –link kafka:kafka –link elasticsearch:elasticsearch -v "$PWD":/config-dir logstash logstash -f /config-dir/logstash-kafka-elasticsearch.conf configuration文件是这样的: input { kafka { topic_id => 'mytopic' zk_connect => 'kafka:2181' } } output { elasticsearch { hosts=> ['elasticsearch:9200'] } stdout { codec => rubydebug } } 我有其他的logstashpipe道工作正常,并且cpu的使用也是正常的(例如一个pipe道使用http中,kafka作为out,占用〜0%cpu)。 我试图注释掉elasticsearch的输出,只留下stdout,问题依然存在,所以弹性search似乎没有问题。 任何机构会提供build议?

如何订购Docker容器的Kafka启动shell脚本?

我正在尝试装入一个Kafka服务器。 Kafka服务器的正常启动顺序如下所示: A: start Zookeeper server B: start Broker server C: create topic 项目A和B是长时间运行的过程。 而C需要等待B来运行。 所以我写了一个Dockerfile, ENTRYPOINT为上面的序列执行一个shell脚本: #!/bin/sh $KAFKA_HOME/bin/zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties & $KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties & $KAFKA_HOME/bin/kafka-topics.sh –create –zookeeper localhost:2181 –replication-factor 1 –partitions 1 –topic test_topic 不过,在运行由此构build的docker镜像时,我遇到了三个问题: Docker需要ENTRYPOINT进程长时间运行,而上面的脚本不需要。 (只要话题创作完成就退出) 代理服务器语句(第二个)是长时间运行的过程。 目前我不得不把它作为后台进程使用结束& ,因为否则后面的语句根本不执行。 (但是使它背景也有问题:主题创build立即执行,而代理服务器还没有准备好。) 我无法将代理服务器语句作为最后一个长时间运行的过程,因为主题创build语句必须在创build服务器之后。 什么可能是安排这个启动序列的一个好方法?