最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

[综合] 项目中为什么通常flume和kafka要共同使用?

[复制链接]
跳转到指定楼层
楼主
发表于 2019-10-25 11:28:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Introduction(介绍)
Apache Kafka® 是一个分布式流平台,这到底是什么意思呢?


我们认为流平台应该具备3个关键作用:
1、发布订阅。(注意:发布和订阅应该分开)从这方面来看可以理解成为类似与消息队列之类的东西。


2、容错。Kafka是高容错的


3、offset,->记录已经处理过的数据。


Kafka的优点?
它被应用在两个广泛的应用领域中:
1、实时数据流管道
2、实时数据流的转换
说到底主要还是来做数据实时采集的。



让我们从底层来了解kafka是怎么来工作的吧。
首先简单介绍一下:
Kafka 可以跑在集群上的一个节点或多个节点上。 Kafka的数据是存在topic上面的 。 每条记录包含 key, value, timestamp.


Kafka有四种核心APIs:
Producer API
Consumer API
Streams API 允许Kafak充当流处理器。消费一个或者多个topic中的数据,输出到一个或多个topic中。
Connector API 和现有的应用程序或者数据系统链接,比如DB,可以获取到DB 中表的每次改动。
在卡夫卡中,客户端和服务器之间的通信是用一个简单的、高性能的、语言无关的TCP协议完成的。该协议是版本控制的,并且与旧版本保持向后兼容。我们为卡夫卡提供了一个Java客户端,但是客户端可以使用多种语言。


Topics and Logs


首先我们先来深入了解kafka中的topic。


Topic的字面意思是主题。可以理解成DB中的一张表。Topic都可以多订阅。也就说可以有一个或多个消费者来消费该topic
对于每个Topic,它会有如下图所示的日志分区文件:





每个分区是有序的,并且被不断追加的。每条数据都有一个顺序的id,该id被称作offset,也就是偏移量。
kafka 集群保存所有数据,除非该数据超过了配置信息中的保存期限。        比如,如果在配置文件中配置的过期时间是2天,那么数据在进入kafka之后的两天内是可以被消费的,超过两天后这些数据将会被删除已释放空间。但是长期保留数据对于kafka来说影响不大。


事实上,元数据这边主要保存的就是offset。Offset是由每个消费者自己控制的,所以消费者可以按照自己的喜好来消费这些数据。就比如说:消费者可以每次启动从头开始消费,可以设定某个offset重复消费某些数据,也可以跳过一下数据从最新的offset开始消费,比如:“now”。
这种特性的组合带来的好处是什么?那就是独立性,消费者的独立性。比如,消费者A随意的消费topic内的数据而不用担心它是否会影响到消费者B 的消费。
有分区的原因:第一、一个patition会有多个分区,每个分区都是互相独立的,他们的offset不会有任何羁绊,所以可以很大程度上的多并发。第二、作为存储数据的最小单位,并且是并行的它们会做的比这个更多。


Distribution分布式


在kafka中,分区是有副本概念的。副本按照一定的算法分布在不同的节点上。


每个分区都会产生一个leader,该leader会有一些follower,follower除了提供容错之外,还会充当之后的leader选举。也就是说当leader挂了之后,这些follower会通过选举机制完成新leader的选举。所以说,kafka是高容错、负载均衡的。
Producers生产者


Producers 没啥好说的。


Consumers消费者


Consumers 会有消费者组的概念,消费者组不需要提前定义。而是在使用消费者时随意制定消费者组,比如消费者A 可以指定为消费者组x。x 之前是不存在的。
同消费组中的消费者共享topic中的数据,不同消费者组之间是独立的。如下图所示:


上图是两个kafka节点,一个topic有四个分区p0-p3。我们发现,该topic有两个消费者组,CGA和CGB。CGA 中有两个消费者,根据动态算法自动负载均衡的消费分区数据。我们注意到,同一个分区在统一时间只能被一个消费者消费;而两个消费组之间并没有产生羁绊。
对于CGA,如果C1当掉,那么p0,p3将会被C2接管。如果C 1又重新启动,那么P0和p3会重新分配到C1上。然而对于CGB,如果再添加消费者挥发什么什么事情呢?
Guarantees保证


对于 Kafka 的高保证会有以下几点:
1、消息写入topic上的顺序会有保证,M1比M2早,那么M1的offset绝对比M2的小。
2、consumer 维护着自己的offset
3、可以容忍N-1个节点宕机。N是分区的副本数。
Kafka as a Messaging System作为消息系统
Kafka as a Storage System作为存储系统
Kafka for Stream Processing作为流处理器
Putting the Pieces Together碎片管理
————————————————
版权声明:本文为CSDN博主「陆山右」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41919236/article/details/84522423

楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-5-7 09:58

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表