java大数据组件Kafka

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: java大数据组件Kafka

1.定义:



大吞吐量,内置分区,可以进行数据备份,同时具备数据容错性的消息系统。


1.Kafka可以完成在线或者离线数据消费,所谓离线数据消费实际上就是kafka将消息数据保留在磁盘上。


2.kafka会做数据备份,防止节点宕机从而导致数据丢失。


3.和spark产品的整合性非常好,可以完成实时的大数据分析


4.kafka的节点可以无限扩容


2.消息系统:



将数据从一个应用程序传递到另一个应用程序,分布式系统利用消息系统,在多应用之间进行高效、稳定、安全的数据传递。


3.两种消息模式:



1.点对点:若干个生产和消费者,处理队列当中的数据,一旦该数据被消费,则从队列当中被移除。(多线程:生产消费者模型)


2.发布-订阅:消息是被保留在主题当中,消费者一个消费一个或者若干个主题当中的消息


4.术语:



术语****1

术语****1

Topics(主题)

Kafka Cluster(Kafka集群)
Partition(分区) Producers(生产者)
Partition offset(分区偏移) Consumers(消费者)
Replicas of partition(分区备份) Leader(领导者)
Brokers(经纪人)
  1. Follower(追随者)



5.发布和订阅的流程



  1. 生产者向主题当中提交消息,代理将主题当中的数据在主题的分区当中依次保存;


  1. 消费者向代理请求获取消息,代理向消费者提供偏移量,消费者根据偏移量要求获取消息。


  1. 消费者排队的前提,消费者数量大于分区数量


6.生产者:需要指定生产的主题



7.消费者:



1.要指定消费者的分组:默认情况下,分组是test


2.消费者可以同时消费若干个主题:


(1)消息是已key-value格式进行发送


(2)每个key如果重复发送,其偏移量会递增


(3)新的key的偏移量从0开始


3.消费者要放在一个独立的线程当中,才能始终处于消费状态


4.Spring是没有办法直接给线程当中进行依赖注入的


5.消费者的线程如果要通知其他的任务执行,需要从Spring的bean当中获取相关的业务对象


8.kafka写消息的路由策略



  1. 如果指定分区:直接使用分区进行路由


  1. 指定了key,但是没有指定分区,那么会对key进行hash运算,通过运算的值得到一个分区


  1. 如果都没指定,那么会轮询写入一个分区


9.kafka写硬盘:



1.传统写硬盘是随机写


2.kafka是顺序写硬盘,是随机写硬盘速度的6000倍


3.写数据的流程


(1)首先找到leader


(2)将消息写入leader的日志文件


(3)Followers(包含ISR中的成员,也包含不在ISR中的成员)会同步leader当中的消息,同步完以后会向leader发送一个ACK确认。


(4)leader在接收到isr所有成员的ACK确认后,正式提交commit保存


10.kafka的消息安全策略



1.默认是保证一定成功(同步)


2.不重复发送,不保证成功(异步)


11.kafka的备份



1.备份是由分区来创建的


2.一个分区有1个leader和0-n个follower,只要leader不宕机,所有的follower都宕机了也不影响读写。follower只负责数据备份,不负责数据读写。


12.Kafka的isr:



1.同步备份:保证isr集合当中至少存活一个,如果leader不挂,正常提供服务,如果leader挂了,重新选leader然后提供服务;每个分区都有自己的isr


(1)备份的算法:


①分区:分区编号,取余代理数量 (p_i mod b_num)


②备份:分区编号 + 备份编号之和, 取余 代理数量(p_i+r_j) mod b_num


2.判定存活:配置延时replica.log.max.messages,replica.log.time.max.ms来判定是否宕机


3.kafka如何解决zookeeper的压力的


(1)Kafka有容器机制


(2)每一个代理会创建一个新的容器


(3)容器负责维护leader的读写,和选举


4.leader是在zk上竞争创建节点来获取leader资格,如果leader宕机,选举策略是所有的follower(ISR当中保存的成员)重新竞争创建节点,获取leader资格;容器会记录新的leader,并保持


5.如果所有的ISR成员都死亡:


(1)等待ISR成员任意一个苏醒,但是这个过程是不可控的


(2)默认:只要有一个不是isr的成员存活,把这个作为新的leader。但是并不能保证这个成员是否数据和原本leader数据一致。


13.kafka的数据保存:



1.Kafka的日志分为两种,一种是运行日志;还有一种是用于保存消息的日志;


2.一个分区对应日志当中的一个目录


(1)索引文件


(2)数据文件


①数据长度


②数据类型


③时间戳


④偏移量


⑤Key


⑥Value


⑦头信息


3.数据保留策略


(1)时间:


(2)大小:


(3)注意:清理数据对kafka的读写没有任何影响


(4)Kafka是在硬盘磁道上进行顺序读写,所以性能和文件大小没有任何关系


14.主题的创建和删除流程:



1.创建主题,是首先获取代理的ids,然后将这些ids组成一个isr,作为一个新的容器


2.删除主题:


(1)默认情况下delete.topic.enable=false;也就是被删除的节点会被移入zk的这个节点/admin/delete_topics


(2)要彻底删除


①delete.topic.enable=true:一旦删除,容器会清空在/admin/delete_topics节点上的监听


②auto.create.topics.enable=false:自动创建主题,如果他为true,那么只要还有一个用户在往这个主题当中写消息,这个主题就不会真正被删除。即便是你已经删了,他依然还会创建一个出来。


目录
相关文章
|
16天前
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
【赵渝强老师】基于大数据组件的平台架构
|
19天前
|
消息中间件 缓存 Java
java nio,netty,kafka 中经常提到“零拷贝”到底是什么?
零拷贝技术 Zero-Copy 是指计算机执行操作时,可以直接从源(如文件或网络套接字)将数据传输到目标缓冲区, 而不需要 CPU 先将数据从某处内存复制到另一个特定区域,从而减少上下文切换以及 CPU 的拷贝时间。
java nio,netty,kafka 中经常提到“零拷贝”到底是什么?
|
24天前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
15天前
|
SQL 分布式计算 大数据
【赵渝强老师】大数据生态圈中的组件
本文介绍了大数据体系架构中的主要组件,包括Hadoop、Spark和Flink生态圈中的数据存储、计算和分析组件。数据存储组件包括HDFS、HBase、Hive和Kafka;计算组件包括MapReduce、Spark Core、Flink DataSet、Spark Streaming和Flink DataStream;分析组件包括Hive、Spark SQL和Flink SQL。文中还提供了相关组件的详细介绍和视频讲解。
|
1月前
|
SQL 存储 分布式计算
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
31 9
|
1月前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
42 3
|
1月前
|
消息中间件 druid 大数据
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
33 2
|
1月前
|
消息中间件 分布式计算 druid
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(一)
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(一)
56 1
|
1月前
|
分布式计算 Java 大数据
大数据-147 Apache Kudu 常用 Java API 增删改查
大数据-147 Apache Kudu 常用 Java API 增删改查
33 1
|
1月前
|
分布式计算 Java 大数据
大数据-122 - Flink Time Watermark Java代码测试实现Tumbling Window
大数据-122 - Flink Time Watermark Java代码测试实现Tumbling Window
35 0
下一篇
无影云桌面