zookeeper+kafka环境搭建

步骤:首先安装java环境、安装zookeeper,最后安装kafka

一、安装java环境

1、下载所需要的软件

[root@linux-node2 src]# cd /usr/local/src

(所需要的软件有jdk-8u121-linux-x64.rpm、zookeeper-3.4.10.tar.gz、kafka_2.10-0.10.1.0.tgz)

 

备注:

这些软件可自行到官网上下载。最新版本的比较高的zookeeper需要最新版本的jdk,我这里用的是jdk8

2、安装jdk,并声明java的家目录

[root@linux-node2 src]# rpm -ivh jdk-8u121-linux-x64.rpm

[root@linux-node2 src]# echo 'export JAVA_HOME="/usr/java/jdk1.8.0_121"' >> /etc/profile

[root@linux-node2 src]# source /etc/profile

 

二、配置安装zookeeper

[root@linux-node2 ~]# mkdir -p /zookeeper/{zk1,zk2,zk3}   #创建zookeeper的安装目录

1、配置安装第一个zookeeper

[root@linux-node2 ~]# tar -xf /usr/local/src/zookeeper-3.4.10.tar.gz -C /zookeeper/zk1/

[root@linux-node2 ~]# cd /zookeeper/zk1/zookeeper-3.4.10/conf/

[root@linux-node2 conf]# cp zoo_sample.cfg zoo.cfg  #zookeeper的主配置文件

[root@linux-node2 conf]# grep '^[a-Z]' /zookeeper/zk1/zookeeper-3.4.10/conf/zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/zookeeper/zk1/zookeeper-3.4.10/dataPath

autopurge.snapRetainCount=500

autopurge.purgeInterval=24

clientPort=2181

server.1=127.0.0.1:8880:7770  

server.2=127.0.0.1:8881:7771

server.3=127.0.0.1:8882:7772

备注(这里是在一台机器上搭建的环境):

1、server字段里面的第一个端口(8880,8881,8882)为选举端口,第二端口(7770,7771,7772)是为了防止网络异常的端口,都是自定义的

2、dataDir为数据路径一会要创建出来

3、客户端的端口,每一个zookeeper也不同

4、如果是在不同服务器上搭建这个环境,只需要修改server字段里面的IP即可。

5、参数说明

 

①tickTime这个时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是说每个tickTime时间就会发送一个心跳。
②initLimit这个配置项是用来配置zookeeper接受客户端(这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
③当已经超过10个心跳的时间(也就是tickTime)长度后 zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20秒。
④syncLimit这个配置项标识leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。
⑤dataDir就是zookeeper保存数据的目录,默认情况下zookeeper将写数据的日志文件也保存在这个目录里;
⑥clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;

#创建数据文件

[root@linux-node2 conf]# mkdir -p /zookeeper/zk1/zookeeper-3.4.10/dataPath

[root@linux-node2 conf]# echo 1 > /zookeeper/zk1/zookeeper-3.4.10/dataPath/myid

备注:这是个规定,而且myid不同的zookeeper不能相同

 

2、配置安装第二个zookeeper

[root@linux-node2 ~]# cp -a /zookeeper/zk1/* /zookeeper/zk2/

[root@linux-node2 ~]# echo 2 > /zookeeper/zk2/zookeeper-3.4.10/dataPath/myid

[root@linux-node2 ~]# grep '^[a-Z]' /zookeeper/zk2/zookeeper-3.4.10/conf/zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/zookeeper/zk2/zookeeper-3.4.10/dataPath

clientPort=2182

server.1=127.0.0.1:8880:7770  

server.2=127.0.0.1:8881:7771

server.3=127.0.0.1:8882:7772

 

3、配置安装第三个zookeeper

[root@linux-node2 ~]# cp -a /zookeeper/zk1/* /zookeeper/zk3/

[root@linux-node2 ~]# echo 3 > /zookeeper/zk3/zookeeper-3.4.10/dataPath/myid

[root@linux-node2 ~]# grep '^[a-Z]' /zookeeper/zk3/zookeeper-3.4.10/conf/zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/zookeeper/zk3/zookeeper-3.4.10/dataPath

clientPort=2183

server.1=127.0.0.1:8880:7770  

server.2=127.0.0.1:8881:7771

server.3=127.0.0.1:8882:7772

 

4、启动zookeeper

[root@linux-node2 ~]# /zookeeper/zk1/zookeeper-3.4.10/bin/zkServer.sh start

[root@linux-node2 ~]# /zookeeper/zk2/zookeeper-3.4.10/bin/zkServer.sh start

[root@linux-node2 ~]# /zookeeper/zk3/zookeeper-3.4.10/bin/zkServer.sh start

 

 

备注:如果有报错可以查看文件:zookeeper.out

 

5、查看是否成功

[root@linux-node2 ~]# /zookeeper/zk1/zookeeper-3.4.10/bin/zkCli.sh -server 127.0.0.1:2181

或者

[root@linux-node2 ~]# /zookeeper/zk1/zookeeper-3.4.10/bin/zkCli.sh -server 127.0.0.1:2182

或者

[root@linux-node2 ~]# /zookeeper/zk2/zookeeper-3.4.10/bin/zkCli.sh -server 127.0.0.1:2183

 

 

[zk: 127.0.0.1:2181(CONNECTED) 0] ls

[zk: 127.0.0.1:2181(CONNECTED) 1] ls /zookeeper/quota

[]

[zk: 127.0.0.1:2181(CONNECTED) 2] ls /zookeeper/quota

[]

[zk: 127.0.0.1:2181(CONNECTED) 3] get /zookeeper/quota

 

cZxid = 0x0

ctime = Thu Jan 01 08:00:00 CST 1970

mZxid = 0x0

mtime = Thu Jan 01 08:00:00 CST 1970

pZxid = 0x0

cversion = 0

dataVersion = 0

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 0

numChildren = 0

 

备注:测试的时候可以自由搭配,没有固定的搭配方法

 

三、配置安装kafka

1、添加第一个kafka实例

[root@linux-node2 ~]# mkdir -p /kafka/{ka1,ka2,ka3}

[root@linux-node2 ~]# tar -xf /usr/local/src/kafka_2.10-0.10.1.0.tgz -C /kafka/ka1/

[root@linux-node2 ~]#mkdir /kafka/ka1/kafka_2.10-0.10.1.0/logs

[root@linux-node2 config]# cd /kafka/ka1/kafka_2.10-0.10.1.0/config

[root@linux-node2 config]# grep "^[a-Z]" server.properties

broker.id=0

listeners=PLAINTEXT://127.0.0.1:9092    

num.network.threads=3

num.io.threads=8

socket.send.buffer.bytes=102400

socket.receive.buffer.bytes=102400

socket.request.max.bytes=104857600

log.dirs=/kafka/ka1/kafka_2.10-0.10.1.0/logs

num.partitions=1

num.recovery.threads.per.data.dir=1

log.retention.hours=168

log.segment.bytes=1073741824

log.retention.check.interval.ms=300000

zookeeper.connect=localhost:2181,localhost:2182,localhost:2183

zookeeper.connection.timeout.ms=6000

 

 

2、添加第二个kafka实例

[root@linux-node2 ~]# cp -a /kafka/ka1/* /kafka/ka2/

[root@linux-node2 config]# cd /kafka/ka2/kafka_2.10-0.10.1.0/config

[root@linux-node2 config]# grep "^[a-Z]" server.properties

broker.id=1

listeners=PLAINTEXT://127.0.0.1:9093

num.network.threads=3

num.io.threads=8

socket.send.buffer.bytes=102400

socket.receive.buffer.bytes=102400

socket.request.max.bytes=104857600

log.dirs=/kafka/ka2/kafka_2.10-0.10.1.0/logs

num.partitions=1

num.recovery.threads.per.data.dir=1

log.retention.hours=168

log.segment.bytes=1073741824

log.retention.check.interval.ms=300000

zookeeper.connect=localhost:2181,localhost:2182,localhost:2183

zookeeper.connection.timeout.ms=6000

 

 

3、添加第三个kafka实例

[root@linux-node2 ~]# cp -a /kafka/ka1/* /kafka/ka3/

[root@linux-node2 config]# cd /kafka/ka3/kafka_2.10-0.10.1.0/config

[root@linux-node2 config]# grep "^[a-Z]" server.properties

broker.id=2

listeners=PLAINTEXT://127.0.0.1:9094

num.network.threads=3

num.io.threads=8

socket.send.buffer.bytes=102400

socket.receive.buffer.bytes=102400

socket.request.max.bytes=104857600

log.dirs=/kafka/ka3/kafka_2.10-0.10.1.0/logs

num.partitions=1

num.recovery.threads.per.data.dir=1

log.retention.hours=168

log.segment.bytes=1073741824

log.retention.check.interval.ms=300000

zookeeper.connect=localhost:2181,localhost:2182,localhost:2183

zookeeper.connection.timeout.ms=6000

 

4、启动kafka

节点1:

[root@linux-node2 ~]# /kafka/ka1/kafka_2.10-0.10.1.0/bin/kafka-server-start.sh /kafka/ka1/kafka_2.10-0.10.1.0/config/server.properties &

 

节点2:

[root@linux-node2 ~]# /kafka/ka2/kafka_2.10-0.10.1.0/bin/kafka-server-start.sh /kafka/ka2/kafka_2.10-0.10.1.0/config/server.properties &

 

节点3:

[root@linux-node2 ~]# /kafka/ka3/kafka_2.10-0.10.1.0/bin/kafka-server-start.sh /kafka/ka3/kafka_2.10-0.10.1.0/config/server.properties &

或者以守护进程启动也可以:/kafka/ka1/kafka_2.10-0.10.1.0/bin/kafka-server-start.sh -daemon /kafka/ka1/kafka_2.10-0.10.1.0/config/server.properties

查看进程状态:

[root@linux-node2 bin]# ps -ef | grep kafka

 

5、测试

partition:分区  replication:复制  logstashtest:名称

①测试创建topic:
/kafka/ka1/kafka_2.10-0.10.1.0/bin/kafka-topics.sh --create --zookeeper localhost:2181,localhost:2182,localhost:2183 --partition 3 --replication-factor 3 --topic logstashtest

②测试获取topic:
/kafka/ka1/kafka_2.10-0.10.1.0/bin/kafka-topics.sh --describe --zookeeper localhost:2181,localhost:2182,localhost:2183 --topic logstashtest


③测试删除topic:
/kafka/ka1/kafka_2.10-0.10.1.0/bin/kafka-topics.sh --delete --zookeeper localhost:2181,localhost:2182,localhost:2183 --topic logstashtest

④测试获取所有topic:
/kafka/ka1/kafka_2.10-0.10.1.0/bin/kafka-topics.sh --list --zookeeper localhost:2181,localhost:2182,localhost:2183


⑤创建消息:
/kafka/ka1/kafka_2.10-0.10.1.0/bin/kafka-topics.sh --create --zookeeper localhost:2181,localhost:2182,localhost:2183 --partition 3 --replication-factor 3 --topic messagetest

⑥发送消息:
/kafka/ka1/kafka_2.10-0.10.1.0/bin/kafka-console-producer.sh --broker-list localhost:9092,localhost:9093,localhost:9094 --topic messagetest
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值