
---- Kafka
Kafka 是一个消息系统,原本开发自 LinkedIn,用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。现在它已被多家不同类型的公司 作为多种类型的数据管道和消息系统使用。
云 祁
Focus BigData,专注于大数据技术领域的知识分享。
展开
-
通俗易懂 !Kafka 开发快速入门看这篇就够了
有人说世界上有三个伟大的发明:火,轮子,以及 Kafka。原创 2020-09-15 23:58:07 · 1503 阅读 · 30 评论 -
没想到 Kafka 还会这样问,学会这些带你轻松搞定大厂面试!
自上次师兄遭受了面试官 Kafka 的暴击追问后,回来发疯图强,企图“吊打面试官”,奈何还是面试官套路深啊,最近的面试,又被问到kafka的知识盲点了!让我们一起来看看,可怜的师兄又遇到了哪些让人头秃的问题 {{{(>_<)}}} !原创 2020-03-28 16:26:23 · 3275 阅读 · 49 评论 -
师兄面试遇到面试官的 Kafka 暴击三连问,快面哭了!
其实在今天的很多大厂面试里,都会要求能够熟练运用Apache Kafka等至少一种消息队列,Apache Kafka也是我们面试里的常客。在大多数人的印象中,写磁盘都是比较慢的,可是,为什么Apache Kafka在各大MQ性能的评测中,还能够击败众多对手,取得不错的成绩呢?通过师兄遇到的关于 Kafka 问题的暴击三连问 ,让我们一起走进师兄受伤的心原创 2020-03-21 17:22:04 · 10084 阅读 · 35 评论 -
【Kafka】(二十四)轻量级流计算 Kafka Streams 实践总结
文章目录一、概述1.1 Kafka Streams1.2 Kafka Streams 特点1.3 为什么要有 Kafka Streams一、概述1.1 Kafka StreamsKafka Streams。Apache Kafka 开源项目的一个组成部分。是一个功能强大,易于使用的 库。用于在 Kafka 上构建高可分布式、拓展性,容错的应用程序。1.2 Kafka Streams 特点1. 功能强大高扩展性,弹性,容错2. 轻量级无需专门的集群一个库,而不是框架3. 完全集成原创 2020-09-15 11:39:25 · 879 阅读 · 24 评论 -
【Kafka】(二十三)Kafka 消费者组 subscribe 和 assign 的正确使用
使用Apache Kafka 消费者组时,有一个为消费者分配对应分区partition的过程,我们可以使用“自动”subscribe和“手动”assign的方式。同时进行“自动”和“手动”的分区分配是会互相影响的,有时会把事情搞糟。正确的使用,首先要了解这两种方式的场景。一、消费者组的使用场景Kafka里的消费者组有两个使用的场景:“队列模式”:在同一组的消费者共同消费一个主题的所有消息...原创 2020-03-08 23:17:50 · 1608 阅读 · 1 评论 -
【Kafka】(二十二)Kafka Exactly Once 语义与事务机制原理
写在前面的话本文所有Kafka原理性的描述除特殊说明外均基于Kafka 1.0.0版本。为什么要提供事务机制Kafka事务机制的实现主要是为了支持Exactly Once即正好一次语义操作的原子性有状态操作的可恢复性Exactly Once《Kafka背景及架构介绍》一文中有说明Kafka在0.11.0.0之前的版本中只支持At Least Once和At Most Once语义,尚...原创 2020-03-08 18:06:18 · 1437 阅读 · 0 评论 -
【Kafka】(二十一)Kafka 常用命令
Kafka 常用命令1.创建topic./kafka-topics.sh --create --topic test1 --replication-factor 2 --partitions 3 --zookeeper hbp001:21812.增加partition./kafka-topics.sh --zookeeper node01:2181 --alter --topic t_cd...原创 2020-03-08 01:15:01 · 1379 阅读 · 0 评论 -
【Kafka】(二十)Kafka Consumer 重置 Offset
在Kafka Version为0.11.0.0之后,Consumer的Offset信息不再默认保存在Zookeeper上,而是选择用Topic的形式保存下来。在命令行中可以使用kafka-consumer-groups的脚本实现Offset的相关操作。更新Offset的三个维度:Topic的作用域重置策略执行方案Topic的作用域--all-topics:为consumer gr...原创 2020-03-08 01:07:15 · 2985 阅读 · 0 评论 -
【Kafka】(十九)Kafka Streams 自定义Serde
前面两篇的代码中,很多人看到最终的计算结果是通过Serdes.Long()或者 Serdes.String()像是写入到topic中。于是有人问,能否将计算结果按照自定义格式写入topic中?比如自定义的某个类。答案是当然可以。下面就以一个简单的case为例,介绍如何自定义Serdes。注意:示例中的代码只是展示流程,非生产代码,仅供参考。官方文档在这里,我用是kafka 1.0. 所以连接也...转载 2020-03-04 21:17:43 · 2043 阅读 · 0 评论 -
【Kafka】(十八)Kafka Streams 用 Aggregation 进行聚合统计
文章目录一、项目需求二、主要代码在前一个示例的基础上,我们稍作修改实现一个基于固定时间窗口统计总和的例子。一、项目需求统计每30秒内,按照key分组的总值。topic收到的消息格式:key:a, value:1, 例如如果kafka topic 30秒(Tumbling Window, 也就是固定窗口), 收到消息key:a, value:1, key:b, value:5, key:a, ...转载 2020-03-04 20:09:40 · 2939 阅读 · 1 评论 -
【Kafka】(十七)Kafka Streams 示例 TemperatureDemo
最近想统计一些消息数据,原计划接收kakfa消息后自行统计然后存入数据库(统计相对比较简单,所以没有考虑使用Apache Storm), 突然想起来Kafka已经提供Kakfa Stream功能,于是开始看Kafka Stream。 下面的例子非常简单,只是在Kafka提供的例子上做了一点修改。添加依赖因为我们使用的Kafka Stream所以添加的依赖是kafka-streams, 不是以前...转载 2020-03-04 19:47:59 · 1489 阅读 · 0 评论 -
【Kafka】(十六)Kafka 生产者(producer)生产 topic 数据常见 API
文章目录一、将本地数据用java语言(API)导入到topic二、Scala版本将本地文件以JSON格式打到Kafka中三、直接在shell中使用kafka的producer一、将本地数据用java语言(API)导入到topic1.本次主要是把文本文件所有数据导入到topic中代码说明:将本地文件所有内容逐行地 通过API 打入kafka 的 topic 中import java.io.B...原创 2020-03-03 20:07:24 · 1934 阅读 · 0 评论 -
【Kafka】(十五)流式计算 Kafka Streams 架构深入
Kafka Stream背景Kafka Stream是什么Kafka Stream是Apache Kafka从0.10版本引入的一个新Feature。它是提供了对存储于Kafka内的数据进行流式处理和分析的功能。Kafka Stream的特点如下:Kafka S...原创 2020-03-03 11:08:33 · 2278 阅读 · 0 评论 -
【Kafka】(十四)Kafka 架构深入
文章目录一、Kafka 工作流程及文件存储机制一、Kafka 工作流程及文件存储机制Kafka 中消息是以 topic 进行分类的,生产者生产消息,消费者消费消息,都是面向 topic的。topic 是逻辑上的概念,而 partition 是物理上的概念,每个 partition 对应于一个 log 文件,该 log 文件中存储的就是 producer 生产的数据。Producer 生产...原创 2020-02-26 00:10:25 · 1990 阅读 · 2 评论 -
【Kafka】(十三)broker 副本与 ISR 设计
kafka把分区的所有副本均匀地分配到所有broker上,并从这些副本中挑选一个作为leader副本对外提供服务,而其他副本被称为follower副本,只能被动地向leader副本请求数据,从而保持与leader副本的同步:所谓isr,就是Kafka集群动态维护的一组同步副本集合,每个topic分区都有自己的isr列表,isr中的所有副本都与leader保持同步状态,而producer写入的一条...原创 2020-02-25 19:14:28 · 1300 阅读 · 0 评论 -
【Kafka】(十二)Kafka 自定义分区器
一、默认的分区策略(1) 如果键值为 null,并且使用了默认的分区器,那么记录将被随机地发送到主题内各个可用的分区上。分区器使用轮询(Round Robin)算法将消息均衡地分布到各个分区上。(2) 如果键不为空,并且使用了默认的分区器,那么 Kafka 会对键取 hash 值然后根据散列值把消息映射到特定的分区上。这里的关键之处在于,同一个键总是被映射到同一个分区上,所以在进行映射时,我们...原创 2020-02-25 19:12:25 · 1215 阅读 · 0 评论 -
【Kafka】(十一)Kafka 的备份机制
Kafka的备份机制Kafka的备份的单元是partition,也就是每个partition都都会有leader partiton和follow partiton。其中leader partition是用来进行和producer进行写交互,follow从leader副本进行拉数据进行同步,从而保证数据的冗余,防止数据丢失的目的。 如图: follow副本是如何实现和leader副本进行数据...转载 2020-02-25 19:06:06 · 2597 阅读 · 0 评论 -
【Kafka】(十)Kafka 如何实现高吞吐量
1.顺序读写kafka的消息是不断追加到文件中的,这个特性使kafka可以充分利用磁盘的顺序读写性能顺序读写不需要硬盘磁头的寻道时间,只需很少的扇区旋转时间,所以速度远快于随机读写生产者负责写入数据,Kafka会将消息持久化到磁盘,保证不会丢失数据,Kafka采用了俩个技术提高写入的速度。1.顺序写入:在大学的计算机组成(划重点)里我们学过,硬盘是机械结构,需要指针寻址找到存储数据的位置...原创 2020-02-17 16:25:53 · 2531 阅读 · 0 评论 -
【Kafka】(九)项目中使用 Kafka 整合 Flume
文章目录一、启动 Kafka二、创建 Topic 消息队列三、查询 kafka 消息队列四、启动 consumer 监控窗口五、写 Flum 的自定义配置文件六、开启 Flume七、结果分析一、启动 Kafkakafka-server-start.sh /opt/soft/kafka211/config/server.properties 二、创建 Topic 消息队列kafka-top...原创 2020-02-15 15:31:34 · 1245 阅读 · 1 评论 -
【Kafka】(八)Kafka 集群安装与环境测试
一、下载二、安装前提(zookeeper安装)三、安装四、配置config/server.properties五、修改环境变量五、启动1、首先启动zookeeper集群2、启动Kafka集群服务原创 2020-02-15 15:56:47 · 1287 阅读 · 0 评论 -
【Kafka】(七)Kafka Streams 基本概念及API详解
1. KafKa Streams简介功能强大 高拓展性,弹性,容错 有状态和无状态处理 基于事件时间的Window,Join,Aggergations 轻量级 无需专门的集群 没有外部以来 一个库,而不是框架 完全集成 100%的Kafka 0.10.0版本兼容 易于集成到现有的应用程序 程序部署无...原创 2020-02-12 23:08:43 · 2756 阅读 · 1 评论 -
【Kafka】(六)Java 操作 kafka Streams
文章目录一、导入maven包二、编写第一个Streams应用程序:将一个topic写入另一个topic三、Line Split四、单行映射成多行一、导入maven包<!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients --> <dependency> <gr...原创 2020-02-11 23:00:26 · 1993 阅读 · 0 评论 -
【Kafka】(五)Java 操作 Kafka
文章目录一、创建消息队列二、pom.xml三、生产者四、消费者java操作kafka非常的简单,然后kafka也提供了很多缺省值,一般情况下我们不需要修改太多的参数就能使用。下面我贴出代码。一、创建消息队列kafka-topics.sh --create --zookeeper 192.168.56.137:2181 --topic demo8 --replication-factor 1 ...原创 2020-02-11 22:29:16 · 1413 阅读 · 0 评论 -
【Kafka】(四)Kafka Streams 转换算子详解
1.stateless transformation无状态的转换算子:流处理器不涉及状态的处理和存储1.1 branch分支 :将一个stream转换为1到多个Stream stream----->stream[] //branch 分流 KStream<String, String>[] streams = kStream.branch((k, ...原创 2020-02-11 21:47:41 · 2404 阅读 · 0 评论 -
【Kafka】(三)kafka 命令操作
1.KafKaServer管理1.启动KafKa单个节点kafka-server-start.sh2. 启动KafKa集群自定义脚本启动kafka集群;遍历brokers指定的代理列表取出每个节点,通过SSH方式登录该节点,执行kafka-server-start.sh脚本,启动Kafka。前提,需要确保安装配置了SSH;对自定义脚本赋予执行权限。因为Kafka运行在JVM之上,因此会...原创 2020-02-11 15:40:54 · 1547 阅读 · 0 评论 -
【Kafka】(二)kafka 核心组件
1.KafKa核心组件KafKa的核心功能模块:延迟操作组件; 控制器; 协调器; 网络通信; 日志管理器; 副本管理器; 动态配置管理器 心跳检测;1.延迟操作组件1.DelayedOperationKafKa将一些不立即执行而要等待满足一定条件之后才触发完成的操作称为延迟操作,并将这类操作定义为一个抽象类DelayedOperation,具有延迟操作的类继承Delaye...原创 2020-02-11 15:38:29 · 1638 阅读 · 1 评论 -
【Kafka】(一)kafka 简介与设计、实现分析
一、Kafka 简介1、Kafka 创建背景Kafka 是一个消息系统,原本开发自 LinkedIn,用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。现在它已被多家不同类型的公司 作为多种类型的数据管道和消息系统使用。活动流数据是几乎所有站点在对其网站使用情况做报表时都要用到的数据中最常规的部分。活动数据包括页面访问量(Page...原创 2020-02-10 23:48:09 · 2801 阅读 · 1 评论