收藏 分享(赏)

Kafka安装配置及使用说明.doc

上传人:weiwoduzun 文档编号:2837235 上传时间:2018-09-28 格式:DOC 页数:56 大小:771.90KB
下载 相关 举报
Kafka安装配置及使用说明.doc_第1页
第1页 / 共56页
Kafka安装配置及使用说明.doc_第2页
第2页 / 共56页
Kafka安装配置及使用说明.doc_第3页
第3页 / 共56页
Kafka安装配置及使用说明.doc_第4页
第4页 / 共56页
Kafka安装配置及使用说明.doc_第5页
第5页 / 共56页
点击查看更多>>
资源描述

1、1Kafka 安装配置及使用说明(铁树 2018-08-08)(Windows 平台,5 个分布式节点,修改消息大小,调用程序范例)1 安装配置采用 5 台服务器作为集群节点,IP 地址为:XX.XX.0.12-XX.XX.0.16.每台机器依次安装配置 JDK、zookeeper、kafka,先安装完一台机器,然后拷贝到其他机器,再修改配置文件。1.1 JDK 安装配置JDK 版本:jdk1.7.0_51_x64 解压版(jdk1.7.0_51_x64.rar)解压到 C 盘 kafka 目录下,如图所示。2设置环境变量:JAVA_HOME:C:kafkajdk1.7.0_51_x64PAT

2、H:C:kafkajdk1.7.0_51_x64bin1.2 zookeeper 安装配置1.2.1解压安装zookeeper 版本:3.4.12 (zookeeper-3.4.12.tar.gz)3解压到 C 盘 kafka 目录下,如图所示。1.2.2创建 zookeeper 数据目录和日志目录zkdata #存放快照 C:kafkazookeeper-3.4.12zkdatazkdatalog#存放日志C:kafkazookeeper-3.4.12zkdatalog41.2.3修改配置文件进入到“C:kafkazookeeper-3.4.12”目录下的 conf 目录中,复制 zoo_s

3、ample.cfg(官方提供的 zookeeper 的样板文件) ,重命名为 zoo.cfg(官方指定的文件命名规则) 。默认内容:5修改后配置文件为:# The number of milliseconds of each tick6tickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowl

4、edgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.dataDir=C:/kafka/zookeeper-3.4.12/zkdatadataLogDir=C:/kafka/zookeeper-3.4.12/zkdatalog# the port at which the clients will connectclientPort=12181server.1=XX.XX.0.12:12888

5、:13888server.2=XX.XX.0.13:12888:13888server.3=XX.XX.0.14:12888:13888server.4=XX.XX.0.15:12888:13888server.5=XX.XX.0.16:12888:13888# the maximum number of client connections.# increase this if you need to handle more clients7#maxClientCnxns=60# Be sure to read the maintenance section of the # adminis

6、trator guide before turning on autopurge.# http:/zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance# The number of snapshots to retain in dataDirautopurge.snapRetainCount=100# Purge task interval in hours# Set to “0“ to disable auto purge featureautopurge.purgeInterval=24配置文件解释:#tic

7、kTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。#initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端8不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2

8、000=20 秒#syncLimit:这个配置项标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是5*2000=10秒#dataDir:快照日志的存储路径#dataLogDir:事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多#clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。修改他的端口改大点通过配置 a

9、utopurge.snapRetainCount 和 autopurge.purgeInterval 这两个参数能够实现定时清理了。这两个参数都是在zoo.cfg中配置的:9autopurge.purgeInterval 这个参数指定了清理频率,单位是小时,需要填写一个1或更大的整数,默认是0,表示不开启自己清理功能。autopurge.snapRetainCount 这个参数和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个。1.2.4创建 myid 文件在“C:kafkazookeeper-3.4.12zkdata”目录下,创建 myid文件(无后缀名) ,内容为对应

10、IP 地址的主机号。如 server.1 则内容为 1。1.3 Kafka 安装配置1.3.1解压安装kafka 版本:kafka1.1.1(kafka_2.11-1.1.1.tgz)10解压到 C 盘 kafka 目录下,如图所示。1.3.2创建消息目录kafkalogs :C:kafkakafka_2.11-1.1.1kafkalogs1.3.3修改配置文件打开 C:kafkakafka_2.11-1.1.1config server.properties 11实际的修改项为:broker.id=1listeners=PLAINTEXT:/:19092log.dirs= C:/kafka/

11、kafka_2.11-1.1.1/kafkalogs#在 log.retention.hours=168 下面新增下面三项(消息大小最大 1GB)message.max.byte=1073741824replica.fetch.max.bytes=1073741824log.segment.bytes=1073741824default.replication.factor=2#设置 zookeeper 的连接端口zookeeper.connect=XX.XX.0.12:12181,XX.XX.0.13:12181,XX.XX.0.14:12181,XX.XX.0.15:12181,XX.XX

