在介绍大数据实时计算介绍之前,我们先介绍大数据使用的消息中间件Kafka,在大数据中经常会被用到。
- Kafka基本概念
- Kafka集群的搭建
- Kafka集群的操作
ApacheKafka的概念
我们从三个方面去理解什么是kafka
- Apache Kafka 是一个消息队列(生产者消费者模式)
- Apache Kafka 目标:构建企业中统一的、高通量、低延时的消息平台。
大多的是消息队列(消息中间件)都是基于JMS标准实现的,Apache Kafka 类似于JMS的实现。消息中间件一般要解决的问题下面的三种:
异步,解耦,削峰
ApacheKafka的基本架构
kafka的核心组件有下面几个:
-
Kafka Cluster:由多个服务器组成。每个服务器单独的名字broker。
-
Kafka Producer:生产者、负责生产数据。
-
Kafka consumer:消费者、负责消费数据。
-
Kafka Topic: 主题,一类消息的名称。存储数据时将一类数据存放在某个topci下,消费数据也是消费一类数据。
- 订单系统:创建一个topic,叫做order。
- 用户系统:创建一个topic,叫做user。
- 商品系统:创建一个topic,叫做product。
-
注意:Kafka的元数据都是存放在zookeeper中。
搭建Kafka集群
准备环境
- 安装jdk,安装zookeeper
- 安装目录规范
安装包存放的目录:/export/software
安装程序存放的目录:/export/servers
数据目录:/export/data
日志目录:/export/logs
- 验证环境
JDK环境
zookeeper环境
启动zookeeper集群
- 一键启动脚本—>需要自己编写
- 手动启动
部署kafka集群
-
安装包的下载,解压,重命名
-
修改配置文件 conf目录下的server.properties文件,修改对应红色位置的三条数据
-
分发节点
使用命令 scp -r /export/server/kafka node02:/export/server/
修改各个节点上的server.properties文件的broker.id,对应各个节点
启动集群
cd /export/servers/kafka/bin
./kafka-server-start.sh /export/servers/kafka/config/server.properties
掌握操作集群的两种方式
-
使用控制台操作集群
创建一个topic
./kafka-topics.sh --create --partitions 3 --replication-factor 2 --topic order --zookeeper node01:2181,node02:2181,node03:2181
编写代码启动一个生产者,生产数据
./kafka-console-producer.sh --broker-list node01:9092,node02:9092,node03:9092 --topic order
编写代码启动给一个消费者,消费数据
./kafka-console-consumer.sh --bootstrap-server node01:9092,node02:9092,node03:9092 --from-beginning --topic order
-
Kafka 常用操作命令
查看当前服务器中的所有topic bin/kafka-topics.sh --list --zookeeper zk01:2181 删除topic bin/kafka-topics.sh --delete --zookeeper zk01:2181 --topic test 需要server.properties 中设置delete.topic.enable=true 否则只是标记删除或者直接重启。 查看某个Topic 的详情 bin/kafka-topics.sh --topic test --describe --zookeeper zk01:2181 对分区数进行修改 bin/kafka-topics.sh --zookeeper zk01 --alter --partitions 2 --topic test
-
使用java API操作集群
1.1创建maven工程,导入kafka-clients依赖
<dependency> <groupId>org.apache.kafka<