kafka启动报错记录:Connection to node 0 could not be established. Broker may not be available.

环境说明:

CentOS Linux release 7.4.1708 (Core)
Linux内核:3.10.0-693.el7.x86_64
java: openjdk version “1.8.0_181”
kafka: kafka_2.11-2.0.0
zookeeper: zookeeper-3.4.10

操作流程:

  1. 首先启动zookeeper(使用默认配置)

    #首先要进入zookeeper根目录
    bin/zkServer.sh start
    

    上面启动正常。

  2. 再启动kafka(使用默认配置)

    #首先要进入kafka根目录
    bin/kafka-server-start.sh config/server.properties
    

    发现有警告:

    WARN [Controller id=0, targetBrokerId=0] Connection to node 0 could not be established. Broker may  not be available. (org.apache.kafka.clients.NetworkClient)
    

    对于第一次用这个kafka的我来说,不懂。 然后有人说看下controller的日志(kafka_2.11-2.0.0/logs/controller.log),发现有报错:

    WARN [RequestSendThread controllerId=0] Controller 0's connection to broker   www.gl.com:9092 (id: 0 rack: null) was unsuccessful (kafka.controller.RequestSendThread)
    java.io.IOException: Connection to www.gl.com:9092 (id: 0 rack: null) failed.
        at  org.apache.kafka.clients.NetworkClientUtils.awaitReady(NetworkClientUtils.java:70)
        at kafka.controller.RequestSendThread.brokerReady(ControllerChannelManager.scala:279)
        at kafka.controller.RequestSendThread.doWork(ControllerChannelManager.scala:233)
        at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:82)
    

    我什么都没配置怎么有一个www.gl.com?后来发现, 自己在安装系统的时候, 有设置系统的域名为gl.com(可用hostname命令查看本地域名)。

    $ hostname
    gl.com
    

    理解应该是对kafka使用默认配置启动,它会读到本机的主机信息为gl.com, 但是为什么多了个www就不知道了,希望有同学能解惑。

    怎么解决呢?想到之前自己为了做实验,在hosts文件中添加过www.gl.com, 不知道和上面的报错有没有关系。
    打开/etc/hosts文件

    127.0.0.1    localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1          localhost localhost.localdomain localhost6 localhost6.localdomain6
    

    改成(注意每个后面多了 gl.com,其实只给第一行加也可以的):

    127.0.0.1    localhost localhost.localdomain localhost4 localhost4.localdomain4 gl.com
    ::1          localhost localhost.localdomain localhost6 localhost6.localdomain6 gl.com
    

    然后使用默认启动就不报错了。

  3. 测试
    可以来测试下kafka能不能正常工作(在kafka根目录执行):可以来测试下kafka能不能正常工作(在kafka根目录执行):

        # 创建topic, 名称为testTopic
        bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testTopic
    
        # 查看topic(会发现除了testTopic,还有KafkaPushsTopic
        bin/kafka-topics.sh --list --zookeeper localhost:2181
    
        # 启动消费者(Consumer, 发现“卡住了”,其实它是在等消息,不要关这个窗口)
        bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testTopic --from-beginning
    
        # 启动生产者(Producer, 新窗口启动)
        bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testTopic
    

    启动生产者后发现进入了交互模式,这时就可以发消息了。
    截图如下:

    kafka启动报错记录:Connection to node 0 could not be established. Broker may not be available._第1张图片

    参考:
    http://kafka.apache.org/quickstart

    欢迎补充指正!

你可能感兴趣的:(大数据)