云服务器搭建kafka的坑

集群配置

三台云主机搭建hadoop集群,zookeeper服务、Hbase、kafka。

节点 服务
node002 namenode,datanode,zkFC,zookeeper,HMaster ,HRegionServer,kafka Server
node003 namenode,datanode,zkFC,zookeeper,HMaster ,HRegionServer,Kafka Producter
node004 ,datanode,zookeeper,kafka ,HMaster ,HRegionServer,Kafka Consumer

kafka Server 启动内存最高256,最低128,Producter与Consumer都是128M这样分配下来2G内存只剩下了500m左右,因为后面还要启动sparkStructed Streaming。

kafka 配置

安装

因为前面搭建hadoop,hbase,hive吃过不少版本兼容的亏,所以在下载前确定了一下当前的版本。因为kafka主要是搭配sparkSQL使用,所以首先通过spark的兼容,打开github的spark项目的pom文件得到看到kafka的版本<external/kafka-0-10-token-provider external/kafka-0-10 external/kafka-0-10-assembly external/kafka-0-10-sql 2.3.0>
在maven找到这个包得到这个版本kafka-0-10_2.11

  • 在三台云主机下载压缩包wget https://archive.apache.org/dist/kafka/0.10.2.2/kafka_2.11-0.10.2.2.tgz
    node002作为server,node003作为生产者,node004作为消费者。
  • 解压文件后根据内存情况分别设置bin目录下的kafka-server-start.sh,kafka-topics.sh,kafka-console-consumer.sh,kafka-console-producer.sh的KAFKA_HEAP_OPTS值
  • 设置服务器配置文件,config/server.properties
broker.id=0
listeners=PLAINTEXT://0.0.0.0:9092 //0表示接收任何的ip
advertised.host.name=云服务器公网弹性IP//必要设置
advertised.port=9092
zookeeper.connect=0.0.0.0:2181,node003:2181,node004:2181
//zookeeper在配置的时候,本机的地址是要用0.0.0.0去替代弹性公网IP地址
  • 启动kafka服务器,因为zookeeper集群已经正常搭建运行所以不需要运行kafka自带的zookeep-erserver,后面一串表示后台
    bin/kafka-server-start.sh config/server.properties
    服务器启动默认前台执行,如果上面启动成功可以退出重新执行
    bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 &
  • 创建topic,随便在哪个节点创建都可以,因为这个topic metadata是通过zookeeper来同步
    bin/kafka-topic.sh --create --zookeeper node002:2181 --replication-factor 1 --partitions 1 --topic test
    zookeeper节点可以是任何一个,上面的参数不能省略,省略会出现提示 一个备份一个分区
    -查看topic
    kafka-topic.sh --list --zookeeper node003:2181
    -生产消息
    bin/kafka-console-producer.sh --broker-list node002:9092 --topic test
    这里的node002域名实际转换后就是node002的公网IP,回车之后可以输入一些信息
    -消费消息
    bin/kafka-console-consumer.sh --bootstrap-server node002:9092 --topic test --from-beginning
    回车收到producter发送的消息

可能的错误

Failed to update metadata

ERROR Error when sending message to topic test with key: null, value: 7 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.

可能的原因:

  1. –bootstrap-sever hostname/port错误
  2. 服务器的server.properties配置错误

xxxxhas passed since batch creation plus linger time

server.properties没有设置
advertised.host.name=云服务器公网弹性IP//必要设置
advertised.port=9092

你可能感兴趣的:(云服务器搭建kafka的坑)