前言:
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
生产中用到正常的组件:
- 3.1 Broker Configs
- 3.2 Topic Configs
- 3.3 Producer Configs
- 3.4 Consumer Configs
- 3.5 Kafka Connect Configs (新增组件)
- 3.6 Kafka Streams Configs (新增组件)
- 3.7 AdminClient Configs
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中如何保证消费的数据是有序的
以上答案,问若泽去吧。
大数据课程推荐: