部署zookeeper
1. 访问zookeeper官网,下载zookeeper的安装包
访问zookeeper官网
Zookeeper的官网地址为:http://zookeeper.apache.org。
可以直接下载好,传到主机上,也直接在主机下载zookeeper
wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
2. 创建数据目录
注:如果创建三个zookeeper,下面的操作就分别在三台主机都执行
*执行以下命令创建数据目录*
mkdir /usr/zookeeper/data
*执行以下命令创建日志目录*
mkdir /usr/zookeeper/data/log
*执行以下命令创建myid,并写入ID。(注:每台主机的id不能相同)*
echo 1 > /usr/zookeeper/data/myid
3. 修改配置文件
从官网下载的zookeeper文件没有zoo.cfg只有zoo_sample.cfg文件。将zoo_sample.cfg文件修改成zoo.cfg文件
mv /usr/local/zookeeper/conf/zoo_sample.cfg zoo.cfg
*修改配置如下:*
dataDir=/usr/zookeeper/data
dataLogDir=/usr/zookeeper/data/log
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
*在最后添加zookeeper集群各节点地址:*
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
*最后的配置文件内容如下:*
服务器之间或客户端与服务器之间维持心跳的时间间隔
# tickTime以毫秒为单位。
tickTime=2000
# 集群中的follower服务器(F)与leader服务器(L)之间的初始连接心跳数
initLimit=10
# 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数
syncLimit=5
# 快照保存目录
# 不要设置为/tmp,该目录重新启动后会被自动清除
dataDir=/home/hadoop/data/zookeeper/data
# 日志保存目录
dataLogDir=/home/hadoop/data/zookeeper/logs
# 客户端连接端口
clientPort=2181
# 客户端最大连接数。
# 根据自己实际情况设置,默认为60个
# maxClientCnxns=60
# 三个接点配置,格式为:
# server.服务编号=服务地址、LF通信端口、选举端口
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
4.拷贝配置文件到其他节点
scp -r zookeeper-3.7.0/ node2:/usr/
5.设置java环境变量
因为zookeeper是java开发的,所有启动zookeeper需要设置java环境变量
1.将下面这些信息添加到/etc/profile文件下
export JAVA_HOME=/usr/local/jdk1.8.0_291 --根据自己jdk的地址设置
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.: J A V A H O M E / l i b : JAVA_HOME/lib: JAVAHOME/lib:JRE_HOME/lib:$CLASSPATH
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:JRE_HOME/bin:$PATH
添加完以后source /etc/profile文件
2.添加如下图片里的这行内容
6.启动zookeeper
*执行以下命令启动zookeeper*
./zkServer.sh start
*执行以下命令检查zookeeper集群中各节点状态:*
./zkServer.sh status
*使用jps命令查看zookeeper进程*
jps
使用kill -9 2432命令杀死leader进程,然后再查看每个节点的Zookeeper状态,如果有一个为leader则验证为好用
部署kafka
1. 访问kafka官网,下载安装包
http://kafka.apache.org/downloads.html
将下载的安装包上传到主机上
2.解压kafka的安装包
tar -xvf kafka_2.13-2.8.0.tgz
3.修改kafka配置文件
broker.id=0 --每台主机的这个参数不能保持一致
port=9092
host.name=192.168.18.128 --修改为自己本机的ip
num.replica.fetchers=1
num.network.threads=8
num.io.threads=8
queued.max.requests=16
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka_logs --根据自己的需要进行修改
num.partitions=3
num.recovery.threads.per.data.dir=1
fetch.purgatory.purge.interval.requests=100
producer.purgatory.purge.interval.requests
delete.topic.enable=true
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=192.168.18.130:2181,192.168.18.129:2181,192.168.18.128:2181 --这个修改成zookeeper的主机和端口
zookeeper.connection.timeout.ms=18000
zookeeper.sync.time.ms=6000000
group.initial.rebalance.delay.ms=0
*将配置文件拷贝到另外的kafka主机*
4. 启动kafka
*进入到bin目录下,执行如下命令启动kafka服务*
./kafka-server-start.sh …/config/server.properties
三个节点都要启动;启动无报错,即搭建成功
5. 测试kafka集群
1. 创建topic
创建一个名为test的topic
./kafka-topics.sh --create --zookeeper 192.168.18.128:2181 --replication-factor 1 --partitions 1 --topic test
2. 列出已创建的 topic列表
./kafka-topics.sh --zookeeper 192.168.18.128:2181 --list
3.查看kafka下某个topic下的partition的信息
./kafka-topics.sh --describe --zookeeper 192.168.18.128:2181 --topic test
4.模拟客户端去发送消息
./kafka-console-producer.sh --broker-list kafka1:9092,kafka2:9092,kafka3:9092 --topic test
5.模拟客户端去接收消息
./kafka-console-consumer.sh --zookeeper zk1:3181,zk2:3181,zk3:3181 --from-beginning --topic test