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代码
- bin/zookeeper-server-start.sh config/zookeeper.properties &
&是为了能退出命令行
启动Kafka server:
Shell代码
- bin/kafka-server-start.sh config/server.properties &
停止Kafka server
Shell代码
- bin/kafka-server-stop.sh
停止Zookeeper server:
Shell代码
- bin/zookeeper-server-stop.sh
4. 单机连通性测试
运行producer:
Shell代码
- bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
早版本的Kafka,--broker-list localhost:9092需改为--zookeeper localhost:2181
运行consumer:
Shell代码
- 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代码
- bin/kafka-console-producer.sh --broker-list 192.168.1.10:9092 --topic test
Shell代码
- bin/kafka-console-consumer.sh --zookeeper 192.168.1.10:2181 --topic test --from-beginning
在producer的console端输入字符串,consumer报Connection refused错误:

broker, producer和consumer都注册到zookeeper上,producer和consumer的参数明确指定。问题出在broker的配置文件server.properties上:
Properties代码
- # Hostname the broker will bind to. If not set, the server will bind to all interfaces
- #host.name=localhost
host名称没有指定,就是127.0.0.1,consumer去broker拿数据就有问题。设置为192.168.1.10,重启服务就好了。