大数据技术开发最火的核心技术-Kafka

Kafka是一款高性能的实时流处理工具,广泛应用于世界顶级企业和大数据实时分析。其高速、稳定、易扩展的特性使其在实时信息流、日志聚合、流处理等领域表现出色。Kafka支持与多种大数据工具集成,如Spark、Storm和Hadoop,用于实时数据获取、分析和处理。其基于zero copy原则和批处理,确保高效的数据传输和存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

大数据时代来临,如果你还不知道Kafka那你就真的out了!据统计,有三分之一的世界财富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中用于未来的数据分析。这些数据存储通常支

持数据分析,报告,数据科学分析,合规性审计和备份。

 

很多初学者,对大数据的概念都是模糊不清的,该按照什么线路去学习,学完往哪方面发展,想深入了解,想学习的同学欢迎加入大数据学习qq群:199427210,有大量干货(零基础以及进阶的经典实战)分享给大家,并且有清华大学毕业的资深大数据讲师给大家免费授课,给大家分享目前国内最完整的大数据高端实战实用学习流程体系
 

kafka作为一个大数据的必备内容,可以作为大数据的基本标志,下面我们将介绍如何学习大数据

简介

  • #概念:消息中间件(消息系统)
  • //消息系统分类:

  • 点对点 消息队列(peer-to-peer)

Kafka基础理论理解,欲走大数据之路必铺石阶,行走的kafka!

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  • 发布/订阅 消息队列

Kafka基础理论理解,欲走大数据之路必铺石阶,行走的kafka!

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  • 消费者在消费时,是通过pull 主动从broker中拉取数据的

#作用:缓存地带

#消息系统适用场景

  • 解耦 各位系统之间通过消息系统这个统一的接口交换数据,无须了解彼此的存在
  • 冗余 部分消息系统具有消息持久化能力,可规避消息处理前丢失的风险
  • 扩展 消息系统是统一的数据接口,各系统可独立扩展
  • 峰值处理能力 消息系统可顶住峰值流量,业务系统可根据处理能力从消息系统中获取并处理对应量的请求
  • 可恢复性 系统中部分组件失效并不会影响整个系统,它恢复后仍然可从消息系统中获取并处理数据
  • 异步通信 在不需要立即处理请求的场景下,可以将请求放入消息系统,合适的时候再处理

#架构


Kafka基础理论理解,欲走大数据之路必铺石阶,行走的kafka!

 


主要分为3部分

生产者(producer),消费者(consumer),kafka(broker)外加一个zookeeper来储存源数据

Broker 中可以包含多个topic ,topic 是一个逻辑存在的基本运行单元

topic 中可以包含多个partation, partition是真正存储数据的地方,类似于书架,一个partition是一个强有序的队列

partition是由segmend组成的

segmend由两部分组成

一部分是.log结尾的文件,作用存储kafka的数据

另一部分是.index结尾的文件,作用kafka存储数据的索引文件

#过程

生产者: 对数据的生产可以使用同步生产也可以使用异步生产,将生产完成的数据 push到kafka中

 

kafka:  kafka收到生产者生产的数据后,将数据保存到具体的partition中,将该批数据的元数据信息写到zookeeper上,

消费者:  当消费者要消费数据时,会先从zookeeper中获取数据偏移量以及元数据,获取之后,通过主动拉取的形式来消费数据。

#kafka数据生产的格式:

* (key,value)格式的数据:在对数据进行存储的时候,采用的存储策略是对key进行hashcode取模来进行具体分配到哪个partiton中进行存储

* string格式的数据:在对数据进行存储的时候,采用的策略是轮训策略。

如果以上的存储策略都不符合业务生产需求,可以自定义存储策略 需要集成Partitioner接口

  • 目录结构
  • 注意:演示的所有的命令行操作都在bin目录下进行

Kafka基础理论理解,欲走大数据之路必铺石阶,行走的kafka!

 

  • 配置详解

Kafka基础理论理解,欲走大数据之路必铺石阶,行走的kafka!

 

要想启动,我们只需要修改kafka的配置文件就可以了

Kafka基础理论理解,欲走大数据之路必铺石阶,行走的kafka!

 

注意

1.外网地址尽量写ip,别写主机名,不然可能访问不到

2.本地地址如果写ip地址的话,启动producer,consumer 参数为本地ip

3.本地地址如果写localhost的话,启动producer,consumer参数为localhost

默认localhost

Kafka基础理论理解,欲走大数据之路必铺石阶,行走的kafka!

 

  • 服务启动与查看
  •  
  • 由于kafka服务以来与zookeeper所以需要先启动zookeeper
  • 而zookeeper又需要java 来支持,所以需要大家自行准备jdk
  •  
  • 命令

启动zookeeper服务 ./zookeeper-server-start.sh ../config/zookeeper.properties

Kafka基础理论理解,欲走大数据之路必铺石阶,行走的kafka!

 

启动kafka服务./kafka-server-start.sh ../config/server.properties

Kafka基础理论理解,欲走大数据之路必铺石阶,行走的kafka!

 

创建topic

./kafka-topics.sh --zookeeper localhost:2181 --create --topic test4 --partitions 3 --replication-factor 1

--zookeeperzookeepe连接地址:端口

--create 说明要创建

--topic topic名称

--partitions partitions数量

Kafka基础理论理解,欲走大数据之路必铺石阶,行走的kafka!

 

启动生产者

./kafka-console-producer.sh --broker-list localhost:9092 --topic test3

由于生产者并不依赖于zookeeper,但是生产者需要知道写入数据到那个broker中的

又因为topic 是运行的基本单元,因此需要指定topic以及broker所在地址

Kafka基础理论理解,欲走大数据之路必铺石阶,行走的kafka!

 

启动消费者

./kafka-console-consumer.sh --zookeeper localhost:2181 --topic test3

Kafka基础理论理解,欲走大数据之路必铺石阶,行走的kafka!

 

在生产者发送数据 可以看到消费者已经在消费

Kafka基础理论理解,欲走大数据之路必铺石阶,行走的kafka!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值