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,学习,笔记)