Kafka集群配置

Kafka集群的搭建与常用命令

​ Kafka 是一个分布式流处理平台。它最初被设计为一个高吞吐量的分布式发布-订阅消息系统,但随着时间的推移,Kafka已经发展成为一个强大的数据管道和流处理平台,能够处理实时数据流。

Kafka的核心概念和组件

  1. Broker(代理):Kafka集群中的一台或多台服务器,负责存储消息和复制数据。
  2. Topic(主题):Kafka中的消息以主题为单位进行归类,生产者发送消息到特定的主题,消费者订阅这些主题以接收消息。
  3. Producer(生产者):向Kafka主题发送消息的客户端应用程序。
  4. Consumer(消费者):从Kafka主题读取消息的客户端应用程序。Kafka允许一个主题被多个消费者组消费,每个消费者组内的消费者共同消费主题内的所有消息,但每个消息只会被组内的一个消费者消费(除非配置了不同的消费模式)。
  5. Partition(分区):Kafka中的每个主题被划分为一个或多个分区,每个分区是一个有序的、不可变的消息序列,这些消息被顺序地追加到分区中。分区使得Kafka能够并行处理数据,提高吞吐量。
  6. Offset(偏移量):Kafka中每个消息都有一个唯一的偏移量,它标识了消息在分区中的位置。消费者通过跟踪偏移量来知道它已经读取到了哪个位置的消息。
  7. Replica(副本):Kafka为分区提供了副本机制以提高数据可靠性和容错性。每个分区可以有多个副本,其中一个副本被选为leader,负责处理读写请求,其余副本为follower,它们从leader复制数据以保持与leader的数据一致。
  8. ZooKeeper:Kafka严重依赖ZooKeeper进行集群管理、配置管理和状态同步。ZooKeeper帮助Kafka存储元数据,如broker信息、topic和partition的元数据等。

Kafka集群部署

​ Kafka主要开发语言是Java,同时也使用了Scala开发了一些工具,同时Kafka严重依赖Zookeeper进行集群管理,因此在搭建Kafka时需要配置JDK和Scala SDK和Zookeeper集群。

  1. 安装JDK。
    在3台节点中安装JDK1.8
    详细安装流程请参考链接:Linux安装JDK

  2. 安装Scala2.12 SDK

在3台节点中安装Scala2.12
详细安装流程请参考链接:Linux安装Scala2.12

  1. 安装Zookeeper集群

    详细安装流程请参考链接:Zookeeper集群部署安装

  2. 安装Kafka集群

    本次案例是将kafka集群安装在master、slaves1、slaves2节点上

    4.1 下载Kafka

    Kafka官网下载地址为:Apache Kafka,本案例使用的版本为Kafka_2.12_2.4.1的版本。将安装包上传到master节点/root/module目录下。

    4.2 解压Kafka安装包

    解压安装包到/usr/local目录下,并更改目录名称,方便后期配置。

    tar -zxvf kafka_2.12-2.4.1.tgz -C /usr/local 
    mv /usr/local/kafka_2.12-2.4.1 /usr/local/kafka
    

    4.3 配置环境变量

    vim /etc/profile
    

    文件下添加Kafka信息到/etc/profile末端。

    #KAFKA ENV
    export KAFKA_HOME=/usr/local/kafka
    export PATH=$PATH:$KAFKA_HOME/bin
    

    重载环境变量

    source /etc/profile
    

    4.4 修改Kafka配置文件

    进入kafka的config目录下,修改server.properties文件

    cd /usr/local/config/
    vim server.properties
    

    在文件中找到对应属性并修改其值。

    broker.id=1     #指定broker的id,随意的数字,但是要确保在kafka集群中是唯一不重复的
    log.dirs=/opt//data/kafka-logs        #指定log的位置
    zookeeper.connect=master:2181,slaves1:2181,slaves2:2181	 #配置zookeeper
    

    4.5 分发文件到slaves1与slaves2节点

    使用scp指令,将配置好的Kafka文件夹分发到另外两个节点中。

    scp -r /usr/local/kafka root@slaves1:/usr/local
    scp -r /usr/local/kafka root@slaves2:/usr/local
    

    在slaves1节点中修改server.properties文件,将broker.id改为2。

    #在slaves1节点操作
    cd /usr/local/config
    vim server.properties
    

    将broker.id改为2。

    broker.id=2
    

    在slaves2节点中修改server.properties文件,将broker.id改为3。

    #在slaves2节点操作
    cd /usr/local/config
    vim server.properties
    

    将broker.id改为3。

    broker.id=3
    

    4.6 启动kafka集群。

    由于Kafka和Zookeeper没有一键启动的脚本文件,我们可以自己编辑一个一键启动脚本文件,在master节点创建zookeeperServer.sh文件用于一键启动Zookeeper集群,创建kafkaServer.sh文件用于一键启动kafka集群。

    zookeeperServer.sh具体代码如下

    #!/bin/bash
    
    case $1 in 
    "start"){
    	for i in master,slaves1,slaves2
    	do
    	a	echo "=============$i zookeeper starting============="
    		ssh $i "source /etc/profile;nohup /usr/local/zookeeper/bin/zkServer.sh start"
    	done
    };;
    "stop"){
    	for i in master,slaves1,slaves2
    	do
    		echo "=============$i zookeeper stop============="
    		ssh $i "source /etc/profile;nohup /usr/local/zookeeper/bin/zkServer.sh stop"
    	done
    };;
    esac
    

    ​ kafkaServer.sh具体代码如下

    #!/bin/bash
    
    case $1 in 
    "start"){
    	for i in master,slaves1,slaves2
    	do
    	echo "=============$i kafka starting============="
    	ssh $i "source /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties"
    	done
    };;
    "stop"){
    	for i in master,slaves1,slaves2
    	do
    	echo "=============$i kafka stop============="
    	ssh $i "source/usr/local/kafka/bin/kafka-server-stop.sh"
    	done
    };;
    esac
    

    运行两个脚本启动集群

    ./zookeeperServer.sh start
    ./kafkaServer.sh start
    