12、.0.16:12181配置说明:broker.id=0 #当前机器在集群中的唯一标识,和 zookeeper的 myid 性质一样port=19092 #当前 kafka 对外提供服务的端口默认是 9092host.name=192.168.7.100 #这个参数默认是关闭的,在 0.8.1有个 bug,DNS 解析问题,失败率的问题。work.threads=3 #这个是 borker 进行网络处理的线程数num.io.threads=8 #这个是 borker 进行 I/O 处理的线程数log.dirs=/opt/kafka/kafkalogs/ #消息存放的目录,这个目录可以配置为“,

13、”逗号分割的表达式,上面的 num.io.threads 要大于这个目录的个数这个目录,如果配置多个目录,新创建的topic 他把消息持久化的地方是,当前以逗号分割的目录中,那个分区数最少就放那一个socket.send.buffer.bytes=102400 #发送缓冲区 buffer 大小,数据不是一下子就发送的,先回存储到缓冲区了到达一定的大小后在发送,能提高性能socket.receive.buffer.bytes=102400 #kafka 接收缓冲区大小,当数据到达一定大小后在序列化到磁盘socket.request.max.bytes=104857600 #这个参数是向 kafk

14、a请求消息或者向 kafka 发送消息的请请求的最大数,这个值不能超过 java 的堆栈大小num.partitions=1 #默认的分区数,一个 topic 默认 1 个分区数log.retention.hours=168 #默认消息的最大持久化时间,168小时,7 天message.max.byte=5242880 #消息保存的最大值 5Mdefault.replication.factor=2 #kafka 保存消息的副本数,13如果一个副本失效了,另一个还可以继续提供服务replica.fetch.max.bytes=5242880 #取消息的最大字节数log.segment.byte

15、s=1073741824 #这个参数是:因为 kafka 的消息是以追加的形式落地到文件,当超过这个值的时候,kafka 会新起一个文件log.retention.check.interval.ms=300000 #每隔 300000 毫秒去检查上面配置的 log 失效时间(log.retention.hours=168 ) ,到目录查看是否有过期的消息如果有,删除log.cleaner.enable=false #是否启用 log 压缩,一般不用启用,启用的话可以提高性能zookeeper.connect=192.168.7.100:12181,192.168.7.101:12181,192

16、.168.7.107:1218 #设置 zookeeper 的连接端口1.4 其他节点配置将安装以上配置好的目录 c:kafka 拷贝到其他节点的 c 盘目录,并修改如下配置。1、JAVA 环境变量:JAVA_HOME:C:kafkajdk1.7.0_51_x64PATH:C:kafkajdk1.7.0_51_x64bin2、zookeeper 的 myidC:kafkazookeeper-3.4.12zkdatamyid,修改为对应的数值14XX.XX.0.12:1XX.XX.0.13:2XX.XX.0.14:3XX.XX.0.15:4XX.XX.0.16:53、kafka 配置C:kafk

17、akafka_2.11-1.1.1config server.properties 的broker.id,修改为对应的数值XX.XX.0.12:1XX.XX.0.13:2XX.XX.0.14:3XX.XX.0.15:4XX.XX.0.16:51.5 服务启动1、 启动 zookeeperC:kafkazookeeper-3.4.12binzkServer.cmdXX.XX.0.12-16,依次双击启动。152、 启动 kafka运行 cmd,cd C:kafkakafka_2.11-1.1.1 目录,再执行命令:【cd C:kafkakafka_2.11-1.1.1】C:kafkakafka_

18、2.11-1.1.1.binwindowskafka-server-start.bat .configserver.properties161.6 服务状态测试1.6.1创建 Topics打开 cmd 进入 C:kafkakafka_2.11-1.1.1binwindowsC:kafkakafka_2.11-1.1.1binwindowskafka-topics.bat -create -zookeeper localhost:12181 -replication-factor 1 -partitions 1 -topic test001171.6.2打开一个 Producer打开 cmd 进

19、入 C:kafkakafka_2.11-1.1.1binwindowsC:kafkakafka_2.11-1.1.1binwindowskafka-console-producer.bat -broker-list localhost:19092 -topic test001等待输入消息内容。1.6.3打开一个 Consumer打开 cmd 进入 C:kafkakafka_2.11-1.1.1binwindowsC:kafkakafka_2.11-1.1.1binwindowskafka-console-consumer.bat -zookeeper localhost:12181 -topi

20、c test00118然后就可以在 Producer 控制台窗口输入消息了,很快Consumer 窗口就会显示出 Producer 发送的消息。191.6.4查看所有主题C:UsersDevelopC:kafkakafka_2.11-1.1.1binwindowskafka-topics.bat -list -zookeeper localhost:121811.6.5查看 Topic 分区和副本C:UsersDevelopC:kafkakafka_2.11-1.1.1binwindowskafka-topics.bat -describe -zookeeper localhost:12181

21、201.7 消息大小调整Kafka 对于 10KB 大小的消息吞吐率最好,默认配置最大支持1MB 的消息大小。对于大消息的传输,需要修改 kafka 的server.properties、consumer 、producer 的相关配置。server.properties 修改:打开 C:kafkakafka_2.11-1.1.1config server.properties(按照最大 1GB)message.max.bytes=1073741824replica.fetch.max.bytes=1073741824log.segment.bytes=1073741824consumer 配

