【若泽大数据实战第十一天】Kafka(前置课彩蛋)

本文介绍了Kafka在大数据处理中的作用,强调了其作为消息系统在数据流处理中的重要地位,特别是在应对数据量激增时提供缓冲的能力。文章提到了Kafka的组件、配置以及与Flume的集成,还探讨了Kafka的版本和企业内部的使用情况,包括部署基于Zookeeper,数据保留策略等。
摘要由CSDN通过智能技术生成

前言:

HDFS在上几次课程中最多用的就是 ./start-dfs.sh 启动命令 或者 格式化 hdfs namenode -format,今天课程有个小小的彩蛋,讲了一些关于kafka的内容,我将相关的kafka的信息自己做了一些补充


Kafka 消息系统

app -----> Flum(收集)---> kafka ----->计算(Spark,Flink)  夯住或者作业失败 

                              生产者        boker (消息缓冲作用)        消费者

列举项目:

flume --> HDFS --> Hive 再用Spark 离线计算

 Flum(收集)---> kafka ----->计算(Spark,Flink) 在线实时


详解:当Flum接受数据要传输给Spark进行计算,例如遇到节假日,双十一等,数据量猛增的时候就必须用到kafka进行缓存,Spark如果只能计算2G的容量,一旦数据增加到100G,如果直接从Flume到Sprak,Spark会夯住,有kafka的存在大大的减少了Spark的压力,做实时就kafka+Sprak,做离线用hive+Spark。

首先有几个概念:

  • kafka是作为运行于一个或多个服务器集群,可以跨越多个数据中心。(也就是说一个上面可以装多个kafka)
  • kafka的群集存储的流记录在类别称为主题
  • 每个记录包括密钥的值和时间戳。

保障的一些特性:


国内如要做流处理的话70%以上都会选择kafka

kafka官网:http://kafka.apache.org/

kafka之前的名称和现在的名称是有区别的

(现在:分布式流式平台)

(以前:一个高可用分布式消息系统)

现在许多企业还是当做消息平台来使用还没用到流式平台,kafka的版本取决于Spark计算的组件的版本

Kafka在企业内有两个分支:

0.8.x

0.10.x


生产中用到正常的组件:

2. APIS

3. CONFIGURATION

Flume:1个进程包含三个角色

SOUCE

CHANNEL

SINK

Kafka:1个进程包含broker,包含自己本身

kafka的部署基于zookeeper 

topic:主题 或者理解为分类

topic1,2,3 

不同的业务发送到不到的管道内,

如:OA日志发送到OA指定的文件夹内,ERP也是一样的发送到自己的文件夹内,数据刷到自己的磁盘上面,数据一般保留7天。

爱奇艺网站内图中的分类,娱乐版块有自己的topice,不可能放到文学版块里去,这么说理解了吧。

Kafka的版本:

目前当前最新版本是1.1.0版本


之前版本:


Kafka的源码是Scala写的,一般企业用到的是2.10.4版,


解读下版本信息:图中2.11是Scala的版本 0.10.2.1是Kafka的版本


【若泽大数据实战】

实战版本


解压:

[root@hadoop-01 software]# tar -zxvf kafka_2.11-0.10.0.1.tgz

kafka文件夹内的bin目录下有非常多的脚本我们要用到一下几个脚本:


kafka-topics.sh

kafka-server-start.sh

kafka-server-stop.sh

kafka-console-consumer.sh

kafka-console-producer.sh

还有一个config目录底下:

server.properties


Kafka体系结构图:


解读图中的意思,生产者将100G的数据分成两部分,各50G存入到两个节点Access的内存上,然后在每个盘上做冗余,多一份自身节点的数据,来确保生产者A如果挂掉了,生产者B里面有A的数据,不至于B会挂掉。对key做hash被mapreduce的数量去磨,否则不能保证相同的key被分配到同一个reduce上去。

一个topic有N个partition,一个partition有N个副本


图中P0 P1 P2 P3理解为Producer 生产者 ,C1 C2理解为 Consumer 消费者,多个C可以分到一个生产者组里,Server1和Server2理解为Broker。

【若泽大数据面试题】

问题1:producer如何保证你的数据正常落地

生产者(Fulme)他是把我们的数据丢掉我们的topic(Kafka)里面去,然后消费者(Spark)可以从topic里面把数据拿出来,进行一个消费计算,中间的linux机器可以理解为broker

问题2:生产的时候分partition的机制

问题3:partition和Broker的关系,partition0会分配在Broker那台服务器上,partition1会分配在Broker哪台服务器上

问题4:Broker中存储的格式是真么样的,Kafka的数据是卸载磁盘上的,为什么kafka的性能这么高,1秒钟5~600M

问题5:Kafka中如何保证消费的数据是有序的

以上答案,问若泽去吧。

大数据课程推荐:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值