1、下载地址
下载命令:wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.4.0/kafka_2.13-2.4.0.tgz
2、解压
解压命令:tar –zxvf kafka_2.13-2.4.0.tgz
移动: cp -R kafka_2.13-2.4.0 /zjl/program/
创建软链接: ln -s kafka_2.13-2.4.0/ /zjl/program/kafka
解压后可使用
配置zookeeper集群参见:
zookeeper安装配置 - pk.com.cn - 博客园压后即可使用
二、配置kafka
1、配置server.properties
位置: /kafka/config
默认配置
advertised.listeners=PLAINTEXT://your.host.name:9092
修改为
advertised.listeners=PLAINTEXT://ip:9092
例:advertised.listeners=PLAINTEXT://192.168.244.128:9092
- ip为服务器ip
- hostname和端口是用来建议给生产者和消费者使用的,如果没有设置,将会使用listeners的配置,如果listeners也没有配置,将使用java.net.InetAddress.getCanonicalHostName()来获取这个hostname和port,对于ipv4,基本就是localhost了。
- "PLAINTEXT"表示协议,可选的值有PLAINTEXT和SSL,hostname可以指定IP地址,也可以用"0.0.0.0"表示对所有的网络接口有效,如果hostname为空表示只对默认的网络接口有效。也就是说如果你没有配置advertised.listeners,就使用listeners的配置通告给消息的生产者和消费者,这个过程是在生产者和消费者获取源数据(metadata)。
主要注意三个配置:
- broker.id标识本机
- log.dirs是kafka接收消息存放路径
- zookeeper.connect指定连接的zookeeper集群地址
2、kafka集群计划
三台机器:192.168.244.128 192.168.244.130 192.168.244.131
修改server.properties文件,只修改三项,其他根据需要配置
192.168.244.128
broker.id=1 log.dirs=/zjl/program/kafka/datalogs/kafka-logs zookeeper.connect=192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181192.168.244.130
broker.id=2 log.dirs=/zjl/program/kafka/datalogs/kafka-logs zookeeper.connect=192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181192.168.244.131
broker.id=3 log.dirs=/zjl/program/kafka/datalogs/kafka-logs zookeeper.connect=192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:21813、启动
三个节点分别执行:
nohup ./kafka-server-start.sh -daemon ../config/server.properties &
启动时若报错java.net.UnknownHostException XXX
命令查看:hostname 打印出本机hostname 我的机器是 zjlLinux1
修改文件 :vim /etc/hosts
添加内容 192.168.244.128 zjlLinux1 #ip是本机IP 后边是hostname
4、较验启动是否成功
- jps
- ps –ef|grep kafka
5、kafka-manager
下载地址:https://github.com/yahoo/kafka-manager/releases
https://github.com/yahoo/CMAK/releases
编译
tar -zxvf 1.3.3.17.tar.gz
cd kafka-manager-1.3.3.17/
./sbt clean dist
配置
在解压后的conf目录中打开 application.conf文件,修改其中的配置信息,最主要的内容为:kafka-manager.zkhosts="192.168.1.22:2181,192.168.1.23:2181,192.168.1.24:2181" 配置为Kafka的 zookeeper 服务器。你还可以通过环境变量ZK_HOSTS配置这个参数值。
启动
在解压的目录中,使用下面的命令启动Kafka-manager : bin/kafka-manager
默认情况下端口为9000,你还可以通过下面的命令指定配置文件和端口: bin/kafka-manager -Dconfig.file=/path/to/application.conf -Dhttp.port=9000
启动后,从浏览器打开:http://[服务器IP]:9000/ 就可以看到配置页面了
三、kafka基本命令操作
1、创建TOPIC
./kafka-topics.sh --create --zookeeper 192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181 --replication-factor 3 --partitions 6 --topic kfk_test
2、列出创建的topic
./kafka-topics.sh --list --zookeeper 192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181
3、生成数据
注意这里的端口号是kafka的端口 9092
./kafka-console-producer.sh -broker-list 192.168.244.128:9092,192.168.244.130:9092,192.168.244.131:9092 --topic kfk_test
功连接后,可以看到如下输出:
从日志输出可以看到,客户端连接的是192.168.244.128:2181进程(连接上哪台机器的zk进程是随机的),客户端已成功连接上zk集群。
4、zookeeper指令
连接成功后,便可以使用命令与zk服务进行交互。
1、help
help命令会输出zk支持的所有命令。
[zk: 127.0.0.1:2182(CONNECTED) 0] help ZooKeeper -server host:port cmd args stat path [watch] set path data [version] ls path [watch] delquota [-n|-b] path ls2 path [watch] setAcl path acl setquota -n|-b val path history redo cmdno printwatches on|off delete path [version] sync path listquota path rmr path get path [watch] create [-s] [-e] path data acl addauth scheme auth quit getAcl path close connect host:port
2、ls
查看命令(
niocoder
是我测试集群创建的节点,默认只有zookeeper
一个节点)
[zk: localhost:2181(CONNECTED) 1] ls /
[niocoder, zookeeper]
[zk: localhost:2181(CONNECTED) 2] ls /zookeeper
[quota]
[zk: localhost:2181(CONNECTED) 4] ls /zookeeper/quota
[]
3、create
创建一个节点,例如:
[zk: localhost:2181(CONNECTED) 3] create /zk mydata Created /zk
以上命令创建一个/zk节点,且其内容为 “myData”
4、get
显示指定路径下节点的信息,例如,我们检查一下上面的/zk节点最否创建成功
[zk: localhost:2181(CONNECTED) 4] get /zk mydata cZxid = 0xb59 ctime = Thu Jun 30 11:13:24 CST 2016 mZxid = 0xb59 mtime = Thu Jun 30 11:13:24 CST 2016 pZxid = 0xb59 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 6 numChildren = 0
可以看到/zk节点的内容为”myData”,且输出包含了znode的其他信息。有关各个字段的具体含义,请参见了本博客对znode的介绍。
5、set
设置节点的内容,例如:
[zk: localhost:2181(CONNECTED) 6] set /zk "anotherData" …… [zk: localhost:2181(CONNECTED) 7] get /zk "anotherData" ……
6、delete
删除一个节点,例如:
[zk: localhost:2181(CONNECTED) 8] delete /zk [zk: localhost:2181(CONNECTED) 9] get /zk Node does not exist: /zk
以上就是zk客户端最常用的几个命令,从这几个命令我们也可以看到zk提供的API设计的简单。
7、四字母命令
ZooKeeper提供了多个由4个字母构成的命令,可以使用nc或者telnet来使用这些命令。例如:
telnet 127.0.0.1 2181