centos6.5下kafka安装与使用
依赖安装
jdk1.7,kafka仅支持1.7。jdk1.8并不支持,这里需要特别注意
安装kafka
下载解压即可(下面我是解压到了’/usr/local’下)
安装zookeeper
同样,解压即可(下面我是解压到了’usr/local’下)
现在我目录的构成是
/usr
--/local
--/kafka
--/zookeeper
配置kafka
进入’/usr/local/kafka/config’下
编辑server.properties
修改下面几项
broker.id=0
port=9092 #端口号
host.name=xx.xx.xx.xx #服务器IP地址,修改为自己的服务器IP
log.dirs=/usr/local/kafka/log/kafka #日志存放路径,上面创建的目录
zookeeper.connect=localhost:2181 #zookeeper地址和端口,单机配置部署,localhost:2181
退出保存
!!日志路径自定义后自行创建
配置kafka下的zookeeper
!!注意此处是配置kafka下的zookeeper,而不是直接配置我们解压的zookeeper
同样进入’/usr/local/kafka/config’下
修改’zookeeper.properties’
dataDir=/usr/local/kafka/zookeeper #zookeeper数据目录
dataLogDir=/usr/local/kafka/log/zookeeper #zookeeper日志目录
clientPort=2181
maxClientCnxns=100
tickTime=2000
initLimit=10
syncLimit=5
配置完成
测试kafka
启动zookeeper
>sh /usr/local/zookeeper/bin/zkServer.sh start
启动kafka
#启动zookeeper
>/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties &
#Start kafka
>/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &
测试topic创建
>/usr/local/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
查看创建的topic
>/usr/local/kafka/bin/kafka-topics.sh –list –zookeeper localhost:2181
生产消息测试
>/usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
//输入完ctrl+c退出
>topic test
消费消息测试
>/usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
topic test //之前测试输入的内容
xxx
停止kafka
//停止zookeeper
>/usr/local/kafka/bin/zookeeper-server-stop.sh /usr/local/kafka/config/zookeeper.properties &
//停止kafka
>/usr/local/kafka/bin/kafka-server-stop.sh /usr/local/kafka/config/server.properties &
//停止Zookeeper server
>sh /usr/local/zookeeper/bin/zkServer.sh stop
至此测试结束
可能异常
Failed to load class "org.slf4j.impl.StaticLoggerBinder".
解决方法:
下载slf4j-1.7.6.zip(http://www.slf4j.org/dist/slf4j-1.7.6.zip )
下载完将slf4j-nop-1.7.6.jar解压到kafka的libs目录下即可
//xx根据不同服务器会有不同,不过原因都一样
java.net.UnknownHostException: xx: xx
解决方法:
此处报错是因为在获取hostname的时候遇到的错误
代码内部使用的getLocalhost()方法,默认是访问‘/etc/sysconfig/network’中hostname的值
而在’/etc/hosts’中却没有将该hostname进行正确的映射,因此报错
解决方法只需在hosts中添加上对应hostname的映射即可
#There is insufficient memory for the Java Runtime Environment to continue
...
解决方法:
看报错信息便可知道是因为内存不足导致的错误
我们可以通过修改kafka-server-start.sh中的配置进行修改
kafka-server-start.sh的路径为kafka安装目录下的bin文件夹
找到指定的行数(命令模式下输入’/export’可进行查找,n为下一个(next) )
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
将1G修改成符合自己服务器的配置即可
export KAFKA_HEAP_OPTS="-Xmx200M -Xms200M"
end