【发布时间】:2019-06-16 22:44:19
【问题描述】:
我有三个物理节点,每个节点都安装了 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 文件夹中使用 2186,2889,3889 等新端口配置 Zookeeper。但是当我用这个命令运行 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(Native Method)
在 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 地址的容器。
任何帮助将不胜感激。
【问题讨论】:
-
如果你有 Hadoop,那么你就会有 YARN,它也可以运行容器,所以你不需要 Mesos/Marathon
-
亲爱的@cricket_007,我选择了Mesos,因为它比Yarn有更多的功能。
标签: docker apache-kafka apache-zookeeper