kafka 的安装及启动
安装 kafka 之前需要先安装以下依赖环境:
- JDK 8
- ZooKeeper
Linux环境下安装JDK:
-
下载并安装。首先在Oracle官网https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载JDK1.8安装文件,下载 Linux 版本的 JDK 1.8 安装包。下载完成后通过以下命令解压到家目录下
tar -zxvf jdk-8u211-linux-x64.tar.gz -C ~
-
配置环境变量
sudo vi /etc/profile
在 profile 最后加上java的环境变量
export JAVA_HOME=/home/hadoop/jdk1.8.0_211 export JRE_HOME=/home/hadoop/jdk1.8.0_211/jre export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/ export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
使用以下命令使配置生效
source /etc/profile
-
使用以下命令查看是否安装成功
java -version
安装zookeeper:
- 下载ZooKeeper
进入ZooKeeper官网 https://mirrors.cnnic.cn/apache/zookeeper/ 进入对应的版本目录,选择版本号后面带有 bin 字样的下载文件进行下载
也可以使用 wget 命令进行下载
wget https://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.6.0/apache-zookeeper-3.6.0-bin.tar.gz
-
安装
在家目录下新建一个目录
mkdir middleware
将下载好的 zookeeper 解压到 middleware
tar -zxvf apache-zookeeper-3.6.0-bin.tar.gz -C ~/middleware/
为了方便使用可以将 zookeeper 的安装目录添加到环境变量
sudo vi /etc/profile
export ZOOKEEPER_HOME=/home/hadoop/middleware/apache-zookeeper-3.6.0-bin export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ZOOKEEPER_HOME/bin
source /etc/profile
进入 ZooKeeper 的 conf 目录,将 zoo.sample.cfg 重命名为 zoo.cfg
cp zoo_sample.cfg zoo.cfg
在 middleware 目录新建以下目录作为 zookeeper 快照目录和事务日志目录
mkdir -p data/zookeeper/data
mkdir -p data/zookeeper/logs
修改配置文件
vi zoo.cfg
只需修改以下两项即可
dataDir=/home/hadoop/middleware/data/zookeeper/data dataLogDir=/home/hadoop/middleware/data/zookeeper/logs
-
验证
使用以下命令启动 zookeeper
zkServer.sh start
用 jps 命令查看进程
root@hadoopnode:/home/hadoop/middleware/apache-zookeeper-3.6.0-bin/conf# jps 1944 Jps 1912 QuorumPeerMai
如果有 QuorumPeerMai 进程则启动成功
-
ZooKeeper基础配置说明:
配置项 | 默认值 | 说明 |
---|---|---|
tickTime | 2000ms | ZooKeepe中的一个时间单元。ZooKeeper中所有时间都以这个时间单元为基准,进行整数倍配置,默认是2s |
initLimit | 10 | Follower在启动过程中,会从Leader同步所有最新数据,确定自己能够对外服务的起始状态。当Follower在initLimt个tickTime还没有完成数据同步时,则Leader仍为Follower连接失败 |
syncLimit | 5 | Leader与Follower之间通信请和应的时间长度。若Leader在syncLimit个tickTime还没有收到Follower应答,则认为该Leader已下线 |
dataDir | /tmp/zookeeper | 存储快照文件的目录,默认情况下,事务日志也会存储在该目录上。由于事务日志的写性能直接影响ZooKeeper性能,因此建议同时配置参数dataLogDir |
dataLogDir | /tmp/zookeeper | 事务日志输出目录 |
clientPort | 2181 | ZooKeeper对外端口 |
kafka单机环境部署
- 进入kafka官网 http://kafka.apache.org/downloads 下载kafka
选择编译的二进制版本
wget https://mirror.bit.edu.cn/apache/kafka/2.5.0/kafka_2.12-2.5.0.tgz
解压到 middleware 目录:
tar -zxvf kafka_2.12-2.5.0.tgz -C ~/middleware/
将kafka加入到环境变量
sudo vi /etc/profile
export KAFKA_HOME=/home/hadoop/middleware/kafka_2.12-2.5.0
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$KAFKA_HOME/bin
让修改生效
source /etc/profile
-
修改配置。
在 middleware/data 目录下创建 kafka-logs 目录,也可以把该目录创建在 kafka 的安装目录下
mkdir ~/middleware/data/kafka-logs
进入 kafka 的 config 目录,修改 server.properties 文件,修改以下两项即可
Broker.id=0 Log.dirs=/opt/data/kafka-logs
-
验证
启动 kafka 之前要先启动 ZooKeeper
zkServer.sh start
kafka-server-start.sh ~/middleware/kafka_2.12-2.5.0/config/server.properties
在 kafka 启动时可以加上 -daemon 参数,该参数意思是以守护进程的形式启动 kafka
kafka-server-start.sh -daemon ~/middleware/kafka_2.12-2.5.0/config/server.properties
jps 查看进程,启动成功后会有以下进程
1912 QuorumPeerMain 3288 Kafka 3692 Jps
通过 ZooKeeper 客户端登录 ZooKeeper 查看目录结构
zkCli.sh
[zk: localhost:2181(CONNECTED) 0] ls / [admin, brokers, cluster, config, consumers, controller, controller_epoch, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]
执行以下命令查看已启动的 kafka 代理节点:
ls /brokers/ids
kafka伪分布式环境部署
KafkaServer 启动时需要加载一个用于 KafkaServer 初始化相关配置的 server.properties 文件,当然文件名可以任意,一个 server.properties 对应一个 KafkaServer 实例 。 Kafka 伪分布式就是在一台机器上启动多个 KafkaServer 来达到多代理的效果,因此要保证 broker.id 及 port 在同一台机器的多个 server.properities 中唯一。
在 middleware 目录下载新建以下目录
mkdir ~/middleware/data/kafka-logs/broker-0
mkdir ~/middleware/data/kafka-logs/broker-1
将 kafka 的 config 目录下的server.propreties文件复制一份并命名为 server-0.proprities,修改配置如下
broker.id=0
log.dirs=/opt/data/kafka-logs/broker-0
listeners=PLAINTEXT://your.host.name:9092 #设置代理服务器的监听地址,代理将使用它来创建服务器套接字,如果是在阿里云上配置,这里则设置为阿里云的内网ip
advertised.listeners=PLAINTEXT://your.host.name:9092 #api客户端将只用该地址和端口连接到代理的,如果是在阿里云上配置,这里则设置为阿里云的公网ip
delete.topic.enable=true #在删除主题时将数据一并删除,为 false 则表示为标记删除
server-1.proprities 配置
broker.id=1
log.dirs=/opt/data/kafka-logs/broker-1
listeners=PLAINTEXT://your.host.name:9093
advertised.listeners=PLAINTEXT://your.host.name:9093
delete.topic.enable=true
由于代理默认端口是9092,server.properties 没有设置端口则采用默认设置,因此在 server-0.properties 将 port 设置为 9093 。这个端口可以自定义,只要新端口没有被占用即可。
执行以下命令,分别启动 brokerld 为 0 和 1 的两个 KafkaServer:
kafka-server-start.sh -daemon ~/middleware/kafka_2.12-2.5.0/config/server-0.properties
kafka-server-start.sh -daemon ~/middleware/kafka_2.12-2.5.0/config/server-1.properties
再次查看 ZooKeeper 的 /brokers/ids 目录,会看到该目录下有两个节点:
[zk: localhost:2181(CONNECTED) 4] ls /brokers/ids
[0, 1]