原
2017年11月21日 17:13:33 君君要上天 阅读数:377
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010837612/article/details/78594702
kafka是基于仿AMQP协议开发的,AMQP协议模型如下:
基本概念:
软件环境:
首先我们需要安装jdk,请参考Linux安装JDK
下载zookeeper
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
tar -zxvf zookeeper-3.4.10.tar.gz
mv zookeeper-3.4.10 /usr/local/zookeeper
cd /usr/local/zookeeper
在zookeeper的conf目录中,有一个官方提供的配置文件模板zoo_sample.cfg
,我们将复制一份,重命名为zoo.cfg
,并修改它:
tickTime=2000
initLimit=10
syncLimit=5
#快照数据文件目录
dataDir=/data/zookeeper/zkdata
#日志文件所在目录
dataLogDir=/data/zookeeper/zkdatalog
clientPort=2181
#集群服务器列表,几台服务器集群就配几个,此处的1,2,3是服务器对应的id
server.1=10.168.168.xx:2888:13888
#server.2=10.168.168.xx:2888:13888
#server.3=10.168.168.xx:2888:13888
配置文件中的端口可以随意更改,不冲突即可。
手动创建dataDir
和 dataLogDir
:
root@ubuntu:/# mkdir -p /data/zookeeper/zkdata
root@ubuntu:/# mkdir -p /data/zookeeper/zkdatalog
进入刚刚配置的dataDir
中,将配置文件中配置的server的id写入到myid文件中,每台服务器都执行这个操作,id和服务器不能对应错
echo 1 > myid
进入zookeeper的bin目录中,有一个zkServer.sh目录,用于管理zookeeper
Usage: ./zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
所有服务器使用该命令启动:
./zkServer.sh start
在上面配置的/data/zookeeper/zkdata
目录,将来会产生大量的快照文件,需要我们定时去清除旧的文件,官方也对此做出了说明官方链接:
其实官方已经为我们提供了一个清理旧文件的脚本,位于zookeeper的bin目录下zkCleanup.sh
,定时执行即可,例如:
./zkCleanup.sh -n 3
注意,要下载二进制包,不要下载源码
https://archive.apache.org/dist/kafka/0.8.2.0/kafka_2.9.2-0.8.2.0.tgz
解压kafka后,进入config目录,修改server.properties
配置文件,主要修改以下几项:
#给当前服务器指定一个id,你的多台服务器的这个值要设置成不一样的
broker.id=0
#日志文件所在目录
log.dirs=/data/kafka/logs/
#每个topic的分区数,可改可不改
num.partitions=1
#zookeeper集群的地址和端口,ip地址要和上面zookeeper配置的server.1=10.168.168.xx一致,端口号和zookeeper配置文件中的clientPort一致
zookeeper.connect=10.168.168.xx:2181,10.168.168.xx:2181,10.168.168.xx:2181
cd /usr/local/kafka/bin
./kafka-server-start.sh -daemon ../config/server.properties
启动之后,我们可以使用一些命令来测试一下
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
bin/kafka-topics.sh --list --zookeeper localhost:2181
其他命令参考官方网站