Zookeeper3.4.14(单集群)、Kafka_2.12-2.2.2(集群)安装

        最近消失了一段时间,去办理北航的非全研究生入学,回归校园生活感觉还不错,好了不说废话,记录下Zookeeper3.4.14(单集群)、Kafka_2.12-2.2.2(集群)安装。

一、单机环境搭建

1.1 下载

下载对应版本 Zookeeper,这里我下载的版本 3.4.14 。官方下载地址:https://archive.apache.org/dist/zookeeper/

wget方式直接
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper3.4.14.tar.gz

windows下载 上传到服务器

直接浏览器输入链接

https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper3.4.14.tar.gz

1.2 解压

tar -zxvf zookeeper-3.4.14.tar.gz

1.3 配置环境变量

vim /etc/profile
添加环境变量

export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.14
export PATH=$ZOOKEEPER_HOME/bin:$PATH

使得配置的环境变量生效
source /etc/profile

1.4 修改配置

进入安装目录的 conf/ 目录下,拷贝配置样本并进行修改:
cp zoo_sample.cfg zoo.cfg
指定数据存储目录和日志文件目录(目录不用预先创建,程序会自动创建),修改后完整配置如下:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/opt/module/zookeeper-3.4.14/data
dataLogDir=/opt/module/zookeeper-3.4.14/log
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

配置参数说明:

  • tickTime:用于计算的基础时间单元。比如 session 超时:N*tickTime;
  • initLimit:用于集群,允许从节点连接并同步到 master 节点的初始化连接时间,以 tickTime 的倍数来表示;
  • syncLimit:用于集群, master 主节点与从节点之间发送消息,请求和应答时间长度(心跳机制);
  • dataDir:数据存储位置;
  • dataLogDir:日志目录;
  • clientPort:用于客户端连接的端口,默认 2181

1.5 启动

由于已经配置过环境变量,直接使用下面命令启动即可:
zkServer.sh start

1.6 验证

使用 JPS 验证进程是否已经启动,出现 QuorumPeerMain 则代表启动成功。

二、集群环境搭建

为保证集群高可用,Zookeeper 集群的节点数最好是奇数,最少有三个节点,所以这里演示搭建一个三
个节点的集群。这里我使用三台主机进行搭建,主机名分别为 hadoop101,hadoop102,
hadoop103。
2.1 修改配置

解压一份 zookeeper 安装包命名zookeeper-cluster,修改其配置文件 zoo.cfg ,内容如下。之后使用 xsync 命令(这个命令最后边介绍)将安装包分发
到三台服务器上:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/module/zookeeper-cluster/data/
dataLogDir=/opt/module/zookeeper-cluster/log/
clientPort=2181
# server.1 这个1是服务器的标识,可以是任意有效数字,标识这是第几个服务器节点,这个标识要写到dataDir目录下面myid文件里
# 指名集群间通讯端口和选举端口
server.1=hadoop101:2287:3387
server.2=hadoop102:2287:3387
server.3=hadoop103:2287:3387

修改/etc/profile

#ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/module/zookeeper-cluster
export PATH=$ZOOKEEPER_HOME/bin:$PATH

2.2 标识节点
分别在三台主机的 dataDir 目录下新建 myid 文件,并写入对应的节点标识。Zookeeper 集群通过
myid 文件识别集群节点,并通过上文配置的节点通信端口和选举端口来进行节点通信,选举出
Leader 节点。
创建存储目录:

mkdir -vp /opt/module/zookeeper-cluster/data/

创建并分别去三个节点写入节点标识到 myid 文件:

# hadoop101主机
echo "1" > /opt/module/zookeeper-cluster/data/myid
# hadoop102主机
echo "2" > /opt/module/zookeeper-cluster/data/myid
# hadoop103主机
echo "3" > /opt/module/zookeeper-cluster/data/myid

2.3 启动集群
分别在三台主机上,执行如下命令启动服务:
xcall zkServer.sh start
2.4 集群验证
启动后使用 xcall zkServer.sh status 查看集群各个节点状态。三个节点进程均启动成功,并
且 三个节点分别由一个 leader 节点和两个follower 节点。

二、Kafka集群搭建

2.1 下载解压

Kafka 安装包官方下载地址:http://kafka.apache.org/downloads ,本用例下载的版本为 2.2.2,下载命令:

# 下载
wget https://www-eu.apache.org/dist/kafka/2.2.0/kafka_2.12-2.2.2.tgz
# 解压
tar -xzvf kafka_2.12-2.2.2.tgz -C /opt/module/

这里 j 解释一下 kafka 安装包的命名规则:以 kafka_2.12-2.2.2.tgz 为例,前面的 2.12 代表 Scala 的版本号(Kafka 采用 Scala 语言进行开发),后面的 2.2.2 则代表 Kafka 的版本号。

2.2 配置文件

vim /etc/profile

#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka_2.12-2.2.2
export PATH=$KAFKA_HOME/bin:$PATH

source /etc/profile

进入解压目录的 config 目录下 编辑配置文件:

vim server.properties

2.3 修改配置

分别修改配置文件中的部分配置,如下:

# 三台服务器都要配置,且每个节点id必须唯一
broker.id=2

# 各服务器写各自的ip,这里以hadoop102
listeners=PLAINTEXT://hadoop102:9092
advertised.listeners=PLAINTEXT://hadoop102:9092

# log.dirs 路径自己配,单文件夹一定要存在,不会自己生成,如果路径不存在启动会报错。
log.dirs=/opt/module/kafka_2.12-2.2.2/logs

# topic 允许删除配置
delete.topic.enable=true

# 以下配置三台服务器都一样
zookeeper.connect=hadoop101:2181,hadoop102:2181,hadoop103:2181
zookeeper.connection.timeout.ms=60000

这里需要说明的是 log.dirs 指的是数据日志的存储位置,确切的说,就是分区数据的存储位置,而不是程序运行日志的位置。程序运行日志的位置是通过同一目录下的 log4j.properties 进行配置的。

2.4 启动集群

使用xcall 启动三个 Kafka 节点。启动后可以使用 xcall jps 查看进程,此时三个节点分别应该有三个 zookeeper 进程和三个 kafka 进程。

xcall kafka-server-start.sh /opt/module/kafka_2.12-2.2.2/config/server.properties

2.5 创建测试主题

创建测试主题:

bin/kafka-topics.sh --create --bootstrap-server hadoop101:9092 \
					--replication-factor 3 \
					--partitions 1 --topic my-replicated-topic

创建后可以使用以下命令查看创建的主题信息:

bin/kafka-topics.sh --describe --bootstrap-server hadoop101:9092 --topic my-replicated-topic

可以看到分区 0 的有 0,1,2 三个副本,且三个副本都是可用副本,都在 ISR(in-sync Replica 同步副本) 列表中,其中 1 为首领副本,此时代表集群已经搭建成功。

在hadoop101节点创建一个生产者,并指定一个topic

bin/kafka-console-producer.sh --broker-list hadoop101:9092 --topic my-replicated-topic

在hadoop102节点创建一个消费者,并订阅一个topic

bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic my-replicated-topic --from-beginning

展示其中一个节点的topic列表

bin/kafka-topics.sh --zookeeper hadoop101:2181 --list

其他创建 flume-kafka主题

bin/kafka-topics.sh --create --bootstrap-server hadoop101:9092 \
 --replication-factor 3 \
 --partitions 1 --topic flume-kafka

查看创建的主题

bin/kafka-topics.sh --zookeeper hadoop001:2181 --list

消费者消费

bin/kafka-console-consumer.sh --bootstrap-server hadoop101:9092 --topic flume-kafka

注意解释一下xcall和xsync

使用前提:3个节点主机之间配置了hosts,ssh免密登录,防火墙关闭等操作

xcall:

#!/bin/bash
#在集群的所有机器上批量执行同一条命令
if(($#==0))
then
	echo 请输入您要操作的命令!
	exit
fi

echo 要执行的命令是$*

#循环执行此命令
for((i=101;i<=103;i++))
do
	echo ---------------------hadoop$i-----------------
	ssh hadoop$i $*
done

xsync:

#!/bin/bash
#校验参数是否合法
if(($#==0))
then
	echo 请输入要分发的文件!
	exit;
fi
#获取分发文件的绝对路径
dirpath=$(cd `dirname $1`; pwd -P)
filename=`basename $1`

echo 要分发的文件的路径是:$dirpath/$filename

#循环执行rsync分发文件到集群的每条机器
for((i=101;i<=103;i++))
do
	echo ---------------------hadoop$i---------------------
	rsync -rvlt $dirpath/$filename  atguigu@hadoop$i:$dirpath
done

root 用户可以将这两个脚本放置在/usr/local/bin 目录下,并授予执行权限

chmod 777 xcall
chmod 777 xsync
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值