kafka 环境搭建

环境准备

1. zookeeper集群
2. JDK环境

# 解压kafka包
tar xvf kafka_2.11-0.10.1.1.tgz -C /opt/app

# cd /opt/app/kafka_2.11-0.10.1.1/
# mkdir logs

 修改配置文件

主要关注:server.properties 这个文件即可 
kafka有很多文件,这里可以发现有Zookeeper文件,我们可以根据Kafka内带的Zookeeper集群来启动,但是建议使用独立的Zookeeper集群

[root@quan config]# ls -l
total 60
-rw-r--r-- 1 root root 906 Dec 16 2016 connect-console-sink.properties
-rw-r--r-- 1 root root 909 Dec 16 2016 connect-console-source.properties
-rw-r--r-- 1 root root 2760 Dec 16 2016 connect-distributed.properties
-rw-r--r-- 1 root root 883 Dec 16 2016 connect-file-sink.properties
-rw-r--r-- 1 root root 881 Dec 16 2016 connect-file-source.properties
-rw-r--r-- 1 root root 1074 Dec 16 2016 connect-log4j.properties
-rw-r--r-- 1 root root 2061 Dec 16 2016 connect-standalone.properties
-rw-r--r-- 1 root root 1199 Dec 16 2016 consumer.properties
-rw-r--r-- 1 root root 4369 Dec 16 2016 log4j.properties
-rw-r--r-- 1 root root 1900 Dec 16 2016 producer.properties
-rw-r--r-- 1 root root 5336 Dec 16 2016 server.properties
-rw-r--r-- 1 root root 1032 Dec 16 2016 tools-log4j.properties
-rw-r--r-- 1 root root 1023 Dec 16 2016 zookeeper.properties  

node 01 -> server.properties

[root@quan config]# egrep -v '#|^$' server.properties
# 当前机器在集群中的唯一标识,和zookeeper的myid性质一样
broker.id=0
host.name=192.168.90.2
# 这个是borker进行网络处理的线程数
num.network.threads=3
# 这个是borker进行I/O处理的线程数
num.io.threads=8
# 发送缓冲区buffer大小,数据不是一下子就发送的,先回存储到缓冲区了到达一定的大小后在发送,能提高性能
socket.send.buffer.bytes=102400
# kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘
socket.receive.buffer.bytes=102400
# 这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小
socket.request.max.bytes=104857600
# 日志目录
log.dirs=/opt/app/kafka_2.11-0.10.1.1/logs
# 默认的分区数,一个topic默认1个分区数
num.partitions=1
num.recovery.threads.per.data.dir=1
# 默认消息的最大持久化时间,168小时,7天
log.retention.hours=168
# 因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件
log.segment.bytes=1073741824
# 每隔300000毫秒去检查上面配置的log失效时间
log.retention.check.interval.ms=300000
# 设置zookeeper的连接端口
zookeeper.connect=192.168.90.2:2181,192.168.90.3:2181,192.168.90.4:2181
# 设置zookeeper超时时间
zookeeper.connection.timeout.ms=6000


# 配置修改
# 添加以下内容:
message.max.byte=5242880
default.replication.factor=2
replica.fetch.max.bytes=5242880

# 修改zookeeper连接端口

启动kafka集群

# 启动
# /opt/app/kafka_2.11-0.10.1.1/bin/kafka-server-start.sh -daemon /opt/app/kafka_2.11-0.10.1.1/config/server.properties # node 01 [root@quan ~]# jps 17575 Jps 789 QuorumPeerMain 17424 Kafka # node 02 [root@quan kafka_2.11-0.10.1.1]# jps 1407 QuorumPeerMain 1727 Kafka 1785 Jps # node 03 [root@quan kafka_2.11-0.10.1.1]# jps 25499 QuorumPeerMain 25875 Jps 25821 Kafka

验证集群

创建topic

[root@quan bin]# ./kafka-topics.sh --create --zookeeper 192.168.90.2:2181 --replication-factor 2 --partitions 1 --topic ftopic
Created topic "ftopic".

# --replication-factor 2 #复制两份
# --partitions 1 #创建1个分区
# --topic #主题为ftopic

# 创建producer
# 在node 01 使用console发送消息
[root@quan bin]# ./kafka-console-producer.sh --broker-list 192.168.90.3:9092 --topic ftopic

test
node 01 -> use --broker-list 192.168.90.3:9092 -----> 192.168.90.2

# 创建consumer
# 在node 02 使用console接受消息
[root@quan bin]# ./kafka-console-consumer.sh --zookeeper 192.168.90.2:2181 --topic ftopic --from-beginning

Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].

test
node 01 -> use --broker-list 192.168.90.3:9092 -----> 192.168.90.2

查询所有topic

# 在node 01 上创建的topic 使用node 02 zookeeper验证
[root@quan bin]# ./kafka-topics.sh --list --zookeeper 192.168.90.3:2181
ftopic

# 查看topic状态
[root@quan bin]# ./kafka-topics.sh --describe --zookeeper 192.168.90.3:2181 --topic ftopic
Topic:ftopic	PartitionCount:1	ReplicationFactor:2	Configs:
Topic: ftopic	Partition: 0	Leader: 1003	Replicas: 1003,1001	Isr: 1003,1001

使用zookeeper查看kafka三个节点

[root@quan bin]# /opt/app/zookeeper-3.4.6/bin/zkCli.sh -server 192.168.90.3:2181
Connecting to 192.168.90.3:2181
2017-12-12 02:58:23,469 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT
2017-12-12 02:58:23,471 [myid:] - INFO [main:Environment@100] - Client environment:host.name=localhost
2017-12-12 02:58:23,471 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.7.0_71
2017-12-12 02:58:23,472 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2017-12-12 02:58:23,472 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/opt/app/jdk1.7.0_71/jre
2017-12-12 02:58:23,472 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/opt/app/zookeeper-3.4.6/bin/../build/classes:/opt/app/zookeeper-3.4.6/bin/../build/lib/*.jar:/opt/app/zookeeper-3.4.6/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/app/zookeeper-3.4.6/bin/../lib/slf4j-api-1.6.1.jar:/opt/app/zookeeper-3.4.6/bin/../lib/netty-3.7.0.Final.jar:/opt/app/zookeeper-3.4.6/bin/../lib/log4j-1.2.16.jar:/opt/app/zookeeper-3.4.6/bin/../lib/jline-0.9.94.jar:/opt/app/zookeeper-3.4.6/bin/../zookeeper-3.4.6.jar:/opt/app/zookeeper-3.4.6/bin/../src/java/lib/*.jar:/opt/app/zookeeper-3.4.6/bin/../conf:.:/opt/app/jdk1.7.0_71/lib/dt.jar:/opt/app/jdk1.7.0_71/lib/tools.jar
2017-12-12 02:58:23,473 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2017-12-12 02:58:23,473 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2017-12-12 02:58:23,473 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA>
2017-12-12 02:58:23,473 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux
2017-12-12 02:58:23,473 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64
2017-12-12 02:58:23,473 [myid:] - INFO [main:Environment@100] - Client environment:os.version=3.10.0-514.el7.x86_64
2017-12-12 02:58:23,473 [myid:] - INFO [main:Environment@100] - Client environment:user.name=root
2017-12-12 02:58:23,473 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/root
2017-12-12 02:58:23,473 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/opt/app/kafka_2.11-0.10.1.1/bin
2017-12-12 02:58:23,474 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=192.168.90.3:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@75aa57fb
2017-12-12 02:58:23,507 [myid:] - INFO [main-SendThread(192.168.90.3:2181):ClientCnxn$SendThread@975] - Opening socket connection to server 192.168.90.3/192.168.90.3:2181. Will not attempt to authenticate using SASL (unknown error)
2017-12-12 02:58:23,510 [myid:] - INFO [main-SendThread(192.168.90.3:2181):ClientCnxn$SendThread@852] - Socket connection established to 192.168.90.3/192.168.90.3:2181, initiating session
Welcome to ZooKeeper!
2017-12-12 02:58:23,542 [myid:] - INFO [main-SendThread(192.168.90.3:2181):ClientCnxn$SendThread@1235] - Session establishment complete on server 192.168.90.3/192.168.90.3:2181, sessionid = 0x26046a491c00004, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
JLine support is enabled
[zk: 192.168.90.3:2181(CONNECTED) 0] ls /
## 这里 admin consumers config brokers 均为kafka创建
[isr_change_notification, hbase, admin, zookeeper, consumers, cluster, config, controller, pinpoint-cluster, brokers, controller_epoch]
[zk: 192.168.90.3:2181(CONNECTED) 1] ls /brokers
[seqid, topics, ids]
## kafka三个节点, 根据server.properties中broker.id 决定,若将其注释,则kafka会默认分配
[zk: 192.168.90.3:2181(CONNECTED) 2] ls /brokers/ids
[1003, 1001, 1002]
## 查看1001 为 node 02
[zk: 192.168.90.3:2181(CONNECTED) 3] get /brokers/ids/1001
{"jmx_port":-1,"timestamp":"1513016013999","endpoints":["PLAINTEXT://192.168.90.3:9092"],"host":"192.168.90.3","version":3,"port":9092}
cZxid = 0x40000002f
ctime = Tue Dec 12 02:13:44 CST 2017
mZxid = 0x40000002f
mtime = Tue Dec 12 02:13:44 CST 2017
pZxid = 0x40000002f
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x36046a4b9cc0000
dataLength = 135
numChildren = 0
## 查看1002 为 node 03
[zk: 192.168.90.3:2181(CONNECTED) 4] get /brokers/ids/1002
{"jmx_port":-1,"timestamp":"1513016023980","endpoints":["PLAINTEXT://192.168.90.4:9092"],"host":"192.168.90.4","version":3,"port":9092}
cZxid = 0x40000002c
ctime = Tue Dec 12 02:13:43 CST 2017
mZxid = 0x40000002c
mtime = Tue Dec 12 02:13:43 CST 2017
pZxid = 0x40000002c
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x36046a4b9cc0001
dataLength = 135
numChildren = 0
## 查看1003 为 node 01
[zk: 192.168.90.3:2181(CONNECTED) 5] get /brokers/ids/1003
{"jmx_port":-1,"timestamp":"1513016051032","endpoints":["PLAINTEXT://192.168.90.2:9092"],"host":"192.168.90.2","version":3,"port":9092}
cZxid = 0x400000034
ctime = Tue Dec 12 02:13:53 CST 2017
mZxid = 0x400000034
mtime = Tue Dec 12 02:13:53 CST 2017
pZxid = 0x400000034
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x16046a51e340000
dataLength = 135
numChildren = 0
[zk: 192.168.90.3:2181(CONNECTED) 6]

  

 

posted @ 2019-05-05 14:59  叫我小张就好啦  阅读(332)  评论(0编辑  收藏  举报