kafka从入门到精通 以及 kafka 与sparkStreaming的俩种连接方式 kafka 对接flume

文章目录

  • 一、kafka 入门及概述
    1. 定义 作用
    2. Kafka基础架构
    3. 安装部署
    4. Kafka命令行操作

  • 二、kafka 架构深入
    1. Kafka工作流程及文件存储机制
    2. Kafka生产者
    3. Kafka消费者
    4. Kafka 高效读写数据的原因
    5. Zookeeper在Kafka中的作用

  • 三、Kafka API
    1. Producer API
    2. Consumer API
    3. 自定义Interceptor

  • 四、Flume对接Kafka的实现

  • 五、Kafka监控
    1. kafka manager
    2. kafka monitor

  • 六、kafka与sparkStreaming的俩种连接方式
    1. 俩连接方式的介绍
    2. 直连方式实现
    3. reciver方式实现
    4. 俩种方式对比

正文
一、kafka 入门及概述
1. 定义: kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。消息队列作为消息中间件和java 中应用的RabbitMQ 功能是一样的。
这里的发布订阅模式如下图:个生产者多个消费者,消费者消费数据之后消息不会被清除。消息会定期处理(默认一周处理一次)
消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不
同,发布到topic的消息会被所有订阅者消费。一个组内只能消费一次, 这里发布订阅模式类似微博关注。。
在这里插入图片描述

  1. 作用: 缓冲数据、解耦合、异步处理 如果flume 没有经过kafka直接对接sparkStreaming,数据
    在这里插入图片描述3.Kafka基础架构
    3.1 基本概念理解:
    Producer :消息生产者,就是向kafka broker发消息的客户端;
    Consumer :消息消费者,向kafka broker取消息的客户端;
    Consumer Group (CG):消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分区 的数据,一个分区只能由一个消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。

    Broker :一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。
    Topic :可以理解为一个队列,生产者和消费者面向的都是一个topic;逻辑概念
    Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分 为多个partition,每个partition是一个有序的队列;

    Replica:副本,为保证集群中的某个节点发生故障时,该节点上的partition数据不丢失,且kafka仍然能够继续工作,kafka提供了副本机制,一个topic的每个分区都有若干个副本,一个leader和若干个follower。

    leader:每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对象都是leader。
    follower:每个分区多个副本中的“从”,实时从leader中同步数据,保持和leader数据的同步。leader发生故障时,某个follower会成为新的follower。
    在这里插入图片描述
     3.2 kafka 基本架构 如上图有: producer --broker list (kafka cluster)–consumer group
     
    4.Kafka安装部署
     4.1 1 集群规划 版本选型 如下
    在这里插入图片描述
    4.2 jar包下载
    http://kafka.apache.org/downloads.html
    在这里插入图片描述
    4.3 集群部署
    1)解压安装包
    [nancy@hadoop-101 software]$ tar -zxvf kafka_2.11-0.11.0.0.tgz -C /opt/module/
    2)修改解压后的文件名称
    [nancy@hadoop-101 module]$ mv kafka_2.11-0.11.0.0/ kafka
    3)在/opt/module/kafka目录下创建logs文件夹
    [nancy@hadoop-101 kafka]$ mkdir logs
    4)修改配置文件
    [nancy@hadoop-101 kafka]$ cd config/
    [nancy@hadoop-101 config]$ vi server.properties
    输入以下内容:

#broker的全局唯一编号,不能重复
broker.id=0
#删除topic功能使能
delete.topic.enable=true
#处理网络请求的线程数量
num.network.threads=3
#用来处理磁盘IO的现成数量
num.io.threads=8
#发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
#接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
#请求套接字的缓冲区大小
socket.request.max.bytes=104857600
#kafka运行日志存放的路径--kafka数据持久化地址	
log.dirs=/opt/module/kafka/logs
#topic在当前broker上的分区个数
num.partitions=1
#用来恢复和清理data下数据的线程数量
num.recovery.threads.per.data.dir=1
#segment文件保留的最长时间,超时将被删除
log.retention.hours=168
#配置连接Zookeeper集群地址
zookeeper.connect=hadoop-101:2181,hadoop-103:2181,hadoop-102:2181

5)配置环境变量
[nancy@hadoop-101 module]$ sudo vi /etc/profile

#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

[nancy@hadoop-101 module]$ source /etc/profile

6)分发安装包

[nancy@hadoop-101 module]$ xsync kafka/

7)分别在hadoop-103和hadoop-102上修改配置文件/opt/module/kafka/config/server.properties中的broker.id=1、broker.id=2
注:broker.id不得重复
8)启动集群kafka
依次在hadoop-101、hadoop-103、hadoop-102节点上启动kafka

[nancy@hadoop-101 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties
[nancy@hadoop-103 kafka]$ bin/kafka-server-start.sh -daemon  config/server.properties
[nancy@hadoop-102 kafka]$ bin/kafka-server-start.sh -daemon  config/server.properties

9)关闭集群

[nancy@hadoop-101 kafka]$ bin/kafka-server-stop.sh stop
[nancy@hadoop-103 kafka]$ bin/kafka-server-stop.sh stop
[nancy@hadoop-102 kafka]$ bin/kafka-server-stop.sh stop

10)kafka群起脚本

for i in `cat /opt
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值