kafka-topics.sh使用教程

kafka-topics.sh主要负责与topic相关的操作,如:创建,删除,查看等。

  1. 创建Topic

    kafka-topics.sh --create -topic 【topicName】 -zookeeper 【ZKhostname:2181】 -partitions 【n】 -replication-factor 【m】
    

    参数列表详解:

    • -topic : 指定创建主题的名称。
    • -zookeeper: Zookeeper的hostname或者IP地址,端口号为zookeeper设置时的端口号,一般为2181。
    • -partiotions:该主题的分区数量。
    • -replication-factor :主题的副本数量(包含leader)。

    如:创建一个主题名为KafkaTest,分区数量为3,副本数量为1,具体指令如下:

    kafka-topics.sh --create -topic KafkaTest -zookeeper localhost:2181 -partitions 3 -replication-factor 1
    
  2. 查看Topic列表

    kafka-topics.sh --list -zookeeper 【ZKhostname:2181】
    

    如:查看本机Kafka主题列表,具体指令如下;

    kafka-topics.sh --list -zookeeper localhost:2181
    
  3. 显示topic详细信息

    kafka-topics.sh --describe -topic 【topicName】 -zookeeper 【ZKhostname:2181】
    

    参数列表详解:

    • -topic : 查询的主题名称。
    • -zookeeper: Zookeeper的hostname或者IP地址,端口号为zookeeper设置时的端口号,一般为2181。

    如:查询KafkaTest主题的详细信息,具体指令如下:

    kafka-topics.sh --describe  -topic KafkaTest -zookeeper localhost:2181
    
  4. 更改Topic配置信息

    更改主题的分区数量,副本分配和/或配置条目。

    kafka-topics.sh --alter -topic 【topicName】 -zookeeper 【ZKhostname:2181】
    

    如:增加分区数量到4个。

    kafka-topics.sh --alter  -topic KafkaTest -partitions 4 -zookeeper localhost:2181
    

    注意:不要使用 --alter 去尝试减少分区的数量,如果非要减少分区的数量,只能删除整个主题 topic, 然后重新创建。

    添加完分区后使用以下指令查看KafkaTest主题的详细信息。

    kafka-topics.sh --describe  -topic KafkaTest -zookeeper localhost:2181
    
  5. 删除Topic

    kafka-topics.sh -delete -topic 【topicName】 -zookeeper 【ZKhostname:2181】
    

    参数列表详解:

    • -topic : 删除的主题名称。
    • -zookeeper: Zookeeper的hostname或者IP地址,端口号为zookeeper设置时的端口号,一般为2181。

    如:删除KafkaTest主题,具体指令如下:

    kafka-topics.sh -delete -topic KafkaTest -zookeeper localhost:2181
    

    删除成功后,可使用kafka-topics.sh --list指令进行查看主题列表1

     kafka-topics.sh --list -zookeeper localhost:2181
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值