22、置:max.partition.fetch.bytes=1073741824Producer 配置:max.request.size =107374182421#33554432,默认32Mbuffer.memory= mon.errors.RecordTooLargeException: The message is 36428062 bytes when serialized which is larger than the total memory buffer you have configured with the buffer.memory configuration.附件太大可能

23、会内存溢出,还会涉及超时参数配置等。2 JAVA 程序示例2.1 Producer 程序示例2.1.1 Properties 文件配置#producerbootstrap.servers=XX.XX.0.12:19092,XX.XX.0.13:19092,XX.XX.0.14:19092,XX.XX.0.15:19092,XX.XX.0.16:19092producer.type=syncrequest.required.acks=1#mit=true22#latest, earliest, noneauto.offset.reset=earliest建议公共参数(如服务地址)配置在 prop

24、erties 文件里。其他参数根据接口需要程序中配置。/ 创建Producerprivate Producer createProducer() Properties props = new Properties();String path = ProducerDemo.class.getResource(“/“).getFile().toString()+ “kafka.properties“;try FileInputStream fis = new FileInputStream(new File(path);props.load(fis);props.put(“key.serializ

25、er“, “mon.serialization.IntegerSerializer“);props.put(“value.serializer“,“mon.serialization.StringSerializer“);fis.close(); catch (Exception e) 23e.printStackTrace();return new KafkaProducer(props);2.1.2 Properties 配置详解# 0:producer不会等待broker发送ack# 1:当leader接收到消息后发送 ack# all(-1):当所有的follower都同步消息成功后发

26、送ackrequest.required.acks=02.1.3主题+VALUEimport java.io.File;import java.io.FileInputStream;import java.util.Properties;import org.apache.kafka.clients.producer.KafkaProducer;import org.apache.kafka.clients.producer.Producer;import org.apache.kafka.clients.producer.ProducerRecord;24public class Topic

27、Value / 创建Producerprivate Producer createProducer() Properties props = new Properties();String path = ProducerDemo.class.getResource(“/“).getFile().toString()+ “kafka.properties“;try FileInputStream fis = new FileInputStream(new File(path);props.load(fis);props.put(“key.serializer“, “mon.serializati

28、on.StringSerializer“);props.put(“value.serializer“,“mon.serialization.StringSerializer“);fis.close(); catch (Exception e) 25e.printStackTrace();return new KafkaProducer(props);public static void main(String args) / 消息主题String topicName=“test001“;TopicValue topicValueProducer=new TopicValue();Produce

29、r producer = topicValueProducer.createProducer();producer.send(new ProducerRecord(topicName, “消息: TopicValue“);producer.flush();producer.close();System.out.println(“Message send successfully“); 262.1.4主题+KEY+VALUE2.1.4.1package kjsp.kafka.producer;import java.io.File;import java.io.FileInputStream;i

30、mport java.util.Properties;import org.apache.kafka.clients.producer.KafkaProducer;import org.apache.kafka.clients.producer.Producer;import org.apache.kafka.clients.producer.ProducerRecord;public class TopicIntegerString / 创建Producerprivate Producer createProducer() Properties props = new Properties(

31、);String path = ProducerDemo.class.getResource(“/“).getFile().toString()27+ “kafka.properties“;try FileInputStream fis = new FileInputStream(new File(path);props.load(fis);props.put(“key.serializer“, “mon.serialization.IntegerSerializer“);props.put(“value.serializer“,“mon.serialization.StringSeriali

32、zer“);fis.close(); catch (Exception e) e.printStackTrace();return new KafkaProducer(props);public static void main(String args) / 消息主题String topicName=“test001“;28TopicIntegerString topicValueProducer=new TopicIntegerString();Producer producer = topicValueProducer.createProducer();producer.send(new

33、ProducerRecord(topicName, 1,“消息: TopicIntegerString1“);producer.flush();producer.close();System.out.println(“Message send successfully“); 2.1.4.2import java.io.File;import java.io.FileInputStream;import java.util.Properties;import org.apache.kafka.clients.producer.KafkaProducer;import org.apache.kaf

34、ka.clients.producer.Producer;import 29org.apache.kafka.clients.producer.ProducerRecord;public class TopicStringString / 创建Producerprivate Producer createProducer() Properties props = new Properties();String path = ProducerDemo.class.getResource(“/“).getFile().toString()+ “kafka.properties“;try FileI

35、nputStream fis = new FileInputStream(new File(path);props.load(fis);props.put(“key.serializer“, “mon.serialization.StringSerializer“);props.put(“value.serializer“,“mon.serialization.StringSerializer“);fis.close();30 catch (Exception e) e.printStackTrace();return new KafkaProducer(props);public stati

36、c void main(String args) / 消息主题String topicName=“test001“;TopicStringString topicValueProducer=new TopicStringString();Producer producer = topicValueProducer.createProducer();producer.send(new ProducerRecord(topicName, “TopicStringString001“, “消息: TopicStringString001“);producer.flush();producer.close();System.out.println(“Message send successfully“);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 说明文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报