大数据之Kafka技术详解(一)

大数据之Kafka技术详解

文章适合新手了解Kafka的全过程。文章在编写过程中难免有疏漏和错误,欢迎大佬指出文章的不足之处;更多内容请点进👉 Lino_White 👈查看。

未来的世界充满着各式各样的数据,我们该怎么好好利用起来呢?开启《大数据之Kafka技术详解(一)》正文吧~~~

1、Kafka简答

(1)Kafka是什么?

Kafka是一种高吞吐量,分布式基于发布/订阅模式消息队列(MQ,Message Queue)系统,主要应用于大数据实时数据领域。
在网页浏览,搜索和其他用户的行动等数据,通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。
对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案,所以在搭配方面可以跟Flume一起使用。
Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。

(2)Kafka有什么用?

解耦、可恢复性、缓冲、灵活性&峰值处理能力、冗余、异步通信、顺序保证。

(3)Kafka怎么使用?

在Kafka官网下载包:http://kafka.apache.org/downloads
安装教程这里不做介绍,需要的可以自行百度。

(4)消息队列小知识

消息队列(MQ,Message Queue)分为:同步处理异步处理两种。
同步处理:生产者跟消费者必须同时在线,任意一个掉线则消息队列行为失败;
异步处理:生产者跟消费者不需要同时在线,生产者在线生成数据时消费者可以掉线,消费者上线后可以拉取之前生产者所生成的数据(类似于我们比如的实时通讯软件:QQ,微信;当你掉线有人发消息给你,你几小时上线再收取消息一样的情况)。

对于使用消息队列的好处则跟kafka类似。

消息队列有两种模式:点对点模式(一对一,消费者主动拉取数据,消费消息后消息清除)和发布/订阅模式(一对多,消费者消费数据后不会清除消息)。
而在发布/订阅模式中又分为:生产者一有数据,将消息发给消费者(不管消费者能不能能力消费);消费者想拉取消息的时候自己去拉取消息。
前者容易让消费者出现“消化不良”现象,后者容易让消费者拉取消息的时候并没有消息造成“空手而归”。

2、Kafka基础架构

这里提供两张图,图一由小编画的,图二由尚硅谷教程中的图片。

注意:图二提到的Kafka0.9版本之前的offset是存储在Zookeeper的,0.9版本及之后的offset是存储在本地,减轻频繁访问Zookeeper的操作。
图一
图二

(1)Producer(生产者)

Producer:消息生产者。向Kafka Broker发消息的客户端。

(2)Consumer(消费者)

Consumer:消息消费者。向Kafka Broker取消息的客户端。

(3)Consumer Group(GG,消费组)

Consumer Group(GG):消费者组,有多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内的消费者消费;消费者组之间互不影响。
所有消费者都属于一个消费者组的话,逻辑上的一个订阅者。

(4)Broker(服务器)

Broker:一个broker就是一台Kafka服务器。一个集群由多个broker组成;一个broker可以容纳多个topic。

(5)Topic(主题)

Topic:主题。生产者和消费者面向的都是一个topic。

(6)Partition(分区)

Partition:分区。为了实现扩展性,一个topic可以分布到多个broker上,一个topic可以分为多个parition。

(7)Replica(副本)

Replica:副本,为保证在集群中某个节点发生故障时,集群提供的服务仍旧正常运行,parition数据不丢失。
Kafka提供副本机制,一个topic的每个分区都有n个副本,一个leader和n个follower。

(8)leader(主)

leader:副本的主。生产者发送数据的对象以及消费者消费数据的对象都是leader。

(9)follower(从)

follower:副本的从。实时从leader中同步数据,保持和leader数据的同步。
leader发生故障时,某个follower会成为新的follower。

3、Kafka使用教程(Topic增删改查)

由Kafka服务器创建topic,当中定义topic名称、副本数量、分区数量。再将Producer和Consumer的客户端启动,由Producer发送消息,Consumer实时消费消息。

以下为简单的案例:

这里示范的Kafka服务器有三台,分为no1、no2、no3(Kafka集群的节点数为3)。
这里示范的生产者和消费者客户端各一台,分为log1、log2。
注意:定义副本数量时不可超过节点数!

no1服务器上创建topic(定义名为white,副本数量3,分区数量2的topic):

[no1]$ kafka/bin/kafka-topics.sh --zookeeper no1:2181 --create --replication-factor 3 --partitions 2 --topic white

查看当前no1服务器所有的topic:

[no1]$ kafka/bin/kafka-topics.sh --zookeeper no1:2181 --list

查看topic为white的详情:

[no1]$ kafka/bin/kafka-topics.sh --zookeeper no1:2181 --describe --topic white

修改topic为white的分区数:

[no1]$ kafka/bin/kafka-topics.sh --zookeeper no1:2181 --alter --topic white --partitions 3

生产者客户端log1 发送消息(发送“hello,white_mvlog”):

[log1]$ kafka/bin/kafka-console-producer.sh --broker-list no1:9092 --topic white

>hello,white_mvlog

消费者客户端log2 接收消息

#这里分三种接收消息方法
#第一种:使用Kafka0.9之前的版本命令行来接收消息;
#第二种:使用Kafka0.9和之后的版本命令行来接收消息;
#第三种:与第二种类似,另加将掉线时未消费的消息抓取出来接收;

#************************第一种**********************************
[log1]$ kafka/bin/kafka-console-consumer.sh --zookeeper no1:2181 --topic white

#************************第二种**********************************
[log1]$ kafka/bin/kafka-console-consumer.sh --bootstrap-server no1:2181 --topic white

#************************第三种**********************************
[log1]$ kafka/bin/kafka-console-consumer.sh --bootstrap-server no1:2181 --topic white --from-beginning

删除topic名字为white的:

[no1]$ kafka/bin/kafka-topics.sh --zookeeper no1:2181 --delete --topic white

[ 详解二PS说明 ]

这里的详解一,仅有Kafka的简单介绍和简单使用案例。
详解二请关注小编博客,查看Kafka的栏目即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值