我有三个物理节点,每个节点上都安装了Docker。我已经在每个docker上配置了Marathon,Flink,Mesos,Zookeeper和Hadoop。他们真的很好。我必须将数据分发到Flink集群,所以我需要Kafka。 Zookeeper已经运行;因此,Kafka运行没有错误。问题在于,在这种情况下,当我要创建Kafka主题时,会看到此错误,我认为这是因为我没有运行Kafka文件夹中的Zookeeper:
线程“主”中的异常kafka.zookeeper.ZooKeeperClientTimeoutException:处于状态:CONNECTING时等待连接超时 在kafka.zookeeper.ZooKeeperClient $$ anonfun $ kafka $ zookeeper $ ZooKeeperClient $$ waitUntilConnected $ 1.apply $ mcV $ sp(ZooKeeperClient.scala:230)中 在kafka.zookeeper.ZooKeeperClient $$ anonfun $ kafka $ zookeeper $ ZooKeeperClient $$ waitUntilConnected $ 1.apply(ZooKeeperClient.scala:226) 在kafka.zookeeper.ZooKeeperClient $$ anonfun $ kafka $ zookeeper $ ZooKeeperClient $$ waitUntilConnected $ 1.apply(ZooKeeperClient.scala:226) 在kafka.utils.CoreUtils $ .inLock(CoreUtils.scala:251) 在kafka.zookeeper.ZooKeeperClient.kafka $ zookeeper $ ZooKeeperClient $$ waitUntilConnected(ZooKeeperClient.scala:226) 在kafka.zookeeper.ZooKeeperClient。(ZooKeeperClient.scala:95) 在kafka.zk.KafkaZkClient $ .apply(KafkaZkClient.scala:1580) 在kafka.admin.TopicCommand $ .main(TopicCommand.scala:57) 在kafka.admin.TopicCommand.main(TopicCommand.scala)
此外,我更改了在Kafka文件夹中使用Zookeeper的计划。为此,我在Kafka文件夹中为Zookeeper配置了新端口,例如 2186,2889,3889 。但是当我使用以下命令运行Zookeeper时:
/home/kafka_2.11-2.0.0/bin/zookeeper-server-start.sh /home/kafka_2.11-2.0.0/config/zookeeper.properties
我收到此错误:
WARN无法在选举地址/10.32.0.3:3889(org.apache.zookeeper.server.quorum.QuorumCnxManager)上打开2频道 java.net.ConnectException:连接被拒绝(连接被拒绝) 在java.net.PlainSocketImpl.socketConnect(本机方法)
在java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
在java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
在java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 在java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 在java.net.Socket.connect(Socket.java:589)
在org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:558)
在org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:534)
在org.apache.zookeeper.server.quorum.FastLeaderElection $ Messenger $ WorkerSender.process(FastLeaderElection.java:454)
在org.apache.zookeeper.server.quorum.FastLeaderElection $ Messenger $ WorkerSender.run(FastLeaderElection.java:435) 在java.lang.Thread.run(Thread.java:748)
第一个节点中“ /home/zookeeper-3.4.14/conf/zoo.cfg”中Zookeeper的配置:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/lib/zookeeper/data
clientPort=2181
server.1=0.0.0.0:2888:3888
server.2=10.32.0.3:2888:3888
server.3=10.32.0.4:2888:3888
Kafka文件夹中的Zookeeper配置类似于第一个节点:
dataDir=/tmp/zookeeper/data
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2186
server.1=0.0.0.0:2889:3889
server.2=10.32.0.3:2889:3889
server.3=10.32.0.4:2889:3889
请您指导我如何在一个Docker容器中运行两个Zookeeper?顺便说一下,我不能将另一个容器用于Kafka群集,因为我需要两个具有一个公共IP地址的容器。
任何帮助将不胜感激。
答案 0 :(得分:0)
问题解决了。我使用了上面的配置,但是两个Zookeeper都使用了 dataDir = / var / lib / zookeeper / data 。另外,首先,我运行Hadoop,然后与Zookeeper运行Kafka。