0


kafka的基本使用--学习笔记

catalyst引擎

作用:将SparkSql转换成spark rdd任务提交进行计算

  • 解析器 - 将sparksql代码解析成语法树(未解析的逻辑查询计划)
  • 分析器 - 将语法树解析成解析后的逻辑查询计划- 对逻辑查询计划进行属性和关系关联检验
  • 优化器 - 将解析后的逻辑查询计划进行优化, 得到优化后的逻辑查询计划- 谓词下推(调整执行顺序)和列值裁剪(过滤列)
  • 执行器 - 将优化后的逻辑查询计划转换成物理查询计划- 转换成RDD任务进行执行

kafka使用

1,消息队列

离线计算

通常称为批处理,表示哪些离线批量,延时较高的静态数据处理过程

实时计算

用户访问信息,用户访问的数据直接背传递给spark计算

概念

消息是在两台计算机传送的数据单位

临时存储传递消息的容器->kafka是非关系型数据库之一,也是消息队列之一

实时计算时需要将流数据(消息)先存储在消息队列中,否则容易产生数据积压导致数据丢失问题

应用场景:解耦,异步,消峰

解耦:接触应用之间的关联关系

异步:应用之间不会同时执行,应用B不会等待应用A执行完成后再产生信息

消峰:某个节点数据量突然增多,导致处理不过来,供大于求

2,模式

点对点模式:

一对一关系,私聊

角色:发送者(生产者),接收者(消费者)

  • 每个消息只有一个接收者(Consumer),一旦被消费,消息就不再存在于消息队列中。
  • 发送者和接收者间没有依赖性,发送者发送消息之后,不管有没有接收者在运行,都不会影响到发送者下次发送消息。
  • 接收者在成功接收消息之后需要向队列应答成功,以便消息队列删除当前接收的消息。
发布与订阅:

一对多关系,群聊。一个消息对应多个消费者

角色:主题,发布者,订阅者

  • 每个消息可以有多个订阅者。
  • 发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。
  • 为了消费消息,订阅者需要提前订阅该角色主题,并保持在线运行。

3,分类

ActiveMQ:

TabbitMQ:应用程序对消息队列要求不高,数据临时缓存

TocketMQ:在线业务,对延迟和稳定性要求高

kafka:流计算、实时计算,处理海量的消息

选择:

  • 如果消息队列不是将要构建系统的重点,对消息队列功能和性能没有很高的要求,只需要一个快速上手易于维护的消息队列,建议使用 RabbitMQ。
  • 如果系统使用消息队列主要场景是处理在线业务,比如在交易系统中用消息队列传递订单,需要低延迟和高稳定性,建议使用 RocketMQ。
  • 如果需要处理海量的消息,像收集日志、监控信息或是埋点这类数据,或是你的应用场景大量使用了大数据、流计算相关的开源产品,那 Kafka 是最适合的消息队列。

kafka消息队列

特点:

可靠性:分布式,分区,赋值和容错等

可扩展性:kafka消息传递系统秦颂缩放无需停机,可以添加新的服务器资源,不需要对服务器关闭重启,可以自动识别添加

耐用性:分布式提交日志,消息会尽可能快速的保存再磁盘上,因此它是持久的

高性能:kafka对于发布和订阅都具有高吞吐量,同时存储了许多tb级消息,也有稳定的性能,kafka非常快并且保证零停机和零数据丢失

1,概念术语

  • Producer 生产者 - 也就是发送消息的一方。生产者负责创建消息,然后将其投递到Kafka
  • Consumer 消费者 - 也就是接收消息的一方。消费者连接到Kafka上并接收消息,进而进行相应的业务逻辑处理。
  • Consumer Group(CG)消费者组 - 由多个 consumer 组成。- 消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费- 消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
  • broker 服务代理节点(中间人) - kafka集群运行后,每台服务器上的kafka称为一个broker节点- 处理消费者和生成者的请求 - 生产者需要保存数据到kafka,就需要请求broker- 消费者需要从kafka中获取数据,也需要请求broker- 多个broker会选取产生一个控制器,类似zk中的leader角色 - 管理broker,监控broker的变化- 参与分区副本的领导者选举- 处理消费者和生成者的请求- 由zk从broker中选举出控制器 - 本质哪台服务器先启动了kafka,生成了broker节点,该节点就作为控制器
  • Topic 主题 - kakfa是对消息数据的处理- 消息数据会有不同的分类- 使用主题对消息数据进行分类,然后分别存储- 主题创建成功后,会将主题信息写入zk中,所有的broker就可以从zk中获取有哪些主题- 生产者写入数据时可以指定写入的主题,人为对数据按照主题分类- 消费者读取数据时也可以指定主题,从对应的主题下获取数据
  • Partition 分区(分片) - 分区是kafka存储数据的最小单元,消息数据最终是存储在分区上的- 一个主题在存储时可以指定多个分区- 当有多个分区时,分区被分配到不同broker上- 分区所存储的数据是在系统的磁盘上进行存储。每个分区会创建不同目录,然后将数据写入该目录下的文件中- 文件中存储的数据是有有效期的,默认的有效期是168小
标签: kafka 学习 笔记

本文转载自: https://blog.csdn.net/yfq_29/article/details/135757858
版权归原作者 祈愿lucky 所有, 如有侵权,请联系我们删除。

“kafka的基本使用--学习笔记”的评论:

还没有评论