kafka是一个高吞吐量的分布式消息系统,整体设计为典型的发布与订阅模式。kafka内部采用zookeeper来解决配置管理、通知/协调、集群管理、master选举等问题,所以建议先对zookeeper有个基本的了解,可以看下我的zookeeper笔记(一)。
这次对于kafka只介绍一下命令行下的安装部署等操作,其它的,比如kafka在zookeeper中的存储结构、配置详解、java客户端代码等,将在后续的讲解中进行介绍。
1、首先我们下载kafka,这里选择最新版本0.9.0.1,下载并解压,同样采取与zookeeper笔记中类似的目录结构,使用单机模拟集群:
/Users/zk_chs/something/kafka/kafka-0.9.0.1-001 /Users/zk_chs/something/kafka/kafka-0.9.0.1-002 /Users/zk_chs/something/kafka/kafka-0.9.0.1-003
2、进入每个Kafka的根目录,分别对其config/server.properties文件进行配置:
----config/server.properties broker.id=1 listeners=PLAINTEXT://:9091 port=9091 log.dirs=/Users/zk_chs/something/kafka/tmp/kafka01 zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
broker.id:当前kafka服务的id
listeners、post:监听的客户端连接端口
log.dirs:kafka数据、索引存储位置
zookeeper.connect:kafka依赖的zookeeper服务地址
再对另外两个kafka服务进行同样的配置:
----config/server.properties broker.id=2 listeners=PLAINTEXT://:9092 port=9092 log.dirs=/Users/zk_chs/something/kafka/tmp/kafka02 zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
----config/server.properties broker.id=3 listeners=PLAINTEXT://:9093 port=9093 log.dirs=/Users/zk_chs/something/kafka/tmp/kafka03 zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
因为我们模拟集群,为了方便管理,对于kafka的log.dir最好也统一一下路径:
/Users/zk_chs/something/kafka/tmp/kafka01 /Users/zk_chs/something/kafka/tmp/kafka02 /Users/zk_chs/something/kafka/tmp/kafka03
3、配置完成后便能进行启动了,不过在此之前,先将zookeeper服务进行启动。如果你的zookeeper服务已经启动,那么便能启动kafka了,首先还是进入kafka根目录,然后进行如下启动操作:
bin/kafka-server-start.sh config/server.properties &
随后,切换至不同的kafka目录,再次执行:
cd ../kafka-0.9.0.1-002 bin/kafka-server-start.sh config/server.properties & cd ../kafka-0.9.0.1-003 bin/kafka-server-start.sh config/server.properties
所有的kafka服务启动完成后,执行jps,可以看到:
1248 QuorumPeerMain
2055 Kafka
1224 QuorumPeerMain
2058 Jps
1212 QuorumPeerMain
2044 Kafka
2047 Kafka
以上代表我们启动了3个kafka服务,3个zookeeper服务。
4、接着创建一个topic,依然是在kafka根目录下执行:
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topic my_test
--create:创建topic
--zookeeper:连接的zookeeper节点地址
--replication-factor:数据副本数量
--partitions:对创建的topic进行分片
--topic:要创建的topic名称
5、向topic发送消息、从topic消费消息,在kafka根目录下执行:
bin/kafka-console-producer.sh --broker-list localhost:9091 --topic my-replicated-topic
--broker-list:此处不是zookeeper的地址,而是kafka客户端的地址
--topic:向哪个topic发送消息
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic
--zookeeper:这里为zookeeper地址,不需要kafka客户端地址
--from-beginning:kafka消息存储在文件内,能够重复消费,这里代表偏移量(offsets)
--topic:从哪个topic消费消息
如果你同时开启producer、consumer两个bash窗口,当从producer向指定的topic发送消息时,便能看到consumer对其进行了消费,使用ctrl c即可退出发送消息或消费消息进程。
总结:
我们这次讲解了kafka的安装、基本配置、启动部署,以及一些kafka基本的操作,比如create topic,producer、consumer操作。
随后的笔记会对kafka的java客户端代码、kafka服务参数、zookeeper中节点数据进行讲解,欢迎继续学习。
相关推荐
10. 代码实践《kafka学习代码》中可能包含了一些示例,涵盖了producer、consumer的创建、消息发送与接收、配置调整等内容,是深入理解Kafka工作原理和使用技巧的重要参考资料。 总结,Kafka作为一个分布式流处理...
【Kafka学习笔记】 Kafka是一款高性能的分布式消息中间件,广泛应用于大数据实时处理和流处理领域。它具有高吞吐量、低延迟、可扩展性以及容错性等特点,常用于日志收集、监控数据聚合、用户行为追踪等多个场景。 ...
### Kafka学习笔记精要 #### 一、为什么需要消息系统 在现代软件开发中,消息系统扮演着极其重要的角色,特别是在分布式系统中。Kafka作为一款高性能的消息队列中间件,其价值在于解决了传统分布式系统中常见的...
### Kafka学习详细文档笔记 #### 一、入门 **1、简介** Kafka是由LinkedIn开源的一款分布式的流处理平台,其核心功能在于消息传递。它能够处理大量的实时数据流,并且具备高性能、高吞吐量的特点。Kafka采用发布...
kafka笔记,记录从部署到底层原理各个方面 适合小伙伴们进行学习
学习和理解 Kafka 的参数配置,对于优化 Kafka 集群的性能和稳定性至关重要。例如,调整消息批次大小、保留策略、分区数量、副本因子等参数,都可以直接影响到 Kafka 系统的性能和可靠性。在实际部署和使用 Kafka 时...
【Kafka一小时入门精讲笔记】 在大数据处理和实时流计算领域,Apache Kafka是一款非常重要的开源消息系统。本精讲笔记将带你快速了解Kafka的基本概念、核心特性以及使用场景,助你在一小时内掌握Kafka的基础知识。 ...
通过学习以上内容,我们可以深入了解Kafka的架构、工作原理以及实际应用。无论是作为日志收集平台,还是实时数据分析工具,Kafka都展现出了强大的能力。随着大数据和实时处理需求的增长,Kafka的重要地位愈发凸显。...
“安装包”和“kafka”文件可能包含了Kafka的安装程序或相关配置文件,这对于实际部署和运行Kafka至关重要。“biji.txt”可能是一个文本文件,但具体内容未知,可能包含了笔记、配置示例或其他相关信息。 总的来说...
Linux基础知识学习笔记(markdown格式) 包括:基础指令、yum、日期、时区、固定IP、ping、wget、vurl、nmap、nestat、进程管理、主机状态监控、磁盘信息监控、网络状态监控、上传、下载、用户、权限、解压、压缩、...
部署 Kafka 3.x 包括安装 Java 运行环境、下载 Kafka 3.x 二进制包、配置服务器设置(如 `server.properties`),以及启动 ZooKeeper 和 Kafka 服务。此外,还需要了解如何创建和管理主题。 3. **外部集成** ...
本篇文章将深入探讨“java后端学习笔记”中的关键知识点,包括消息队列(Message Queuing)服务如ActiveMQ和RabbitMQ、工作流引擎Activity、容器化技术Docker、分布式服务框架Dubbo、网络库Netty、RPC(Remote ...
《大数据学习笔记文档》 大数据领域是信息技术的热门方向,涵盖了多个关键技术,如Linux、Kafka、Python、Hadoop和Scala等。以下是对这些技术的详细介绍: **Linux**:作为大数据处理的基础平台,Linux因其开源、...
【标题】《IT学习资料3》-Java 大数据学习笔记.zip 这是一份全面的IT学习资源,专为对Java大数据技术感兴趣的学习者而准备。这个压缩包包含了一系列与Java大数据相关的学习材料,旨在帮助你掌握从基础到进阶的各种...
"大数据服务框架学习笔记.zip"很可能是包含一系列关于大数据服务框架的学习资料,如Hadoop、Spark、Flink等主流框架的讲解。下面,我们将深入探讨这些关键组件和框架。 首先,Hadoop是大数据处理的基础框架,由...
《IT学习资料》-Java 大数据学习笔记.zip是一个涵盖了多方面IT技术的综合学习资源,特别是针对Java和大数据这两个热门领域。这份压缩包中包含了各种教程、笔记和参考资料,帮助学习者深入理解和掌握相关技能。 1. *...
Java大数据学习笔记主要涵盖了一系列与Java编程和大数据技术相关的主题,这些主题对于现代软件开发,尤其是数据密集型应用至关重要。以下是对每个主题的详细解释: 1. **SSH**(Secure Shell):SSH是一种网络协议...
从给定的文件信息来看,标题和描述都指向了“Java分布式学习笔记01分布式Java应用”,这显然是关于Java在分布式环境下的应用和技术的学习资料。虽然提供的部分内容由于格式问题难以直接解析,但我们可以根据标题、...
- **分布式**:是将一个大型应用拆分成多个独立的服务,每个服务可以独立部署和扩展,它们之间通过网络进行通信,如 RESTful API。 - **集群**:是将同一服务的多个实例部署在多台服务器上,以提高服务的可用性和...
【Java分布式高级架构师课程学习笔记】 在Java分布式高级架构师的学习过程中,涵盖了多个关键领域的技术,包括数据库的高可用方案、缓存系统、消息中间件以及分布式协调服务。以下是对这些主题的深入探讨: 1. **...