从零开始学习--kafka集群搭建的 两种方式

本文详细介绍了如何在三台服务器上搭建Kafka集群,包括下载Kafka安装包、配置Zookeeper集群、设置Kafka配置文件及启动集群的全过程。通过修改zookeeper.properties和server.properties文件,确保各节点broker.id唯一,最终实现消息生产和消费验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录(第一种常规版,第二种bitnami版) 

一、下载kafka安装包

二、安装

三、配置

四、运行

 

一、下载kafka安装包

 准备好kafka安装包,官网下载地址: http://kafka.apache.org/downloads.html    下载最新的安装包;

 

二、安装

 注意

(1)Kafka的安装需要java环境,cent os 7自带java1.6版本,可以不用重新安装,直接使用自带的jdk 即可;如果觉得jdk版本太旧,也可以自己重新安装;

(2)以前的kafka还需要zookeeper,新版的kafka已经内置了一个zookeeper环境,所以我们可以直接使用安装;

 

将下载好的安装包 解压后

第一个箭头指向的是kafka配置文件,

第二个箭头指向的是zk的配置文件;

三、配置

先建立zk集群,直接使用kafka自带的zookeeper建立zk集群,修改zookeeper.properties文件:

三个机器上的zookeeper.properties文件配置相同,需要注意的是日志保存的路径,不会自动生成,需要自己手动建立相关的路径, dataLogDir是我自己加的,日志文件太多,把日志文件区分开;

 创建myid文件,进入/usr/local/kafka/zookeeper,创建myid文件,将三个服务器上的myid文件分别写入1,2,3,如图:

 
—-myid是zk集群用来发现彼此的标识,必须创建,且不能相同;

 进入kafka目录 执行启动zookeeper命令: 
./bin/zookeeper-server-start.sh config/zookeeper.properties & 
三台机器都执行启动命令,查看zookeeper的日志文件,没有报错就说明zookeeper集群启动成功了。

 搭建kafka集群,修改server.properties配置文件: 


server.properties配置文件的修改主要在开头和结尾,中间保持默认配置即可;需要注意的点是broker.id的值三个节点要配置不同的值,分别配置为0,1,2;log.dirs必须保证目录存在,不会根据配置文件自动生成;

 

四、运行

 启动kafka集群,进入kafka目录,执行如下命令 : 
./bin/kafka-server-start.sh –daemon config/server.properties & 
三个节点均要启动;启动无报错,即搭建成功,可以生产和消费消息,来检测是否搭建成功。
 

概括:

 

1 - 解压kafka程序包
tar zxf kafka_2.12.0.11.0.0.tgz

2 - 编辑配置
vi [kafka]/config/server.properties
修改broker.id,各节点不同即可
broker.id=0
修改
zookeeper.connect=zookeeper的节点ip
如:zookeeper.connect=198.218.35.24:2181,198.218.35.25:2181,198.218.35.26:2181
添加
host.name=节点ip
advertised.host.name=节点对外能访问的ip

3 - 拷贝程序包到各节点(记得修改各节点的broker.id)

4 - 启动各节点kafka
[kafka]/bin/kafka-server-start.sh [kafka]/config/server.properties

 

 

 

