最近有一个项目需要用到kafka分布式订阅发布消息系统,于是抽空的时候学习了一下关于kafka的一些事,同样在这里记录相关的笔记。最开始当然就是环境搭建。
kafka是什么?
这当然是最开始的一个问题。
kafka是一个分布式消息系统,由LinkedIn使用Scala编写,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础,具有高水平扩展和高吞吐量。目前已经被多家不同类型的公司作为多种类型的数据管道和消息系统使用了。
而且越来越多的开源式分布处理系统都支持和kafka集成哦,比如Flume,Storm,Spark等。
目前几种分布式队列的对比:
各种分布式队列对比zookeeper的环境部署
kafka是由zookeeper管理的,那么kafka的部署需要在zookeeper安装好之后进行。因此我们先来看看zookeeper如何来搭建环境。
首先到zookeeper的官网下载zookeeper,这里我选择的是zookeeper 3.4.8。
安装zookeeper很简单,就是解压,然后放到该放的目录里:
tar -zxvf zookeeper-3.4.8.tar.gz
mv zookeeper-3.4.8 /usr/local/zookeeper
然后我们进入zookeeper目录看一看:
cd /usr/local/zookeeper
目录如下:
zookeeper目录和常规的一样,bin目录下是运行文件,conf目录下是配置文件,因此看看conf目录:
conf目录里面有一个配置例子zoo_sample.cfg,我们借助这个来配置:
cp zoo_sample.cfg zoo.cfg
添加了zoo.cfg
用vim进入zoo.cfg,看看里面的内容:
zoo.cfg可以看到配置文件里面有几个参数:
tickTime # 是zookeeper中使用的基本时间单位, 毫秒值.
initLimit # 连接leader的超时时间
syncLimit #
dataDir # 数据目录. 可以是任意目录.
clientPort # 监听client连接的端口号.
如果是单机运行zookeeper的话,就用上面默认的配置就可以了,可以把dataDir给改了,不让它存在临时目录:
# 我把它改到存在zookeeper目录下的data目录
dataDir=/usr/local/zookeeper/data
然后进入zookeeper目录创建data目录:
cd /usr/local/zookeeper
mkdir data
cd data
# 创建一个myid文件
vim myid
不过一般来说,用起来应该是在集群环境中。因此我们需要在zoo.cfg中还要加上如下内容(假如说有三台):
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
集群环境下需要将zookeeper拷贝到各个结点上:
scp -r -r zookeeper/
然后就可以运行zookeeper了(每一个节点都要运行哦):
bin/zkServer.sh start
可以用jps看看:
运行起来了,没错kafka的环境部署
zookeeper搭建完毕后,就可以开始kafka的部署了。同样,到kafka的官网下载kafka的安装包,这里选择的是kafka_2.11-0.9.0.1。
一样先来个单机版的。。
解压文件,然后将它移动到合适的文件夹中,一般放/usr/local中:
tar -xvf kafka_2.11-0.9.0.1.tgz
mv kafka_2.11-0.9.0.1 /usr/local/kafka-0.9.0.1
接着进入相应目录:
cd /usr/local/kafka-0.9.0.1
kafka目录
目录结构还是那么个结构,大同小异,以名字来看,bin也是执行目录,config就是配置文件的目录了。
因此可以得知,我们需要进行配置kafka。
那么就来配置一下,一般来说就配置config目录下的server.properties。
vim config/server.properties
主要涉及到集群中的配置。比如broker.id、zookeeper.connect等等,单机就默认的就行了,默认broker.id=0。如果有其他的节点,每台节点的broker.id不能一样哦。
然后就可以启动kafka了,同样在bin里面。在启动了zookeeper的情况下启动kafka:
bin/kafka-server-start.sh config/server.properties
启动后可以来测试测试,打开另一个终端,创建一个叫“hello”的topic:
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic hello
查看一下topic列表:
bin/kafka-topics.sh --list --zookeeper localhost:2181
事先创建了个test,所以两个主题
有了topic之后,我们就可以作为生产者来生产消息了,这里因为是单机,也只有用本机当生产者了:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic hello
这时可以在终端中输入文本消息。我们再在另一个终端里开启消费者来消费消息(0.10版本以后命令就不同了,官网上有新的命令):
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic hello --from-beginning
这样就可以看到效果了呢。
消费者这边接收到的消息其它的比如设置多broker的集群啊,可以看官方文档的快速开始(因为用的版本是0.9的,粘贴的网址就是0.9.0的文档):http://kafka.apache.org/090/documentation.html#quickstart
网友评论