详解Kafka: 大数据开发最火的核心技术

详解Kafka: 大数据开发最火的核心技术

架构师技术联盟 2019-06-10 09:23:51 本文共3268个字,预计阅读需要9分钟。

广告

大数据时代来临,如果你还不知道Kafka那你就真的out了(快速掌握Kafka请参考文章:如何全方位掌握Kafka核心技术)!据统计,有三分之一的世界财富500强企业正在使用Kafka,包括所有TOP10旅游公司,7家TOP10银行,8家TOP10保险公司,9家TOP10电信公司等等。

LinkedIn、Microsoft和Netflix每天都用Kafka处理万亿级的信息。Kafka主要应用于实时信息流的大数据收集或者实时分析(或者两者兼有)。Kafka既可以为内存微服务提供持久性服务,也可以用于向复杂事件流系统和IoT/IFTTT式自动化系统反馈事件。

为什么是Kafka?

Kafka常用于实时流数据结构的实时分析。由于Kafka是一种快速、可扩展、可持久和高容错的发布-订阅消息系统(publish-subscribe messaging system),所以Kafka对于一些Use Case(有大数据量和高响应需求)的支持远好于JMS、RabbitMQ和AMQP。相比于那些工具,Kafka支持更高的吞吐量,更高的稳定性和副本(replication)特性。这使得它比传统的MOM更加适合跟踪服务调用(可以跟踪每次调用)或跟踪IoT传感器数据。

Kafka可以与Flume/Flafka、Spark Streaming、Storm、HBase、Flink以及Spark配合使用,用于实时获取、分析和处理流数据。Kafka可以为Hadoop大数据湖(Hadoop BigData lake)提供数据流。Kafka Broker支持在Hadoop或Spark中低延时地处理和分析海量信息流。此外,Kafka子项目KafkaStreaming可用于实时分析。

什么是Kafka Use Case?

简而言之,Kafka用于流处理、网站活动跟踪、度量收集和监视、日志聚合、实时分析、CEP、将数据注入Spark和Hadoop、CQRS、重放消息、错误恢复以及分布式提交内存计算(微服务)的日志。

谁在使用Kafka?

许多需要快速处理大量数据的大公司都在使用Kafka。Kafka最初是由LinkedIn开发,用它来跟踪活动数据和运营指标。Twitter把它作为Storm的一部分来作为流处理的基础。Square把Kafka当作总线,将所有系统事件(日志,自定义事件,指标等)传输到各个Square数据中心,或者输出到Splunk,或者应用于Graphite(仪表板),或者实现Esper-like/ CEP警报系统。Spotify,Uber,Tumbler,Goldman Sachs,PayPal,Box,Cisco,CloudFlare和Netflix等公司也都在使用它。

为什么Kafka这么流行

首先最主要的原因是Kafka具有极佳的性能表现。它非常稳定,能提供稳定的持久化,具有灵活的订阅-发布消息队列,可与N个消费者群组进行良好扩展,具有强大的复制功能,为生产者提供可调整的一致性保证,并在碎片级别提供保留排序(即Kafka主题分区)。

其次,Kafka可以很好地兼容需要数据流处理的系统,并将这些系统融合、转换并加载到其他存储。另外,Kafka操作(配置和使用)都非常简单,而且Kafka的工作原理也很好理解。当然了,如果Kafka处理数据很慢,有再多其他优点都是没有意义的,所以,“多快好省”就是Kafka的最大优势。

为什么Kafka这么快

Kafka基于zero copy原则,深度依靠操作系统内核实现快速移动数据。Kafka能将数据记录分批处理。这些批次数据可以通过端到端的方式从生产者到文件系统(Kafka主题日志)再到消费者。批处理能实现更高效的数据压缩并减少I / O延迟。Kafka将不可变的提交日志写入连续磁盘,从而避免了随机磁盘访问和磁盘寻道速度慢的问题。Kafka支持增加分区进行横向扩展。它将主题日志分成几百个(可能有数千个)分区分布到数千个服务器。这种方式可以让Kafka承载海量负载。

Kafka Streaming

Kafka最常用于将数据实时传输到其他系统。Kafka作为一个中间层来解耦不同的实时数据管道。Kafka核心并不适合入数据聚合(Data Aggregation)或CEP等的直接计算。Kafka Streaming作为Kafka生态系统的一部分,提供了进行实时分析的能力。Kafka可以为 Storm、Flink、Spark Streaming以及你的服务和CEP系统提供快速通道系统(实时操作数据系统)。

Kafka也用于流数据批量数据分析。它将数据传输到大数据平台或RDBMS、Cassandra、Spark甚至S3中用于未来的数据分析。这些数据存储通常支持数据分析,报告,数据科学分析,合规性审计和备份。说了那么多,让我们来讨论一个终极命题:

到底什么是Kafka?

Kafka是一个分布式流平台,用于发布和订阅记录流。Kafka可以用于容错存储。Kafka将主题日志分区复制到多个服务器。Kafka的设计目的是为了让你的应用能在记录生成后立即就能处理。Kafka的处理速度很快,通过批处理和压缩记录有效地使用IO。Kafka会对数据流进行解耦。Kafka用于将数据流到数据湖、应用和实时流分析系统中。

Kafka支持多语言

客户端和服务器之间的Kafka通信使用基于TCP的线路协议,该协议是版本化和文档化的。Kafka承诺保持对老客户端的向后兼容性,并支持多种语言,包括C#,Java,C,Python,Ruby等多种语言。Kafka生态系统还提供REST代理,可通过HTTP和JSON轻松集成。Kafka还通过Kafka的融合模式注册(ConfluentSchema Registry)支持Avro模式。Avro和模式注册允许客户以多种编程语言制作和读取复杂的记录,并允许记录的变化。

Kafka的用途

Kafka支持构建实时流数据管道。Kafka支持内存微服务(比如actors,Akka,Baratine.io,QBit,reactors,reactive,,Vert.x,RxJava,Spring Reactor)。Kafka支持构建实时流应用程序,进行实时数据分析,转换,响应,聚合、加入实时数据流以及执行CEP。

Kafka可以用来协助收集度量标准或KPI,从多个来源收集统计信息并实现eventsourcing(将应用状态的所有更改捕获为事件序列)。可以将它与内存微服务和actor系统一起使用,以实现内中服务(分布式系统的外部提交日志)。

Kafka可以用来在节点之间复制数据,为节点重新同步以及恢复状态。虽然Kafka主要用于实时数据分析和流处理,但也可以将其用于日志聚合,消息传递,跟踪点击流,审计跟踪等等。

Kafka可扩展的消息存储

Kafka是一个很好的记录或信息存储系统。Kafka就像一个提交日志存储和复制的高速文件系统。这些特点使Kafka适用于各种应用场合。写入Kafka主题的记录会持久保存到磁盘并复制到其他服务器以实现容错。由于现在磁盘速度快而且相当大,所以这种方式非常有用。Kafka生产者可以等待确认,所以消息是持久的,因为生产者在复制完成之前不会完成写入操作。Kafka磁盘结构可以很好地扩展。磁盘在大批量流式传输时具有非常高的吞吐量。

此外,Kafka客户端和消费者可以控制读取位置(偏移量),这允许在出现重要错误(即修复错误和重放)时重播日志等用例。而且,由于偏移量是按照每个消费者群体进行跟踪的,所以消费者可以非常灵活地重播日志。

Kafka的记录保留

Kafka集群保留所有公布的记录。如果没有设置限制,它将保留所有记录直到磁盘空间不足。可以设置基于时间的限制(可配置的保留期限),也可以基于空间的限制(可根据存储空间进行配置)或精简(保留最新版本的记录)。除非被时间,空间或精简等策略删除,主题日志中的记录一直处于可用状态。由于Kafka总是在主题日志的末尾写入,所以它的消费速度不会受到大小的影响。

本文由 架构师技术联盟 发布在 ITPUB,转载此文请保持文章完整性,并请附上文章来源(ITPUB)及本页链接。
原文链接:http://www.itpub.net/2019/06/10/2112/

    • 发布在

大数据

原文地址:https://www.cnblogs.com/xibuhaohao/p/11043352.html

时间: 2024-08-04 15:24:29

详解Kafka: 大数据开发最火的核心技术的相关文章

CacheManager彻底解密:CacheManager运行原理流程图和源码详解(DT大数据梦工厂)

内容: 1.CacheManager重大价值: 2.CacheManager运行原理图: 3.CacheManager源码解析: BlockManager针对Cache这样的行为做了CacheManager Spark出色的原因: 1.Spark基于RDD构成了一体化.多元化的大数据处理中心(不需要再处理多种范式来部署多种框架,只要Spark!!!降低成本投入获得更高的产出): 2.迭代,因为在计算的时候迭代,在构建复杂算法的时候非常方便(图计算.机器学习.数据仓库),而CacheManager

Checkpoint彻底解密:Checkpoint的运行原理和源码实现彻底详解(DT大数据梦工厂)

