这些场景的共同点就是数据由上层框架产生,需要由下层框架计算,其中间层就需要有一个消息队列传输系统
Apache flume系统,用于日志收集
Apache storm系统,用于实时数据处理
Spark系统,用于内存数据处理
elasticsearch系统,用于全文检索
broker中每个partition都会有备份,可自行设置,前端程序和读取数据的程序都可以是自己写的程序或者是各类框架,例如hadoop,flume
搭建集群:
kafka的包需要事先下载好,zookeeper环境搭建之前已经做过介绍:
新建一个目录专门给kafka使用,这样方便管理,先解压每个服务器的kafka,然后在kafka目录下新建一个Log文件夹,用于存放kafka的消息
进入kafka的配置目录,发现还有zookeeper配置文件,kafka集群可以通过zookeeper启动,但是一般通过自己独立的启动方式启动
首先关注server.properties配置文件
当前服务器集群ip分别为10.206.216.13,10.206.212.14,10.46.189.18
id为每个服务器的唯一参数,默认端口9092,为了防止会发生冲突,可以将端口设置比较大一点
hostname为服务器ip地址,一般该参数是关闭的,在0.8.1中有bug,默认参数是localhost,kafka在解析dns的时候会解析成ip,会有失败率,因此打开,之后的版本已经修复该bug。若修改了hosts名称也可以直接写名称:
之后配置如下三项:分别为消息put字节数组大小,消息备份数和消息pull字节数组大小,图中两个字节数组大小都为5M
之后配置zookeeper集群地址,zookeeper集群默认端口为2181,为了防止端口冲突,可以改为12181,该操作可有可无:
配置log路径,若有多个可用逗号分隔,如果有多个的话,那num.io.threads参数的值必须大于配置路径的个数:
在每台服务器都配置完毕后,分别启动kafka集群:
之后验证有没有错误:
先在集群上建立topic,即消息发送方,然后设置一台服务器为消息发送方producer,设置另一台服务器为consumer订阅该服务器:
在producer中发送hello消息,然后在consumer中可立即收到:
之后还有list指令和descrip指令,分别用于列出所有的topic和某个topic的描述,之后还有许多指令,需要查看官方文档:
进入zookeeper命令行之后,发现有如下目录被创建: