kafka安装配置

 1、Linux下

  首先,我们将下载好的Kafka基础安装包解压,命令如下所示:

  • 解压Kafka
[hadoop@dn1 ~]$ tar -zxvf kafka_2.9.1-0.8.2.1.tgz
  • 进入到Kafka解压目录
[hadoop@dn1 ~]$ cd kafka_2.9.1-0.8.2.1
  • 配置环境变量
[hadoop@dn1 ~]$ vi /etc/profile
export KAFKA_HOME=/home/hadoop/kafka_2.11-0.8.2.1
export PATH=$PATH:$KAFKA_HOME/bin
  • 配置Kafka的zookeeper.properties 
# the directory where the snapshot is stored.
dataDir=/home/hadoop/data/zk
# the port at which the clients will connect
clientPort=2181
# disable the per-ip limit on the number of connections since this is a non-production config
maxClientCnxns=0
  • 配置server.properties
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=0

  注:这里配置broker的时候,每台机器上的broker保证唯一,从0开始。如:在另外2台机器上分别配置broker.id=1,broker.id=2

  • 配置producer.properties
# list of brokers used for bootstrapping knowledge about the rest of the cluster
# format: host1:port1,host2:port2 ...
metadata.broker.list=dn1:9092,dn2:9092,dn3:9092
  • 配置consumer.properties
# Zookeeper connection string
# comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002"
zookeeper.connect=dn1:2181,dn2:2181,dn3:2181

  至此,Kafka Cluster部署完成。


Send Messages

启动

  首先,在启动Kafka集群服务之前,确保我们的ZK集群已启动,下面我们启动Kafka集群服务。启动命令如下所示:

[hadoop@dn1 kafka_2.11-0.8.2.1]$ kafka-server-start.sh config/server.properties & 

  注:其他2个节点参照上述方式启动。

  另外,启动其他节点的时候,在最先开始启动的节点会显示其它节点加入的信息记录,如下图所示:

验证启动进程

[hadoop@dn1 kafka_2.11-0.8.2.1]$ jps
2049 QuorumPeerMain
2184 Kafka
2233 Jps

创建Topic

  在服务启动后,我们开始创建一个Topic,命令如下所示:

[hadoop@dn1 ]$ kafka-topics.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --topic test1 --replication-factor 3 --partitions 1 --create

  然后,我们查看该Topic的相关信息,命令如下所示:

[hadoop@dn1 ]$ kafka-topics.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --topic test1 --describe

  预览信息如下图所示:

  下面解释一下这些输出。第一行是对所有分区的一个描述,然后每个分区都会对应一行,因为我们只有一个分区所以下面就只加了一行。

  • Leader:负责处理消息的读和写,Leader是从所有节点中随机选择的。
  • Replicas:列出了所有的副本节点,不管节点是否在服务中。
  • Isr:是正在服务中的节点

生产消息

  下面我们使用kafka的Producer生产一些消息,然后让Kafka的Consumer去消费,命令如下所示:

[hadoop@dn1 ]$ kafka-console-producer.sh --broker-list dn1:9092,dn2:9092,dn3:9092 --topic test1

kafka安装配置_第1张图片

消费消息

  接着,我们在另外一个节点启动消费进程,来消费这些消息,命令如下所示:

[hadoop@dn2 ]$ kafka-console-consumer.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --from-beginning --topic test1

  消费记录如下图所示:

kafka安装配置_第2张图片

2、Windows上搭建Kafka运行环境

Kafka的运行依赖于Zookeeper,在运行Kafka之前我们需要安装并运行Zookeeper

安装并运行Kafka

3.1 下载安装文件:  http://kafka.apache.org/downloads.html
3.2 解压文件(本文解压到 G:\kafka_2.11-0.10.0.1)
3.3 打开G:\kafka_2.11-0.10.0.1\config
3.4 从文本编辑器里打开 server.properties
3.5 把 log.dirs的值改成 “G:\kafka_2.11-0.10.0.1\kafka-logs”
3.6 打开cmd
3.7 进入kafka文件目录: cd /d G:\kafka_2.11-0.10.0.1\
3.8 输入并执行以打开kafka:
.\bin\windows\kafka-server-start.bat .\config\server.properties

 

创建topics

4.1 打开cmd 并进入G:\kafka_2.11-0.10.0.1\bin\windows
4.2 创建一个topic:
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

 

打开一个Producer:

cd /d G:\kafka_2.11-0.10.0.1\bin\windows
kafka-console-producer.bat --broker-list localhost:9092 --topic test

 

打开一个Consumer:

cd /d G:\kafka_2.11-0.10.0.1\bin\windows
kafka-console-consumer.bat --zookeeper localhost:2181 --topic test
然后就可以在Producer控制台窗口输入消息了。在消息输入过后,很快Consumer窗口就会显示出Producer发送的消息:
kafka安装配置_第3张图片

单节点kafka配置

修改配置文件conf\server.properties:
    20行:broker.id=0;
    28行:host.name= localhost;
    118行:zookeeper.connect= localhost:2181; 可逗号分隔配置多个

启动服务:
    bin\windows\kafka-server-start.bat   config\server.properties

//启动报错Unrecognized VM option '+UseCompressedOops'
查看 bin \windows\kafka-run-class.bat
找到  IF ["%KAFKA_JVM_PERFORMANCE_OPTS%"] EQU [""]   第110行
去掉-XX:+UseCompressedOops

创建topic
    bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
    或则
    bin\windows\kafka-topics.bat --zookeeper 10.100.5.9:2181 --replica 3 --partition 1 --topic test

查看topic
    bin\windows\kafka-topics.bat --list --zookeeper localhost:2181

查看topic描述
    bin\windows\kafka-topics.bat --describe --zookeeper localhost:2181 --topic test

生产者发送消息:
    bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test

消费者接收消息:
    bin\windows\kafka-console-consumer.bat --zookeeper localhost:2181 --topic test --from-beginning


集群配置与单节配置差不多,只是额外要注意下server.properties中broker.id要区分开。

linux下命令:

Start the server:
    bin/kafka-server-start.sh config/server.properties

    bin/kafka-server-start.sh -daemon config/server.properties

Create a topic:
    bin/kafka-topics.sh --create --zookeeper localhost:2282 --replication-factor 1 --partitions 1 --topic test
Show topic:
    bin/kafka-topics.sh --list --zookeeper localhost:2282
Send messages:
    bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
Start a consumer:
    bin/kafka-console-consumer.sh --zookeeper localhost:2282 --topic test --from-beginning


kafka日志清理
       kafka将会保留所有发布的消息,不论是否被消费过。如果需要清理,则需要进行配置。server.properties配置如下:

log.cleanup.policy=delete
    日志清理策略
log.retention.hours=240
    数据存储的最大时间超过这个时间会根据log.cleanup.policy设置的策略处理数据,也就是消费端能够多久去消费数据。
    log.retention.bytes和log.retention.minutes任意一个达到要求,都会执行删除。
log.retention.bytes=-1
    topic每个分区的最大文件大小,一个topic的大小限制=分区数*log.retention.bytes,-1表示没有大小限制。
    log.retention.bytes和log.retention.minutes任意一个达到要求,都会执行删除。
log.retention.check.interval.ms=5minutes
    文件大小检查的周期时间。

你可能感兴趣的:(后端技术)