大数据开发之kafka 简介、架构、安装

Kafka 简介

kafka 是一个分布式的、可分区的、可复制的消息发布和订阅系统,具有高性能和高吞吐率。

kafka 消息队列的特点如下:

1.消费者和生产者模式

2.FIFO先进进出的有序性

3.分布式

4.高吞吐率

5.消息被处理的状态是在 consumer 端维护的,而不是由 server 进行维护的。所以,失败的时候,还可以自动平衡。

理解上面的特点:

1.生产者和消费者,在 kafka 中只要是谁生产数据,谁就是生产者。谁要是消费数据,谁就是消费者。

2.先进先出(比如排队,先来的来办事情)。

3.分布式的,前面学到的 flume 也是分布式的,每个组件都可以扩展。kafka 所有的组件:broker(服务段集群)、producer(生产者集群)、concumer(消费者集群)都是分布式的。所以 kafka 的扩展性好、可靠性高。可以做到负载均衡和副本冗余。看下图:

4.高吞吐率。上面说到 kafka 的每个节点都可以分布式,所以他可以为消息的分布和订阅提供高吞吐量,单节点支持上千个客户端,百兆每秒的网络IO。

5.消息的状态在 consumer 端进行维护,保存在 zookeeper 中,但是老师提了一下保存在 kafaka 中。

6.持久化:持久化到磁盘而且性能好!kafak 本身采用零拷贝技术,不受速度的限制。

对大数据以及人工智能概念都是模糊不清的,该按照什么线路去学习,学完往哪方面发展,想深入了解,想学习的同学欢迎加入大数据学习qq群:458345782,有大量干货(零基础以及进阶的经典实战)分享给大家,并且有清华大学毕业的资深大数据讲师给大家免费授课,给大家分享目前国内最完整的大数据高端实战实用学习流程体系 。从java和linux入手,其后逐步的深入到HADOOP-hive-oozie-web-flume-python-hbase-kafka-scala-SPARK等相关知识一一分享!

Kafka 消息队列常用场景

1.系统间的解耦。

2.峰值压力缓冲。

3.异步(并行)通信。

4.一些常规的消息系统。

Kafka 架构

producer(生产者),自己决定自己往哪一个 partition 写数据,这里的策略可以是轮询、hash 。

consumer(消费者),自己保存消费的消息的 offset ,消费者会按照顺序消费消息,也就是说 offset 按照线性向前驱动。可以认为 offset 是 partition 中 Message 的 id。

broker:Kafka集群的server服务。负责处理消息的读、写请求,存储消息。

topic:一个Topic可以认为是一类消息,每个topic将被分成多个partition(区),每个partition在存储层面是append log文件。任何发布到此partition的消息都会被直接追加到log文件的尾部,每条消息在文件中的位置称为offset(偏移量),offset为一个long型数字,它是唯一标记一条消息。它唯一的标记一条消息。kafka并没有提供其他额外的索引机制来存储offset,因为在kafka中几乎不允许对消息进行“随机读写”。 

一个topic分成多个partition。 每个partition内部消息强有序,其中每个消息都有一个序号叫offset。 一个partition之对应一个broker,一个broker可以有多个partition。 消息不经过内存缓冲,直接写入文件。根据时间策略删除,而不是消费完就删除

partitions的设计目的有多个.最根本原因是kafka基于文件存储.通过分区,可以将日志内容分散到多个server上,来避免文件尺寸达到单机磁盘的上限,每个partiton都会被当前server(kafka实例)保存;可以将一个topic切分多任意多个partitions,来消息保存/消费的效率.此外越多的partitions意味着可以容纳更多的consumer,有效提升并发消费的能力。

安装部署

1.选择2.10版本的kafka,因为scala2.10版本的兼容性比较好。

2.config/server.properties 配置broker.id从0开始,后面其他节点配置1,2,3,4等等。

3.事先启动zookeeper集群,这里配置zookeeper集群的地址。

zookeeper.connect=node01:2181,node02:2181,node03:2181

4.启动:

nohup bin/kafka-server-start.sh config/server.properties > kafka.log 2>&1 &

可以把上述命令写到一个脚本中,vim start-kafka.sh ,之后启动只需要运行脚本即可。

5.把配置好的安装包,分发到其他节点上。注意修改 broker.id

猜你喜欢

转载自blog.csdn.net/haotian1685/article/details/89512415