kafka安装到实战教程(Python版)

Posted 大数据学编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kafka安装到实战教程(Python版)相关的知识,希望对你有一定的参考价值。

Kafka精华笔记从安装到实战(Python版)

1.kafka简介

​ kafaka是Apache旗下的顶级开业产品,的本质就是一个消息队列,把数据的实时处理转变为异步处理,也是当下最常用的一款产品

1.1 kafka的应用场景

​ 1.应用解耦合

​ 2.同步处理转换为异步处理

​ 3.限流削峰(秒杀活动)

1.2 Kafka架构图


Producer : 向Topic中生产数据

Broker: Kafka的节点,负责存储数据

Consumer: 从Topic中获取数据,再消费数据

Topic: 话题/主题 可以理解为一个逻辑容器,Producer向Topic中生产数据,Consumer向Topic中获取数据

分片:一个Topic可以划分为N个分片,数量没有限制,分片可以理解为把数据拆分成多个小块进行存储

副本: 每个分片都可以构建副本,但副本数量最大不能超过节点的数量,也就是说副本数量最多和节点数量一致,最少可以没有副本

2.Kafka的安装

软件安装包链接:https://pan.baidu.com/s/1sIZu7Lw6t8mRmvYaebQdaA?pwd=1111
提取码:1111

2.1 将Kafka的安装包上传到虚拟机,并解压

cd /export/software/
tar -zxf kafka_2.12-2.4.1.tgz -C ../server/

配置软连接:
cd /export/server
ln -s kafka_2.12-2.4.1 kafka

2.2 修改文件 server.properties

cd /export/server/kafka/config
vim server.properties
# 指定broker的id
broker.id=0
# 指定 kafka的绑定监听的地址
listeners=PLAINTEXT://192.168.88.161:9092
# 指定Kafka数据存放的位置
log.dirs=/export/server/kafka/data
# 配置zookeeper节点
zookeeper.connect=192.168.88.161:2181

2.3 配置KAFKA_HOME环境变量

vim /etc/profile
# 内容如下
# KAFKA_HOME
export KAFKA_HOME=/export/server/kafka
export PATH=:$PATH:$KAFKA_HOME
# 加载环境变量
source /etc/profile

2.4 启动服务器

注意:在启动Kafka之前,先得启动Zookeeper,这里就没论述Zookeeper相关知识了

# 前台启动:
./kafka-server-start.sh ../config/server.properties
# 后台启动:
nohup ./kafka-server-start.sh ../config/server.properties 2>&1 &
#推荐使用后台启动
# 验证是否启动成功
jps

3.Kafka实战

3.1 创建Topic

# 1.cd 进入kafka的bin目录
cd /export/server/kafka/bin

# 2.通过  kafka-topics.sh 创建Topic
./kafka-topics.sh --create  --zookeeper node1:2181 --topic test01 --partitions 3 --replication-factor 2
# 注意:一定要写zookeeper的地址,副本数量,分片数量

3.2 通过Python模拟消费者和生产者

3.1 生产者:以同步发送为演示

import os
import kafka

os.environ['SPARK_HOME'] = '/export/server/spark'
os.environ['PYSPARK_PYTHON'] = '/root/anaconda3/bin/python3'
os.environ['PYSPARK_DRIVER_PYTHON'] = '/root/anaconda3/bin/python3'

if __name__ == '__main__':
    # 1. 创建 kafka 生产者
    Producer = kafka.KafkaProducer(bootstrap_servers='node1:9092')

    # 2- 执行数据发送(生产)的操作
    # 发送 0~20的数据
    #    2.1 同步发送
    for i in range(20):
        #  数据是往Topic中发送
        data = Producer.send(topic='test01', 		               value=f'i'.encode('utf8')).get()  # get() 啥也不加,就是同步发送
        print(data.topic)  # 发送给那个topic
        print(data.partition)  # 发送到了那个分片上
        print(data.offset)  # 偏移量是多少

    Producer.close()

3.2消费者:消费数据

import os
import kafka

os.environ['SPARK_HOME'] = '/export/server/spark'
os.environ['PYSPARK_PYTHON'] = '/root/anaconda3/bin/python3'
os.environ['PYSPARK_DRIVER_PYTHON'] = '/root/anaconda3/bin/python3'

if __name__ == '__main__':
    # 指定Topic,绑定地址
    Consumer = kafka.KafkaConsumer('test01',
                                   bootstrap_servers='node1:9092',
                                   group_id='g_1') # group_id 给消费者分类

    for message in Consumer:
        topic = message.topic
        partition = message.partition
        offset = message.offset
        key = message.key
        value = message.value.decode('UTF-8')
        print(f'从topicpartition分片上,获取第offset偏移量的消息为key-value')

以上是关于kafka安装到实战教程(Python版)的主要内容,如果未能解决你的问题,请参考以下文章

(2022版)一套教程搞定k8s安装到实战 | StatefulSet

(2022版)一套教程搞定k8s安装到实战 | Deployment

(2022版)一套教程搞定k8s安装到实战 | InitContainer

(2022版)一套教程搞定k8s安装到实战 | HPA

(2022版)一套教程搞定k8s安装到实战 | DaemonSet

(2022版)一套教程搞定k8s安装到实战 | Volumes