1、下载
选择Binary downloads下载 (Source download需要编译才能使用)
2、安装
tar -xzvf kafka_2.11-0.9.0.1.tgzmv kafka_2.11-0.9.0.1 /opt/
3. 配置环境变量(可选)
将kafka_2.11-0.9.0.1/bin添加到path,以方便访问
vi /etc/profile
在末尾添加:
KAFKA_HOME=/opt/kafka_2.11-0.9.0.1PATH=$PATH:$KAFKA_HOME/bin
4. 修改配置文件
cd /opt/kafka_2.11-0.9.0.1/configvi server.properties
修改配置文件中的以下内容:
broker.id=0 //为依次增长的:0、1、2、3、4,集群中唯一id
listeners=PLAINTEXT://172.16.49.173:9092log.dirs=/opt/kafka_2.11-0.9.0.1/logs //日志地址zookeeper.connect=master:2181,slave1:2181,slave2:2181 //zookeeperServers列表,各节点以逗号分开
备注:listeners一定要配置成为IP地址;如果配置为localhost或服务器的hostname,在使用java发送数据时就会抛出异 常:org.apache.kafka.common.errors.TimeoutException: Batch Expired 。因为在没有配置advertised.host.name 的情况下,Kafka并没有像官方文档宣称的那样改为广播我们配置的host.name,而是广播了主机配置的hostname。远端的客户端并没有配置 hosts,所以自然是连接不上这个hostname的

5. 启动和停止

启动Zookeeper server:
Shell代码  
  1. bin/zookeeper-server-start.sh config/zookeeper.properties & 
&是为了能退出命令行

启动Kafka server:
Shell代码  
  1. bin/kafka-server-start.sh config/server.properties & 
停止Kafka server
Shell代码  
  1. bin/kafka-server-stop.sh 
停止Zookeeper server:
Shell代码  
  1. bin/zookeeper-server-stop.sh 
4. 单机连通性测试

运行producer:
Shell代码  
  1. bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 
早版本的Kafka,--broker-list localhost:9092需改为--zookeeper localhost:2181

运行consumer:
Shell代码  
  1. bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning  
在producer端输入字符串并回车,查看consumer端是否显示。

6. 分布式连通性测试

Zookeeper Server, Kafka Server, Producer都放在服务器server1上,ip地址为192.168.1.10
Consumer放在服务器server2上,ip地址为192.168.1.12。

分别运行server1的producer和server2的consumer,
Shell代码  
  1. bin/kafka-console-producer.sh --broker-list 192.168.1.10:9092 --topic test 
Shell代码  
  1. bin/kafka-console-consumer.sh --zookeeper 192.168.1.10:2181 --topic test --from-beginning  
在producer的console端输入字符串,consumer报Connection refused错误:
kafka搭建
broker, producer和consumer都注册到zookeeper上,producer和consumer的参数明确指定。问题出在broker的配置文件server.properties上:
Properties代码  
  1. # Hostname the broker will bind to. If not set, the server will bind to all interfaces  
  2. #host.name=localhost  

host名称没有指定,就是127.0.0.1,consumer去broker拿数据就有问题。设置为192.168.1.10,重启服务就好了。

相关文章:

  • 2022-02-07
  • 2022-02-07
  • 2022-12-23
  • 2022-02-07
  • 2022-02-07
  • 2021-06-11
  • 2022-12-23
  • 2021-11-19
猜你喜欢
  • 2021-12-07
  • 2021-11-30
  • 2022-02-09
  • 2021-06-10
  • 2021-10-22
  • 2021-06-02
相关资源
相似解决方案