前面说过Kafka集群环境的部署,现在主要说一下在本地测试中Kafka单机环境的部署,和前面一样首先保证zookeeper服务的正常运行,然后解压并释放kafka安装包,并放到指定位置:
tar -xvzf kafka_2.9.2-0.8.2.2.tar.gz mkdir /usr/kafka mv kafka_2.9.2-0.8.2.2 /usr/kafka/ cd /usr/kafka/kafka_2.9.2-0.8.2.2
现在开始编辑配置文件server.properties,执行命令: vim config/server.properties 打开配置文件
首先去掉#host.name=localhost前面的注释,这个开发过程中可以填写集群主机名或者IP地址,有很多错误就是因为这里被注释导致的,建议单机环境一定去掉注释根据情况配置;集群中一般根据zookeeper.connect识别,所以此项可以配置也可以忽略
然后之前集群部署中曾经修改过borker.id,port这里不用动,都是默认即可,修改一下log.dirs放到/usr/kafka/logs目录中,这个可以自己指定
logs目录我们后来需要手动创建,然后log.cleaner.enable要改为true,表示自动清理日志
然后修改zookeeper.connect为localhost:2181/kafka,默认是localhost:2181,这样会在zookeeper上直接创建kafka对应文件,这里加上/kafka和之前一样,表示在zookeeper上创建kafka节点,把kafka相关文件都放在localhost:2181/kafka节点下
到现在,基本的配置就完成了,现在保存并退出配置文件
然后创建logs日志目录: mkdir /usr/kafka/logs ,创建目录之后,开始启动kafka服务:
nohup bin/kafka-server-start.sh config/server.properties >> /dev/null &
上面代码hohup代表把任务放到后台作为服务运行,有些脚本不像之前的二进制程序一样可以一直跑在服务器上,虽然后面加上&表示在后台运行,但是一段时间后可能会退出,nohup可以让程序一直跑在后台,输入以上命令后命令行会卡住,然后需要再次输入一次回车回到命令行,另外我们退出shell时必须使用logout退出,切不可直接关闭窗口,否则程序也可能异常退出
然后创建一个消息队列:
bin/kafka-topics.sh --create --replication-factor 1 --partitions 1 --topic test --zookeeper localhost:2181/kafka
创建队列的时候,replication-factor只能是1个,因为是单节点,而partitions分区可以是1个或者2个都可以,测试环境建议是1个即可
然后,创建一个消费者:
bin/kafka-console-consumer.sh --zookeeper localhost:2181/kafka --topic test
此时,命令行会进入运行状态,界面就卡住不动了,然后再新建一个窗口,进入kafka目录,继续创建一个生产者:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
同样这个时候命令行进入运行状态,我们输入一个字符串:Hello Kafka!
此时打开刚才创建消费者的窗口,会看到刚才的输入消息被消费了
到现在,Kafka单机消息队列基本的配置和运行都是正常的,单机环境配置基本上就是这些