1.Kafka简介
Kafka是一个分布式、分区的、多副本的、多订阅者的,基于zookeeper协调的分布式日志系统,主要应用场景是:日志收集系统和消息系统。在大数据的场景中常用于数据的缓冲与流转收集。
在没有使用消息系统之前,许多传统的系统业务对于消息的处理一般会采用串行方式或者并行方法;
例如,你去网站注册一个账号,下面是串行跟并行的处理方式。
串行方式:
用户注册例子:用户主责,将注册信息记录到数据库后,发送注册消息邮件,再发送注册短信验证,每个过程小号50毫秒,一共就需要150毫秒
并行方式:
与串行不同的就是,在数据库记录完注册信息之后,发送消息跟发送邮件的动作同步完成,缩短了用户的等待时间:
消息系统:
消息系统负责将数据从一个应用程序传送到另一个应用程序,因此应用程序可以专注于数据,但是不必担心 如何共享它。分布式消息系统基于可靠的消息队列的概念。消息在客户端应用程序和消息传递系统之间的异步排队。
2.kafka集群搭建详细步骤
1.解压安装包
**在主节点node1进行操作。前置环境可以查看Hadoop的教程先配置好。**安装前每台机器都需要搭建好有zookeeper,详细可以查看集群搭建系列的文章这里我们采用的版本是kafka_2.11-2.4.1,解压的路径可以自己定义。
代码语言:javascript复制tar -zxvf kafka_2.11-2.4.1.tgz -C /app
2.修改安装包名字
代码语言:javascript复制cd /app
mv kafka_2.11-2.4.1/ kafka_2.11
3.进入到/app/kafka目录下,创建logs文件夹
代码语言:javascript复制cd /app/kafka_2.11
mkdir logs
4.修改配置文件(重要)
代码语言:javascript复制[root@node1 kafka_2.11]$ cd config/
[root@node1 config]$ vim server.properties
#修改配置文件的内容,或者是在原有的基础上添加上去
#broker的全局唯一编号,每台机器都不可以重复,第一台可以是0,第二三台可以为1,2
broker.id=0
#删除topic功能使能
delete.topic.enable=true
#kafka运行日志存放的路径,默认自动创建,方便查看报错信息
log.dirs=/app/kafka/data
#配置连接Zookeeper集群地址 /kafka 会创建单独的文件夹,根据你的集群修改
zookeeper.connect=node1:2181,node2:2181,node3:2181/kafka
5.分发配置好的安装包到集群
代码语言:javascript复制scp -r kafka_2.11 node2:/app
scp -r kafka_2.11 node3:/app
6.修改其他集群的配置文件(重要)
在node2与node3主机中将分发过去的kafka安装包下的server.properties进行修改,主要修改的部分是broker.id。
代码语言:javascript复制#这里要注意broker.id是不能重复的
在node2主机上修改成broker.id=1
在node3主机上修改成broker.id=2
7.集群启动
代码语言:javascript复制#分别在三台机器的kafka目录下运行启动命令,输入jps,查看到kafka进程即可
bin/kafka-server-start.sh -daemon /app/kafka_2.11/config/server.properties
3.集群测试
安装好kafka集群之后我们需要进行一下集群的测试,看是否可用
1.创建Topic test1
代码语言:javascript复制./bin/kafka-topics.sh --create --zookeeper node1:2181,node2:2181,node3:2181/kafka --replication-factor 1 --partitions 1 --topic test1
2.查看创建的Topic列表
代码语言:javascript复制bin/kafka-topics.sh --list --zookeeper node1:2181,node2:2181,node3:2181/kafka
3.创建生产者生产数据
代码语言:javascript复制 bin/kafka-console-producer.sh --broker-list node1:9092,node2:9092,node3:9092 --topic test1
4.测试消费者是否可以消费数据
代码语言:javascript复制 bin/kafka-console-consumer.sh --bootstrap-server node1:9092 --topic test1 --from-beginning
到这里Kafka的集群就成功搭建完成了。