初入大数据行业,需要熟悉的东西非常多,所以有将近半年的时候没有写过文章了。最近用到Kafka,简单研究了一下,将这些Kafka的使用方法记录一下,以供大家参考。
Kafka介绍
Kafka常常用于构建实时数据管道和流应用。它可以水平扩展,有容错机制,异常快速,并在上千家公司使用。
Kafka有三个关键技术
发布和订阅消息
以容错持久的方式存储记录流
在此过程中处理记录流
Kafka主要有四类APIs
生产者接口:让应用程序将一个或者多个记录流发布到Kafka主题
消费者接口:让应用程序从Kafka订阅和处理一个或者多个主题
流接口:让应用程序充当流处理器,从一个或者多个主题中消耗输入流,并转换成一个或者多个输出主题,从而将输入流有效的转换成输出流
连接器接口:允许构建和运行可重复使用的生产者或消费者,将Kafka主题连接到现有的应用程序或数据系统
主题
主题是Kafka的一个抽象概念,主题往往有多个订阅者。对于每一个主题,Kafka会维护一个分区日志,架构图如下:
分区
分区是一个逻辑概念,每个分区中的数据都是有序的、不可变的记录序列。分区中的每个记录都被分配一个偏移量,用来唯一的标识分区中的记录。
生产者只能往分区中追加数据,消费者可以从任何位置获取数据。消费者可以设置成旧的一个偏移量,获取旧得数据;也可以设置新的偏移量,跳过某些数据。
分区中数据的保存时间可以自由控制,假设设置数据保留两天,两天内任意时间点的数据都可以获取到。分区往往也是并行的一个单位,可以方便的并行处理其中的数据。
分组
消费者可以被分为不同的组,不同组的消费者可以收到相同的数据,相同组的消费者肯定收到的都是不同的数据。
Kafka下载安装启动
Kafka的安装和使用非常简单,按照下面步骤一步步做即可:
下载
Kafka的下载路径如下:
https://kafka.apache.org/downloads
也可以用下面命令直接下载:
wget http://mirror.bit.edu.cn/apache/kafka/1.1.0/kafka_2.11-1.1.0.tgz
安装
执行下面命令解压安装包:
tar zxvf kafka_2.11-1.1.0.tgz
安装Kafka之前需要先安装Zookeeper,并且修改config/server.properties中的zookeeper.connect配置参数,设置成Zookeeper的连接路径,例如:
localhost:2181
启动
Kafka的启动非常简单,直接执行下面命令即可:
./bin/kafka-server-start.sh config/server.properties
Kafka测试开发
Kafka安装好以后,确定是否可用,必须先创建一个主题,然后往主题中写入数据,再用消费者获取主题中的数据即可。
如果写程序往Kafka中写入数据还是需要一些时间的,平时开发时不太可能针对不同的应用写不同的生产者程序,Kafka提供了方便的生产者和消费者程序,方便开发者做开发调试。
创建主题
用下面命令可以创建一个名为test的主题:
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 2 --topic test
查看主题
可以用下面命令列出当前Kafka中所有的主题:
bin/kafka-topics.sh --list --zookeeper localhost:2181
生产数据
Kafka提供了命令行生成数据的工具,可以通过该工具很方便的将文件的数据发送给Kafka服务器,以便消费者开发人员进行调试,执行下面命令,可以进入交互界面,输入想发到Kafka的数据回车即可发送一条记录:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
如果发送的数据多,或者数据的格式比较特殊,这种发送方式比较麻烦,这时候可以将要发送的数据写入文件,并用下面命令发送到Kafka服务器:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
消费数据
如果是开发生产者程序,需要确定消费者收到的数据对不对,可以用Kafka提供命令行查看数据的工具,可以通过该工具很方便的将Kafka服务器的数据打印的屏幕上,以便生产者开发人员进行调试,执行下面命令,可以显示收到的所有数据:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
如果收到的数据过多,或者数据的格式比较特殊,也可以将收到的数据写入文件方便查看,下面命令将从Kafka服务器收到的数据打印的屏幕上:
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
删除主题
用下面命令可以删除指定主题:
bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic test
有的时候Kafka内部也会自动生成一些内部管理用的主题,这些主题没法手动删除,这些主题的名字如:__test_offsets
Kafka简单使用的介绍今天就介绍这么多,以后有时间再进行深入的介绍。
领取专属 10元无门槛券
私享最新 技术干货