内容: 1.Checkpoint重大价值: 2.Checkpoint运行原理图: 3.Checkpoint源码解析: 机器学习.图计算稍微复杂迭代算法的时候都有Checkpoint的身影,作用不亚于persist ==========Checkpoint到底是什么============ 1.Spark 在生产环境下经常会面临transformation的RDD非常多(例如一个Job中包含1万个RDD)或者具体transformation的RDD本身计算特别复杂或者耗时(例如计算时长超过1个小时

Spark2.0从入门到精通:Scala编程、大数据开发、上百个实战案例、内核源码深度剖析视频教程

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

大数据开发是干什么的?

大数据作为时下火热的IT行业的词汇,随之而来的数据开发.数据仓库.数据安全.数据分析.数据挖掘等等围绕大数据的商业价值的利用逐渐成为行业人士争相追捧的利润焦点.随着大数据时代的来临,大数据开发也应运而生. 大数据开发其实分两种,第一类是编写一些Hadoop.Spark的应用程序,第二类是对大数据处理系统本身进行开发.第一类工作感觉更适用于data analyst这种职位吧,而且现在Hive Spark-SQL这种系统也提供SQL的接口.第二类工作的话通常才大公司里才有,一般他们都会搞自己的系统或

大数据开发初学者该怎么做?

经常有初学者在问,自己想往大数据方向发展,该学哪些技术,学习路线是什么样的,觉得大数据很火,就业很好,薪资很高.如果自己很迷茫,为了这些原因想往大数据方向发展,也可以,那么我就想问一下,你的专业是什么,对于计算机/软件,你的兴趣是什么?是计算机专业,对操作系统.硬件.网络.服务器感兴趣?是软件专业,对软件开发.编程.写代码感兴趣?还是数学.统计学专业,对数据和数字特别感兴趣.. 其实这就是想告诉你的大数据的三个发展方向,平台搭建/优化/运维/监控.大数据开发/设计/架构.数据分析/挖掘.请不要问

离线和实时大数据开发实战

离线和实时大数据开发实战 目 录 前言 第一篇 数据大图和数据平台大图 第1章 数据大图 2 1.1 数据流程 2 1.1.1 数据产生 3 1.1.2 数据采集和传输 5 1.1.3 数据存储处理 6 1.1.4 数据应用 7 1.2 数据技术 8 1.2.1 数据采集传输主要技术 9 1.2.2 数据处理主要技术 10 1.2.3 数据存储主要技术 12 1.2.4 数据应用主要技术 13 1.3 数据相关从业者和角色 14 1.3.1 数据平台开发.运维工程师 14 1.3.2 数据开发.

秦皇岛达内:零基础小白如何成为大数据开发大牛

目前最火的大数据,很多人想往大数据方向发展,想问该学哪些技术,学习路线是什么样的,觉得大数据很火,就业很好,薪资很高.如果自己很迷茫,为了这些原因想往大数据方向发展,也可以,那么IT培训网小编就想问一下,你的专业是什么,对于计算机/软件,你的兴趣是什么?是计算机专业,对操作系统.硬件.网络.服务器感兴趣?是软件专业,对软件开发.编程.写代码感兴趣?还是数学.统计学专业,对数据和数字特别感兴趣. 其实这就是想告诉你的大数据的三个发展方向,平台搭建/优化/运维/监控.大数据开发/ 设计/ 架构.数据

大数据开发学习步骤

经常有初学者 问我,自己想往大数据方向发展,该学哪些技术,学习路线是什么样的,觉得大数据很火,就业很好,薪资很高.如果自己很迷茫,为了这些原因想往大数据方向发展,也可以,那么我就想问一下,你的专业是什么,对于计算机/软件,你的兴趣是什么?是计算机专业,对操作系统.硬件.网络.服务器感兴趣?是软件专业,对软件开发.编程.写代码感兴趣?还是数学.统计学专业,对数据和数字特别感兴趣. 其实这就是想告诉你的大数据的三个发展方向,平台搭建/优化/运维/监控.大数据开发/设计/架构.数据分析/挖掘.请不要问

联合国“全球脉动”计划 《大数据开发:机遇与挑战》

联合国"全球脉动"计划发布<大数据开发:机遇与挑战>2012 年 5 月 29 日,联合国"全球脉动"( Global Pulse)计划发布<大数据开发:机遇与挑战>报告,阐述了各国特别是发展中国家在运用大数据促进社会发展方面所面临的历史机遇和挑战,并为正确运用大数据提出了策略建议.1. 引言技术创新和数字设备的普及带来了"数据的产业革命".对日益扩大的数字数据的分析将揭示关于集体行为的潜在联系,并有可能改进决策方式.大数