kafka是一种高吞吐量的分布式发布订阅消息系统,她有如下特性:
-
通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
-
高吞吐量:即使是非常普通的硬件kafka也可以支持每秒数十万的消息。
-
支持通过kafka服务器和消费机集群来分区消息。
-
支持Hadoop并行数据加载。
kafka的目的是提供一个发布订阅解决方案,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群机来提供实时的消费。
一、单机版
1. 下载安装包
1
|
wget
<
a
href
=
"https://www.apache.org/dyn/closer.cgi/incubator/kafka/kafka-0.7.2-incubating/kafka-0.7.2-incubating-src.tgz"
target
=
"_blank"
>
https
:
//www.<wbr />apache.org/d<wbr />yn/closer.cg<wbr />i/incubator/<wbr />kafka/kafka-<wbr />0.7.2-incuba<wbr />ting/kafka-0<wbr />.7.2-incubat<wbr />ing-src.tgz</a>
|
2. 安装
1
2
3
4
|
tar
xzf
kafka
-
0.7.2.tgz
cd
kafka
-
0.7.2
.
/
sbt
update
.
/
sbt
package
|
3. 启动server
启动zookeeper 由于我们zookeeper集群是独立部署的,所以这里不用启动kafka自带的,直接启动我们自己的zookeeper服务就可以了。
启动kafka服务
1
|
bin
/
kafka
-
server
-
start
.
sh
config
/
server
.
properties
|
4. 发送消息
1
2
3
|
bin
/
kafka
-
console
-
producer
.
sh
--
zookeeper
localhost
:
2181
--
topic
test
This
is
a
message
This
is
another
messag
|
5. 开启consumer
1
2
3
|
bin
/
kafka
-
console
-
consumer
.
sh
--
zookeeper
localhost
:
2181
--
topic
test
--
from
-
beginning
This
is
a
message
This
is
another
message
|
二、集群搭建
server搭建在192.168.38.142,192.168.38.145两台机器上
1. 安装kafka
同上
2. 配置
server的配置文件
1
|
kafka
-
0.7.2
/
config
/
server
.
properties
|
有几个注意的点:
1
2
|
brokerid
这个每个
server(
broker)必须唯一
hostname
这个也是唯一的
|
还是直接看例子吧 》》》》
192.168.38.142上的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
brokerid
=
0
hostname
=
192.168.38.142
port
=
9092
num
.
threads
=
8
socket
.
send
.
buffer
=
1048576
socket
.
receive
.
buffer
=
1048576
max
.
socket
.
request
.
bytes
=
104857600
log
.
dir
=
/
home
/
lixuze
/
opt
/
kafka
-
0.7.2
/
kafka
-
logs
num
.
partitions
=
1
log
.
flush
.
interval
=
10000
log
.
default
.
flush
.
interval
.
ms
=
1000
log
.
default
.
flush
.
scheduler
.
interval
.
ms
=
1000
log
.
retention
.
hours
=
168
log
.
file
.
size
=
536870912
log
.
cleanup
.
interval
.
mins
=
1
enable
.
zookeeper
=
true
zk
.
connect
=
192.168.38.142
:
2181
,
192.168.38.146
:
2181
,
192.168.38.145
:
2181
zk
.
connectiontimeout
.
ms
=
1000000
|
192.168.38.145上的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
brokerid
=
1
hostname
=
192.168.38.145
port
=
9092
num
.
threads
=
8
socket
.
send
.
buffer
=
1048576
socket
.
receive
.
buffer
=
1048576
max
.
socket
.
request
.
bytes
=
104857600
log
.
dir
=
/
home
/
lixuze
/
opt
/
kafka
-
0.7.2
/
kafka
-
logs
num
.
partitions
=
1
log
.
flush
.
interval
=
10000
log
.
default
.
flush
.
interval
.
ms
=
1000
log
.
default
.
flush
.
scheduler
.
interval
.
ms
=
1000
log
.
retention
.
hours
=
168
log
.
file
.
size
=
536870912
log
.
cleanup
.
interval
.
mins
=
1
enable
.
zookeeper
=
true
zk
.
connect
=
192.168.38.142
:
2181
,
192.168.38.146
:
2181
,
192.168.38.145
:
2181
zk
.
connectiontimeout
.
ms
=
1000000
|
注意:这个配置,基本上都是默认的,本次搭建工作只是保证基本环境运行正常。实际线上版本需要根据需要对各种参数进行优化。
3. 启动集群
在每个broker上执行
1
|
bin
/
kafka
-
server
-
start
.
sh
config
/
server
.
properties
|
4. 测试完成
测试例子在下载的安装包中
1
|
kafka
-
0.7.2
/
examples
/
|