kafka零基础学习笔记一
这是一篇学习过程遇到的问题笔记!希望大牛指点。
零基础学习kafka推荐看下这篇文章:KAFKA官方零基础入门中文版,转载自并发编程网 – ifeve.com
kafka下载
当然是官网:http://kafka.apache.org/
打开官网以后,找到下载页面,会看到下边这样。
箭头所指是源码压缩包,建议抽时间瞅一瞅,据说高手都是这么来的。下边的Binary downloads是kafka二进制压缩包,这才是我们需要在开发、生产环境会用到的。截止当前发稿时间,有两个版本:Scala 2.11和2.12,有什么区别呢,先不用管,看到下边红框里的should work(2.1),对,这个就是官方建议的工作环境中使用的版本,就下这个。
关于命令
入门文章的“1.3快速开始”章节中有这样一句话:“在Windows平台上使用bin\windows\,而不是bin/,并修改脚本扩展为.bat”。意思是说:如果你是unix系统,可以直接复制命令来用,如果是windows,那么你需要把“bin/命令”换成“bin\windows\”命令,而不是就一个bin就拉倒了。还要把“.sh”换成“.bat”。
例如:unix的命令是:
> bin/zookeeper-server-start.sh config/zookeeper.properties
在windows中使用这个命令,替换后的
> bin\windows\zookeeper-server-start.bat config\zookeeper.properties
这里要说明一下(懒得开虚拟机,所以直接windows平台上干的):
这个命令怎么用?例如我下载的二进制源码压缩包,解压后的路径是:G:\Learn\kafka\kafka_2.11-1.1.0,那么我的命令控制塔就进入到kafka_2.11-1.1.0这个文件夹这一层就OK了,这是个根目录。如下:
为什么要加个windows?
打开下载的压缩包,找到bin文件夹,会发现bin文件夹中还有个windows文件夹,在windows系统中,主要用到的是这个文件夹里的文件。
命令中localhost关键词的用法
命令中,能用ip地址的地方,尽量不要用,尽量不要用,尽量不要用localhost,可能会出错,而且你都不知道问题在哪里!例如:
创建一个话题的命令:
bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
这个命令中,用localhost可以正常执行。
但是,将收到的消息输出到标准输出命令,用localhost就会出错,例如如下命令:
bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning
报错如下:
修正后的命令如下:
bin\windows\kafka-console-consumer.bat --bootstrap-server 192.168.2.xxx:9092 --topic test --from-beginning
关于启动
错误1:启动kafka的时候报如下错误:
原因:是因为最新的kafka版本,需要1.8的JDK,而我本机查看目前是1.6。
错误2:如果启动kafka服务的时候报拒绝链接的错,如下
问题:
1、zookeeper没有启动
2、kafka的server.properties文件中,没有配置主机ip,配置后如下:
该ip是kafka服务所在主机的ip。
3、zookeeper的ticketTime、minSessionTimeout、maxSessionTimeout分配的时间太少。
如果这些都解决了,基本上在本机可以用控制台正常测试通生产者和消费者了。