学习 Apache Kafka 是进入大数据和实时数据流处理领域的重要一步。Kafka 是一个分布式流处理平台,具备高吞吐量、可扩展性以及持久化能力。以下是一些关于 Kafka 的入门教程和学习资源建议,帮助你从零开始掌握 Kafka 的核心概念和实际应用。 ### Kafka 入门教程 #### 1. Kafka 核心概念 Kafka 的基本组件包括 **Producer(生产者)**、**Consumer(消费者)**、**Broker(代理)**、**Topic(主题)** 和 **Partition(分区)**。 - Producer 负责将数据发布到 Kafka 的 Topic 中。 - Consumer 从 Topic 中订阅数据并进行消费。 - Broker 是 Kafka 集群中的一个节点,负责管理 Topic 的数据存储和传输。 - Topic 是数据流的分类,类似于数据库中的表。 - Partition 是 Topic 的子集,用于实现数据的并行处理和水平扩展。 这些概念是理解 Kafka 架构的基础 [^2]。 #### 2. Kafka 安装与配置 要开始使用 Kafka,首先需要安装 Kafka 服务器。可以使用官方提供的 Kafka 发行包,其中包含了 Kafka 本身以及依赖的 Zookeeper 服务。 - **下载 Kafka**:访问 [Kafka 官方网站](https://kafka.apache.org/downloads) 下载最新版本Kafka- **启动 Zookeeper**:Kafka 依赖 Zookeeper 来进行集群管理。可以通过 Kafka 提供的脚本启动 Zookeeper。 ```bash bin/zookeeper-server-start.sh config/zookeeper.properties ``` - **启动 Kafka Broker**: ```bash bin/kafka-server-start.sh config/server.properties ``` - **创建 Topic**: ```bash bin/kafka-topics.sh --create --topic demo --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1 ``` - **启动 Producer 和 Consumer**: ```bash # Producer bin/kafka-console-producer.sh --broker-list localhost:9092 --topic demo # Consumer bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic demo --from-beginning ``` 这些命令可以帮助你快速搭建一个本地的 Kafka 环境,并开始测试数据的生产和消费 [^4]。 #### 3. Kafka 流处理 Kafka 提供了强大的流处理功能,特别是从版本 0.10.0.0 开始,引入了 Kafka Streams API,使得开发者可以轻松构建实时数据处理应用。 - **Kafka Streams** 是一个轻量级的库,可以直接嵌入到应用程序中,用于处理 Kafka 中的数据流。 - 它支持状态管理、窗口操作、连接操作等功能,适用于构建复杂的实时数据处理管道。 例如,使用 Kafka Streams 可以将来自多个 Topic 的数据进行合并、转换,并输出到新的 Topic 中,从而实现数据的实时处理和分析 [^1]。 #### 4. Kafka Connect Kafka Connect 是 Kafka 提供的一个工具,用于在 Kafka 和其他系统之间高效地传输数据。 - **Connector** 是 Kafka Connect 的核心组件,负责定义数据源和目标之间的连接方式- 可以通过编写配置文件来定义 Connector 的行为,例如指定数据源类型、目标类型、数据格式等。 以下是一个简单的 Kafka Connect 配置示例: ```properties name=my-connector connector.class=org.apache.kafka.connect.file.FileStreamSourceConnector tasks.max=1 file=/path/to/input.txt topic=demo ``` 启动 Kafka Connect 并加载该配置后,Kafka Connect 会自动将文件中的内容读取并发送到指定的 Kafka Topic 中 [^3]。 #### 5. 消费者组与 Offset 管理 Kafka 支持消费者组的概念,多个消费者可以组成一个组,共同消费一个 Topic 的数据。 - **Offset** 是 Kafka 中用于标识消费者在某个 Partition 中消费位置的指针。 - Kafka 支持两种 Offset 提交方式:**自动提交** 和 **手动提交**。 - 自动提交:Kafka 会在消费者拉取数据后自动提交 Offset,但这种方式可能导致数据丢失。 - 手动提交:开发者可以在处理完数据后再手动提交 Offset,确保数据不会丢失。 例如,在 Java 中手动提交 Offset 的代码如下: ```java Properties props = new Properties(); props.put("bootstrap.servers", "localhost:9092"); props.put("group.id", "test"); props.put("enable.auto.commit", "false"); props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props); consumer.subscribe(Arrays.asList("demo")); try { while (true) { ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100)); for (ConsumerRecord<String, String> record : records) { System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value()); } consumer.commitSync(); } } finally { consumer.close(); } ``` 这段代码展示了如何手动提交 Offset,确保在数据处理完成后才更新 Offset,从而避免数据丢失 [^5]。 #### 6. Kafka 与其他工具的集成 Kafka 可以与多种工具和框架集成,扩展其功能。常见的集成包括: - **Flume**:用于日志收集和传输,可以与 Kafka 结合使用,实现高效的日志处理流程。 - **Hadoop/HBase**:Kafka 可以作为数据源,将实时数据传输到 Hadoop 或 HBase 中进行离线分析。 - **Spark Streaming**:结合 Kafka 和 Spark Streaming 可以构建实时数据处理流水线。 例如,Flume 可以配置为 Kafka 的生产者,将数据从网络端口读取并发送到 Kafka 中 [^4]。 ### 学习资源推荐 1. **官方文档**:[Kafka 官方文档](https://kafka.apache.org/documentation/) 是最权威的学习资源,涵盖了 Kafka 的所有特性和配置选项。 2. **书籍**: -Kafka: The Definitive Guide》:由 Confluent 公司的工程师撰写,深入介绍了 Kafka 的原理和实践。 -Kafka Streams in Action》:专注于 Kafka Streams 的使用,适合希望构建实时数据处理应用的开发者。 3. **在线课程**: - Coursera 上的 [Kafka 课程](https://www.coursera.org) 提供了系统的 Kafka 学习路径,涵盖基础到高级内容。 - Udemy 上的 [Kafka 教程](https://www.udemy.com/course/apache-kafka/) 也提供了丰富的实战案例和练习。 4. **社区与博客**: - [Kafka 社区](https://cwiki.apache.org/confluence/display/KAFKA/Index) 提供了大量的学习资料和技术讨论。 - [Confluent 博客](https://www.confluent.io/blog/) 经常发布 Kafka 的最佳实践和新特性介绍。 通过以上资源的学习,你可以逐步掌握 Kafka 的核心概念和实际应用,为进一步深入大数据和实时数据处理领域打下坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值