1、Linux下
首先,我们将下载好的Kafka基础安装包解压,命令如下所示:
[hadoop@dn1 ~]$ tar -zxvf kafka_2.9.1-0.8.2.1.tgz
[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
# 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
# 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
# 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
# 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部署完成。
首先,在启动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,命令如下所示:
[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
预览信息如下图所示:
下面解释一下这些输出。第一行是对所有分区的一个描述,然后每个分区都会对应一行,因为我们只有一个分区所以下面就只加了一行。
下面我们使用kafka的Producer生产一些消息,然后让Kafka的Consumer去消费,命令如下所示:
[hadoop@dn1 ]$ kafka-console-producer.sh --broker-list dn1:9092,dn2:9092,dn3:9092 --topic test1
接着,我们在另外一个节点启动消费进程,来消费这些消息,命令如下所示:
[hadoop@dn2 ]$ kafka-console-consumer.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --from-beginning --topic test1
消费记录如下图所示:
2、Windows上搭建Kafka运行环境
.\bin\windows\kafka-server-start.bat .\config\server.properties
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
cd /d G:\kafka_2.11-0.10.0.1\bin\windows kafka-console-producer.bat --broker-list localhost:9092 --topic test
cd /d G:\kafka_2.11-0.10.0.1\bin\windows
kafka-console-consumer.bat --zookeeper localhost:2181 --topic test
集群配置与单节配置差不多,只是额外要注意下server.properties中broker.id要区分开。
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配置如下: