Kafka 入门(一)--安装配置和 kafka-python 调用
一、Kafka 简介
1.基本概念
Kafka 是一个分布式的基于发布/订阅消息系统,主要应用于大数据实时处理领域,其官网是:http://kafka.apache.org/。Kafka 是一个分布式、支持分区的(Partition)、多副本的(Replica),基于 ZooKeeper 协调的发布/订阅消息系统。
Kafka 有以下三个基本概念:
- Kafka 作为一个集群运行在一个或多个服务器上;
- Kafka 集群存储的消息是以 Topic 为类别记录的;
- 每个消息是由一个 Key,一个 Value 和时间戳构成。
2.基本架构
Kafka 的基本架构图如下:

- Producer:生产者,就是向 Broker 发消息的客户端;
- Consumer:消费者,就是从 Broker 取消息的客户端;
- Consumer Group:消费者组,由多个消费者组成。组内每个消费者负责消费不同分区的数据,一个分区的数据只能由一个组内的消费者进行消费,组内消费者之间互不影响;
- Broker:一个 Kafka 服务器就是一个 Broker,一个集群由多个 Broker 组成;
- Topic:主题,可以理解为队列,生成者和消费者都是用的同一个队列;
- Partition:分区,为实现扩展性,一个大的 Topic 可以分散到多个 Broker 上,一个 Topic 可以分为多个 Partition;
- Replica:副本,保证集群中某个节点发生故障时,该节点上的数据不丢失。
二、Ubuntu 下安装 Kafka
1.安装 Java
更新软件包
sudo apt-get update
安装 openjdk-8-jdk
sudo apt-get install openjdk-8-jdk
查看 Java 版本,检查是否安装成功

2.安装 ZooKeeper
1)安装
下载 ZooKeeper:http://mirrors.hust.edu.cn/apache/zookeeper/。
下载好之后解压(注意:3.5.5之后的版本应该下载文件名中带“bin”的压缩包),再执行如下命令:
sudo mv apache-zookeeper-3.5.8-bin /usr/local/zookeeper
cd /usr/local/zookeeper
cp conf/zoo_sample.cfg conf/zoo.cfg
其中有一些配置参数:
- tickTime:Zookeeper 使用的基本时间单元,默认值2000;
- initLimit:Zookeeper 中连接同步的最大时间,默认值为10;
- syncLimit:Zookeeper 中进行心跳检测的最大时间,默认值为5;
- dataDir:数据库更新事物保存的目录;
- clientPort:Zookeeper 服务监听的端口,默认值为2181。
2)配置
修改 /etc/profile 文件,增加如下内容:
export ZOOKEEPER_HOME=/usr/local/zookeeper/
export PATH=$PATH:$ZOOKEEPER_HOME/bin
更新环境变量
source /etc/profile
3)测试
首先进入 bin 目录,开启服务:

再启动 CLI 连接服务:

3.安装 Kafka
1)安装
下载 Kafka:http://kafka.apache.org/downloads。

下载好之后解压,再执行如下命令:
sudo mv kafka_2.13-2.5.0/ /usr/local/kafka
cd /usr/local/kafka
2)测试
由于前面已经启动了 Zookeeper 服务,所以这里只需要执行如下命令来开启 Kafka 服务:
bin/kafka-server-start.sh config/server.properties
通过输出信息可以看到 Kafka 服务已经成功开启了,截图如下:

但这样开启之后是阻塞的了,我们可以在中间加一个“-daemon”即开一个守护进程来运行,则命令如下:
bin/kafka-server-start.sh -daemon config/server.properties
创建一个主题,用一个分区和一个副本创建一个名为“mytopic”的主题:
bin/kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --topic mytopic

这样就已经创建成功了,然后可以使用如下命令查看主题:
bin/kafka-topics.sh --list --zookeeper 127.0.0.1:2181
Kafka 有一个命令行服务端,它将从文件或标准输入中获取输入,并将其作为消息发送到 Kafka 集群。默认情况下,每行将作为单独的消息发送:
bin/kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic mytopic
同样的,Kafka 还有一个命令行客户端,可以从 Kafka 集群中获取消息:
bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic mytopic --from-beginning

三、kafka-python 使用
1.安装 kafka-python
pip3 install kafka-python
2.创建 Consumer
Consumer 消费者负责从 Kafka 中获取消息进行处理,需要实例化 KafkaConsumer 这个类。
from kafka import KafkaConsumer
consumer = KafkaConsumer("test", bootstrap_servers=["localhost:9092"])
for msg in consumer:
print(msg)
3.创建 Producer
Producer 生产者负责向 Kafka 生产和发送消息,需要实例化 KafkaProducer 这个类。
from kafka import KafkaProducer producer = KafkaProducer(bootstrap_servers="localhost:9092")
for i in range(10):
producer.send("test", "Hello {}".format(i).encode("utf-8"))
producer.close()
4.运行测试
先运行消费者程序,再运行生产者程序,消费者一直在监听,等到生产者发送消息,消费者就把消息取出,运行结果如下:

可以看到其中每个消息都包含了主题、分区、消息内容、时间戳等信息。
Kafka 入门(一)--安装配置和 kafka-python 调用的更多相关文章
- 在Centos 7上安装配置 Apche Kafka 分布式消息系统集群
Apache Kafka是一种颇受欢迎的分布式消息代理系统,旨在有效地处理大量的实时数据.Kafka集群不仅具有高度可扩展性和容错性,而且与其他消息代理(如ActiveMQ和RabbitMQ)相比,还 ...
- (Linux环境Kafka集群安装配置及常用命令
Linux环境Kafka集群安装配置及常用命令 Kafka 消息队列内部实现原理 Kafka架构 一.下载Kafka安装包 二.Kafka安装包的解压 三.设置环境变量 四.配置kafka文件 4.1 ...
- kafka介绍及安装配置(windows)
Kafka介绍 Kafka是分布式的发布—订阅消息系统.它最初由LinkedIn(领英)公司发布,使用Scala和Java语言编写,与2010年12月份开源,成为Apache的顶级项目.Kafka是一 ...
- Kafka集群安装部署、Kafka生产者、Kafka消费者
Storm上游数据源之Kakfa 目标: 理解Storm消费的数据来源.理解JMS规范.理解Kafka核心组件.掌握Kakfa生产者API.掌握Kafka消费者API.对流式计算的生态环境有深入的了解 ...
- 【菜鸟入门】安装配置eclipse 并编写运行第一个Java程序
不得不吐槽一下,安装配置这eclipse真是太费劲了...下面总结一下,以便下次再安装 本人 win10系统,64位机 一.在官网下载eclipse安装包 文件名:eclipse-inst-win64 ...
- zookeeper和Kafka集群安装配置
3个虚拟机,首先关闭防火墙,在进行下面操作 一.java环境 yum list java* yum -y install java-1.8.0-openjdk* 查看Java版本 Java -vers ...
- kafka集群安装配置
1.下载安装包 2.解压安装包 3.进入到kafka的config目录修改server.properties文件 进入后显示如下: 修改log.dirs,基本上大部分都是默认配置 kafka依赖zoo ...
- Kafka入门(安装及使用)
Kafka是一种分布式的,基于发布/订阅的消息系统. Kafka的组成包括: Kafka将消息以topic为单位进行归纳. 将向Kafka topic发布消息的程序成为producers. 将预订to ...
- linux 安装配置 sublime 进行 python 开发
1. 下载sublime 地址:http://www.sublimetext.com/3 2. 解压出来,将sublime_text_3 文件夹的名字改为 sublime_text , 然后将 sub ...
- Redis安装配置及在Python上的应用
最近在使用Kazoo(开源电话系统) API时,一次请求的处理需要调用几次API,只为了得到一个name和id的对应关系,耗时非常大,开始想使用一种简单的实现,直接将对应关系保存到静态类的静态变量中, ...
随机推荐
- easymock案例2
public interface IStudent { public String doMethod1(); public String doMethod2(); public String doMe ...
- QT5 解析JSON文件
QT读JSON文件步骤,这里把过程记录一下,网上大多都是怎么写json的,对于读的,记录的不多 首先JSON文件格式必须为UTF-8(非UTF-8 with BOM),UTF-8 with BOM 即 ...
- 深度学习“四大名著”发布!Python、TensorFlow、机器学习、深度学习四件套!
Python 程序员深度学习的"四大名著": 这四本书着实很不错!我们都知道现在机器学习.深度学习的资料太多了,面对海量资源,往往陷入到"无从下手"的困惑出境. ...
- 前端基础:”天龙八步“细说浏览器输入URL后发生了什么
参考:https://www.xuecaijie.com/it/157.html#1Q64p5DeC8dKFF 本文摘要: 1.DNS域名解析: 2.建立TCP连接: 3.发送HTTP请求: 4.服务 ...
- dubbo源码解析之负载均衡
在分布式系统中,负载均衡是必不可少的一个模块,dubbo 中提供了五种负载均衡的实现,在阅读这块源码之前,建议先学习负载均衡的基础知识.把看源码当做一个印证自己心中所想的过程,这样会得到事半功倍的效果 ...
- NodeMCU手把手入门:配置NodeMCU ESP8266开发板环境及点亮LED灯
之前一直在玩树莓派,最近实验室买了些NodeMCU就想着玩一玩,没想到挺有意思的.其实树莓派能实现的功能,它大部分也可以,价格比派也便宜不少,舍不得买派的同学可以先买这个开发板玩一玩. 本文主要介绍了 ...
- 《UNIX环境高级编程》(APUE) 笔记第四章 - 文件和目录
4 - 文件和目录 1. 函数 stat.fstat.fstatat 和 lstat #inlcude <sys/stat.h> int stat(const char *restrict ...
- 08 . Kubernetes之 ingress及Ingress Controller
Ingress简介 ingress是什么? 上篇文章介绍service时有说了暴露了service的三种方式ClusterIP.NodePort与LoadBalance,这几种方式都是在service ...
- less的使用几个技巧
1.层级关系 让这个box范围内的全部包进来,这样的话就完美的进行调节,再也不用到处找第几行第几个,我刚才在哪个位置给覆盖了.一看便知! .box{ width: 100%; height: 300p ...
- HDU 2157 How many ways?? 题解
题目 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的路线 ...