简介:kafka是一个分布式的、可分区的、可复制的消息系统,它常常用于处理日志信息,是Apache下的一个开源项目(觉得Apache简直太牛逼了。。)
(一)基本的消息术语:
Kafka将消息以topic为单位进行归纳。
将向Kafka topic发布消息的程序成为producers.
将预订topics并消费消息的程序成为consumer.
Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker.
topic及分区:一个topic是对一组消息的归纳。对每个topic,Kafka 对它的日志进行了分区。每个分区都由一系列有序的、不可变的消息组成,这些消息被连续的追加到分区中。
分区中的每个消息都有一个连续的序列号叫做offset,用来在分区中唯一的标识这个消息。
分布式:每个分区在Kafka集群的若干服务中都有副本,这样这些持有副本的服务可以共同处理数据和请求,副本数量是可以配置的。副本使Kafka具备了容错能力。
每个分区都由一个服务器作为“leader”,零或若干服务器作为“followers”,leader负责处理消息的读和写,followers则去复制leader.如果leader down了,followers中的一台则会自动成为leader。
集群中的每个服务都会同时扮演两个角色:作为它所持有的一部分分区的leader,同时作为其他分区的followers,这样集群就会据有较好的负载均衡。
producers通过网络将消息发送到Kafka集群,集群向消费者提供消息。如图:
zookeeper在kafak中的作用是用来做软负载均衡的。
客户端和服务端通过TCP协议通信。Kafka提供了Java客户端,并且对多种语言都提供了支持。
(二)Producer & Consumer
Producer将消息发布到它指定的topic中,并负责决定发布到哪个分区。通常简单的由负载均衡机制随机选择分区,但也可以通过特定的分区函数选择分区。使用的更多的是第二种。
发布消息通常有两种模式:队列模式(queuing)和发布-订阅模式(publish-subscribe)。队列模式中,consumers可以同时从服务端读取消息,每个消息只被其中一个consumer读到;发布-订阅模式中消息被广播到所有的consumer中。
Consumers可以加入一个consumer 组,共同竞争一个topic,topic中的消息将被分发到组中的一个成员中。同一组中的consumer可以在不同的程序中,也可以在不同的机器上。如果所有的consumer都在一个组中,这就成为了传统的队列模式,在各consumer中实现负载均衡。
如果所有的consumer都不在不同的组中,这就成为了发布-订阅模式,所有的消息都被分发到所有的consumer中。
更常见的是,每个topic都有若干数量的consumer组,每个组都是一个逻辑上的“订阅者”,为了容错和更好的稳定性,每个组由若干consumer组成。这其实就是一个发布-订阅模式,只不过订阅者是个组而不是单个consumer。
(三)kafak windows环境搭建
好吧,搭建kafka windows还是花费了一番功夫的,网络上关于kafak windows的配置文章不多,即使参照网络上的文章,也是失败N多次。。后来在F哥的帮助下,终于弄好了,再次衷心向他表示感谢。
step1:前往Kafak官网下载页面http://kafka.apache.org/downloads.html下载kafak压缩包(注意下载的kafak版本不要是kafka-xx-src.tgz的哦),这里我下载的版本为
kafka_2.9.2-0.8.1.tgz,下载完毕之后解压。
step2: 下载完毕之后需要检查config目录下几个配置文件:
1)producer.proerties:metadata.broker.list 如果你配置了集群,这里要加上多个broker节点,每个节点用,隔开。形如:localhost:9092, ip2:9093, ip3:9092(broker节点在
不同机器上)或者ip:9092, ip:9093, ip:9094(broker节点在同一机器不同端口)
2)server.properties:log.dirs 指定kafka服务端启动后日志存放的目录。一般下载下来之后,log.dirs=/tmp/kafka-logs,如果你不修改,启动kafak-server-start.bat的话很容易
报关于Log4j的错的。建议在kafka解压后的根目录下,创建一个tmp的目录,下面可以有kafka-logs和zookeeper两个目录分别存放kafka和zookeeper的日志;
检查zookeeper.connect的路径是否是本地路径
3)同理(2),检查zookeeper.properties的dataDir(解压后默认为/tmp/zookeeper),可以修改成2)里面tmp下的zookeeper目录
step3:修改bin/windows下面的kafak-run-class.bat文件,这个文件也是最容易导致kafak启动出错的地方!
修改set ivyPath对应的路径要指向你解压后libs的路径,如E:\kafka_2.9.2-0.8.1\libs,不然也超级容易报错!
依次检查下面几个set call的代码,形如:
set snappy=%ivyPath%\snappy-java-1.0.5.jar call :concat %snappy%
因为可能他set xxx = %ivyPath%\yyy.jar ,但你下载后的libs目录下的jar包不一定有yyy.jar,如果是这样,把你libs下面不存在的jar包,但该.bat文件里又set的jar包的代码删除即可!
继续检查
IF ["%KAFKA_OPTS%"] EQU [""] ( set KAFKA_OPTS=-Xmx512M -server -Dlog4j.configuration=file:"%BASE_DIR%\config\log4j.properties" )
看KAFKA_OPTS指定的路径是否正确,建议手动修改成config下面log4j.properties的路径
step4:检查config/log4j.properties文件,kafka.logs.dir= 看看指定的路径在你本地是否存在,建议修改成你本地的日志文件目录。
step5:几个主要的配置文件修改完毕之后。不妨把config下面的server.properties和zookeeper.properties拷贝到bin/windows/下面。然后在bin/windows下建立2个.bat文件分别用于
启动zookeeper和kafka。内容如下:
zookeeper-start.bat:
zookeeper-server-start.bat zookeeper.properties
kafka-start.bat
kafak-server-start.bat server.properties
以上,windows操作系统下kafka的环境搭建就准备了。想要启动kafka,即可先运行zookeeper-start.bat文件,再运行kafka-start.bat文件。
说下在搭建kafak的windwos运行环境出现的异常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/zookeeper/
server/quorum/QuorumPeerMain
Caused by: java.lang.ClassNotFoundException: org.apache.zookeeper.server.quorum.
QuorumPeerMain
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: org.apache.zookeeper.server.quorum.QuorumPeerMain
. Program will exit.
这个就是因为你拿到一个从官网上下载下来的kafak压缩包解压之后,未做任何配置文件以及.bat文件的修改所造成的错误之一。
(四)需要注意的几点:
1)kafka之所以开源,就意味着你download一个版本之后,如果启动报错,必须打开响应的.bat文件,看看是哪里报的错。最有可能的就是一些配置未做修改,并不是下载完之后就万事大吉了;
2).bat文件是windows环境下类似Linux操作系统的Shell脚本,是可执行文件。想看看里面定义的变量,要学会echo(回显) %变量名% 的命令,pause(打断点)命令的使用!
3)启动kafka之前必须先启动zookeeper,但是这不意味着你必须单独再开启一个zookeepr,因为查看zookeeper.bat你会发现:
kafka-run-class.bat org.apache.zookeeper.server.quorum.QuorumPeerMain %*
而再查看kafka-run-class.bat 又会发现:
set zookeeper=%ivyPath%\zookeeper-3.3.4.jar call :concat %zookeeper%
这说明,kafka对于zookeeper的支持是在libs目录下有一个zookeeper-xx.jar包的。
相关推荐
在本文中,我们将深入探讨如何在Windows操作系统上搭建Apache Kafka的单机环境。Apache Kafka是一款分布式流处理平台,常用于构建实时数据管道和流应用。Kafka以其高吞吐量、低延迟和容错性而著称,是大数据领域的...
在Windows系统中搭建Kafka环境涉及多个步骤,包括下载、解压、修改配置文件和修改启动文件。本指南将帮助初学者一步步完成搭建过程。 一、下载并解压Kafka 首先,前往Apache Kafka的官方网站下载最新版本的Kafka二...
另外本文是基于Windows部署的,Linux的步骤是基本相同的(只是启动脚本位置不同)。 kafka集群类型: single broker(单节点单boker集群,亦即kafka只启一个broker消息中间件服务,producer、consumer、broker均通过...
#### 三、Kafka在Windows环境下的安装 1. **下载与安装**: - 从官方渠道获取最新版本的 Kafka 安装包。 - 解压下载的 Kafka 压缩包。 - 设置环境变量:确保将 Kafka 的 bin 目录添加到系统的 PATH 环境变量中。...
在Windows环境下,我们将部署Zipkin Server,它负责收集通过Kafka传递过来的调用链数据,并存储到Elasticsearch中,然后提供查询接口供用户分析。 **搭建步骤** 1. **安装JDK**:所有组件都需要Java运行环境,所以...
自己搭建的kafka开发环境,其中会参考其他的文档《03_重新设置maven的本地库位置...这个开发环境的搭建包括Kafka集群,zookeeper集群的搭建,开发环境是搭建在windows中的eclipse,在eclipse中开发的代码可以直接运行。
### Kafka分布式集群搭建详解 #### 一、概述 Kafka是一种高性能、分布式的消息发布与订阅系统,被广泛应用于日志收集、流处理、消息传递等多个领域。为了提高系统的可用性与扩展性,通常会采用分布式集群的方式...
本资源是windows下kafka的环境配置及c++实现的kafka的producer相关代码,启动后可以测试c++的producer发送消息可以在windows下启动的kafka的customer接收消息。
标题中的“windows下kafka_2.12-2.9.0.rar”指的是Apache Kafka的一个版本,这是在Windows环境下使用的。Kafka是一款开源的流处理平台,由LinkedIn开发并贡献给Apache软件基金会。它主要设计用于构建实时数据管道和...
2. 环境搭建 在 Windows 上安装 Kafka 首先需要下载 Apache Kafka 的发行版,通常可以从官方网站 Apache.org 或者镜像站点获取。安装过程中,Zookeeper 是必需的,因为 Kafka 使用 Zookeeper 进行集群管理和协调。 ...
【Linux平台CentOS7系统 - ELK+logback+kafka+nginx搭建分布式日志分析平台】 在复杂的IT环境中,日志管理和分析对于诊断问题、优化性能以及确保系统稳定性至关重要。ELK栈(Elasticsearch、Logstash、Kibana)正是...
在Windows 10环境下搭建Apache Kafka是一个常见的任务,特别是在进行大数据处理、实时流计算或微服务架构开发时。Apache Kafka是一款分布式流处理平台,由LinkedIn开源,并被广泛应用于数据集成、消息传递和实时分析...
### Windows单机环境搭建 1. **下载安装Java运行环境(JRE)**:Kafka依赖Java,因此首先确保你的系统已经安装了JDK或者JRE,并且`JAVA_HOME`环境变量已经设置正确。 2. **下载Kafka**:从Apache官网下载最新稳定...
总结,Kafka在Windows环境下的安装和使用虽然与Linux有所不同,但通过理解其核心概念和配置,可以在Windows上搭建稳定且高效的Kafka集群。这使得Windows用户也能充分利用Kafka在大数据处理、日志收集和实时流处理等...
在Windows环境下搭建Kafka之前,首先需要安装Zookeeper,因为Zookeeper是Kafka的重要组成部分,它作为分布式协调服务,为Kafka提供了集群管理和数据一致性保障。Zookeeper-3.4.6是Apache ZooKeeper的一个稳定版本,...
标题所指知识点:ELK windows环境搭建 知识点详解: 1. 概述ELK与filebeat、kafka等组件 ELK是由Elasticsearch、Logstash和Kibana组成的日志管理解决方案。Elasticsearch是一个基于Lucene构建的开源搜索服务器,...
在Windows环境下搭建Kafka集群可以帮助开发者在本地环境中快速测试和开发相关的流处理应用。以下是一份详细的步骤指南,帮助你了解如何在Windows上安装并运行Kafka集群。 1. **获取和解压Kafka** 首先,你需要从...
《Kafka Manager在Windows环境下的部署与使用详解》 Kafka Manager是一款强大的开源工具,用于管理Apache Kafka集群,提供了一种直观的用户界面,使得监控、操作和理解Kafka集群变得更加简单。本教程将详细介绍如何...
**Windows上的Kafka 2.5.0与Scala 2.13的详解** Kafka是一种分布式流处理平台,由LinkedIn开发并在Apache软件基金会管理。...了解并掌握这些核心概念和操作步骤,对于在Windows环境中搭建和使用Kafka至关重要。