kafka集群搭建(windows环境下)

摘要:
1、 简介Kafka是一个实现分布式、分区和复制日志的服务。它通过独特的设计提供了消息系统中间件的功能。它是一个具有发布和订阅功能的消息系统。1.该术语描述消息,即要发送的内容。它通常打包为消息对象。一般来说,它是放置“消息”的地方,即消息传递的容器。如果邮件被视为信封,则主题为邮箱分区

一、简介

Kafka 是一个实现了分布式的、具有分区、以及复制的日志的一个服务。它通过一套独特的设计提供了消息系统中间件的功能。它是一种发布订阅功能的消息系统。

1、名词介绍

Message

消息,就是要发送的内容,一般包装成一个消息对象。

 

Topic

通俗来讲的话,就是放置“消息”的地方,也就是说消息投递的一个容器。假如把消息看作是信封的话,那么 Topic 就是一个邮箱 

 

Partition && Log

Partition 分区,可以理解为一个逻辑上的分区,像是我们电脑的磁盘 C:, D:, E: 盘一样,

Kafka 为每个分区维护着一份日志Log文件。

 

Producers(生产者)

和其他消息队列一样,生产者通常都是消息的产生方。

在 Kafka 中它决定消息发送到指定Topic的哪个分区上。

 

Consumers(消费者)

消费者就是消息的使用者,在消费者端也有几个名词需要区分一下。

一般消息队列有两种模式的消费方式,分别是 队列模式 和 订阅模式

队列模式:一对一,就是一个消息只能被一个消费者消费,不能重复消费。一般情况队列支持存在多个消费者,但是对于一个消息,只会有一个消费者可以消费它。

订阅模式:一对多,一个消息可能被多次消费,消息生产者将消息发布到Topic中,只要是订阅改Topic的消费者都可以消费。

 

二、安装zookeeper

1、简介

Kafka使用zookeeper作为其分布式协调框架,很好的将消息生产、消息存储、消息消费的过程结合在一起。同时借助zookeeper,kafka能够生产者、消费者和broker在内的所以组件在无状态的情况下,建立起生产者和消费者的订阅关系,并实现生产者与消费者的负载均衡。

2、下载zookeeper

可以到zookeeper官网下载

http://zookeeper.apache.org/releases.html

3、配置zookeeper

(1)下载解压完成后,来到conf文件夹下,有一个 zoo_sample.cfg 官方默认的配置文件。复制一份,重命名为 zoo.cfg

(2)配置,打开zoo.cfg 修改配置信息

#存储内存中数据库快照的位置,如果不设置参数,更新事务日志将被存储到默认位置。

dataDir=../zkData

#日志文件的位置

dataLogDir=../zkLog

#监听端口

clientPort=2181

(3)集群配置

server.1=127.0.0.1:12888:1388

server.2=127.0.0.1:12889:1389

server.3=127.0.0.1:12887:1387

格式: server.A = B:C:D

A:是一个数字,表示第几号服务器

B:服务器IP地址

C:是一个端口号,用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口

D:是在leader挂掉时专门用来进行选举leader所用的端口

 完整的配置文件如下 

 kafka集群搭建(windows环境下)第1张

复制两份zookeeper解压好配置后的文件夹,命名为

kafka集群搭建(windows环境下)第2张

在对应的文件下下面修改zoo.cfg的监听端口地址
比如:
 
第一个zookeeper-3.4.6程序 修改zoo.cfg 配置文件
clientPort=2181
第二个zookeeper-3.4.6-2程序 修改zoo.cfg 配置文件
clientPort=2182
第三个zookeeper-3.4.6-2程序 修改zoo.cfg 配置文件
clientPort=2183

创建ServerID

在配置的dataDir目录下面新建一个 myid 文件,文件内容就是对应的id号,

比如: 

zookeeper-3.4.6程序 myid 文件的内容 为 1

zookeeper-3.4.6-2程序 myid 文件的内容 为 2

zookeeper-3.4.6-3程序 myid 文件的内容 为 3

我这边配置的目录是

kafka集群搭建(windows环境下)第3张

启动zookeeper

在对应的bin目录下启动

zkServer.cmd

三、安装kafka

(1)下载

去官网 http://kafka.apache.org/下载即可 这边下载的是

https://www.apache.org/dyn/closer.cgi?path=/kafka/0.8.2.2/kafka_2.9.2-0.8.2.2.tgz

这个版本

(2)配置

解压后到config文件夹下 打开server.properties配置文件进行配置

(3)配置内容

修改或新增以下配置信息 

#唯一标识
broker.id=0
#监听端口
port=9092
host.name=127.0.0.1
#消息最大大小
message.max.bytes=50485760
#配置副本数量 
default.replication.factor=2
#获取的最大大小
replica.fetch.max.bytes=50485760
#队列中消息持久化存放的位置,可以多个目录,用逗号分开
log.dirs=/tmp/kafka-logs
#默认的分区数
num.partitions=2
#对应着刚刚配置的zookeeper的三个ip与端口地址
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

 

(4)集群配置

复制两份解压后的文件,命名如下

 kafka集群搭建(windows环境下)第4张

修改部分配置信息

对应的server.properties中修改

#唯一标识

broker.id=0

broker.id=1

broker.id=2

#监听端口 

port=9092

port=9093

port=9094

启动对应的kafka

进入到bin/windows目录下 启动kafka并指定配置文件

kafka-server-start.bat ../../config/server.properties

启动过程中如果遇到Kafka中错误:

Unrecognized VM option ‘UseCompressedOops’ Error: Clould not create the Java Vritual Machine. Error: A fatal exception has occurres . Program will exit.

解决方案:

找到bin/windows/kafka-run-class.bat 文件,

找到112行左右

IF ["%KAFKA_JVM_PERFORMANCE_OPTS%"] EQU [""] (

  set KAFKA_JVM_PERFORMANCE_OPTS=-server -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -Djava.awt.headless=true

)

删除掉 -XX:+UseCompressedOops 即可

测试集群

(1)创建一个 topic

kafka-topics.bat --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --topic test

(2)查看是否创建成功

kafka-topics.bat --list --zookeeper localhost:2181

(3)发送消息

kafka-console-producer.bat --broker-list localhost:9092 --topic test

This is a message

 kafka集群搭建(windows环境下)第5张

(4)接收消息

kafka-console-consumer.bat --zookeeper localhost:2181 --topic test --from-beginning 

 kafka集群搭建(windows环境下)第6张

不同客户端能接收到消息,说明配置成功

公众号

欢迎关注我的公众号“码上开发”,每天分享最新技术资讯。关注获取最新资源

kafka集群搭建(windows环境下)第7张

免责声明:文章转载自《kafka集群搭建(windows环境下)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Nodejs介绍、安装及简单使用CentOS6.5安装Mysql提示 missing requires of libmysqlclient.so.16()(64bit)(转载)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Redis进阶实践之十一 Redis的Cluster集群搭建

一、引言本文档只对Redis的Cluster集群做简单的介绍,并没有对分布式系统的所涉及到的概念做深入的探讨。本文只是针对如何设置集群、测试和操作集群做了简述,并且从用户的角度描述了系统的行为,并不涉及Redis集群规范中所包含的细节。但是,本教程试图从最终用户的角度来解释有关Redis的Cluster集群的可用性和一致性的特点,并以简单易懂的方式讲解。请...

【Linux】【kafka】【zookeeper】Linux安装kafka

前提已经安装JDK:【Linux】安装JDK8,查看java进程、查看jdk安装路径 1、下载kafka和zookeeper,本文放在/home/kafka目录下 直接下载:wgethttps://archive.apache.org/dist/kafka/2.2.1/kafka_2.11-2.1.1.tgz wgethttps://archive....

Kafka网络模型

摘要:很多人喜欢把RocketMQ与Kafka做对比,其实这两款消息队列的网络通信层还是比较相似的,本文就为大家简要地介绍下Kafka的NIO网络通信模型,通过对Kafka源码的分析来简述其Reactor的多线程网络通信模型和总体框架结构,同时简要介绍Kafka网络通信层的设计与具体实现。 一、Kafka网络通信模型的整体框架概述 Kafka的网络通信模型...

从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构)

            从hadoop框架与MapReduce模式中谈海量数据处理 前言     几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显兴奋,认为它们非常是神奇,而神奇的东西常能勾起我的兴趣,在看过介绍它们的文章或论文之后,认为Hadoop是一项富有趣味和挑战性的技术,且它还牵扯到了一个我更加感兴趣的话...

netty中的UDP

UDP 提供了向多个接收者发送消息的额外传输模式: 多播——传输到一个预定义的主机组; 广播——传输到网络(或者子网)上的所有主机。 本示例应用程序将通过发送能够被同一个网络中的所有主机所接收的消息来演示 UDP 广播的使用。为此,我们将使用特殊的受限广播地址或者零网络地址 255.255.255.255。 发送到这个地址的消息都将会被定向给本地网络...

分布式-JOB(XXL-Job)

为什么使用xxl-job,不使用qz: 缺少补偿机制 不支持集群 不支持路由策略 统计任务执行 平台管理 监控,报警邮箱 幂等性:一次请求和多次请求得到相同的结果,不会因为多次的请求,导致最后的数据不同。 现在很多为了保证服务的高可用,一般都采用了集群。例如:在一个商城项目里有这么一个需求,需要每晚12点之前统计每件商品当天的销量,盈利。这时候需要在项...