kafka+zookeeper教程

1. 环境准备

环境准备
10.0.0.101,10.0.0.102,10.0.0.103,
101上做到102,103的免密登录
#为了方便执行命令和传输文件,这里先在101创建2个脚本
]# cat > /usr/bin/data-rsync.sh <<'EOF'
#!/bin/bash
[ $# -ne 1 ] && {
  echo "usage: $0 PATH"
  exit 1
}
for ((id=102;id<=103;id++))
do
   echo "---root@10.0.0.${id}----开始---"
   tput setaf 2
   rsync -avz --delete $1 root@10.0.0.${id}:`dirname $1` 
   tput setaf 9
   echo -e "---root@10.0.0.${id}----结束---------------\n"
done

EOF

]# cat > /usr/bin/cmd-cluster.sh <<'EOF'
#!/bin/bash
[ $# -eq 0 ] && {
  echo "usage: $0 CMD"
  exit 1
}
for ((id=101;id<=103;id++))
do
   echo "--10.0.0.${id}--开始-"
   tput setaf 2
   ssh root@10.0.0.${id} "$@" 
   tput setaf 9
   echo -e "--10.0.0.${id}--结束--------------------\n"
done
EOF
chmod +x /usr/bin/data-rsync.sh /usr/bin/cmd-cluster.sh 

2. zookeeper相关

2.1. zookeeper单节点部署

zookeeper单节点部署
	(1)下载zookeeper软件
mkdir -p /data/tools/zookeeper/ && cd /data/tools/zookeeper/
[root@elk1 ~]# wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
	(2)解压软件包
[root@elk1 ~]# tar xf apache-zookeeper-3.8.4-bin.tar.gz

	(3)创建符号连接
[root@elk1~]#  ln -sv apache-zookeeper-3.8.4-bin zk


	(4)声明zk的环境变量
[root@elk1]# cat > /etc/profile.d/kafka.sh <<'EOF'  
export ZK_HOME=/data/tools/zookeeper/zk
export PATH=$PATH:$ZK_HOME/bin
EOF
echo -e "\nexport PATH=$PATH" >> /root/.bashrc 
source /etc/profile.d/kafka.sh /root/.bashrcv

	(5)创建zk的配置文件
[root@elk1 ~]# cp /data/tools/zookeeper/zk/conf/{zoo_sample.cfg,zoo.cfg}

	(6)启动zk节点
[root@elk1 ~]# zkServer.sh start 
[root@elk1 ~]# zkServer.sh status  # 查看zk服务的状态信息
[root@elk1 ~]# zkServer.sh stop
[root@elk1 ~]# zkServer.sh restart

	(7)连接ZK节点
[root@elk101 ~]# zkCli.sh  

2.2. zookeeper常用命令

功能

命令

创建节点(znode)

create /path data

-s: 创建顺序节点

-e: 创建临时节点

获取znode的数据

get /path

设置znode的数据

set /path data

创建子节点

create /paren/path/subNode data

列出子节点

ls /path

查看znode的状态

stat /path

删除znode

delete /path

递归删除其子节点使用

deleteall /path

2.3. zookeeper集群部署与管理

2.3.1. zookeeper集群部署

zookeeper集群部署
	(1)101下载zookeeper软件
[root@elk1 ~]# mkdir -p /data/tools/zookeeper/ && cd /data/tools/zookeeper/
[root@elk1 ~]# wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
	(1)配置101到101,102,103的免密
[root@elk101 ~]# ssh-keygen
[root@elk101 ~]# ssh-copy-id 10.0.0.101
[root@elk101 ~]# ssh-copy-id 10.0.0.102
[root@elk101 ~]# ssh-copy-id 10.0.0.103
	(2)101节点解压软件包
[root@elk101 ~]# tar xf apache-zookeeper-3.8.4-bin.tar.gz
	(3)101节点创建符号连接
[root@elk101 ~]# ln -sv apache-zookeeper-3.8.4-bin zk
	(4)101节点声明zk的环境变量
[root@elk101 ~]# cat > /etc/profile.d/kafka.sh <<'EOF'  
export ZK_HOME=/data/tools/zookeeper/zk
export PATH=$PATH:$ZK_HOME/bin
EOF
	(5)101节点创建zk的数据目录	
[root@elk101 ~]# mkdir -p /data/data/zk

	(6)101节点创建zk的配置文件
[root@elk101 ~]# cat > /data/tools/zookeeper/zk/conf/zoo.cfg  << EOF             
# 定义最小单元的时间范围tick。
tickTime=2000
# 启动时最长等待tick数量。
initLimit=5
# 数据同步时最长等待的tick时间进行响应ACK
syncLimit=2
# 指定数据目录
dataDir=/data/data/zk
# 监听端口
clientPort=2181
# 开启四字命令允许所有的节点访问。
4lw.commands.whitelist=*
# server.ID=A:B:C[:D]
# ID:
#    zk的唯一编号。
# A:
#    zk的主机地址。
# B:
#    leader的选举端口,是谁leader角色,就会监听该端口。
# C: 
#    数据通信端口。
# D:
#    可选配置,指定角色。
server.101=10.0.0.101:2888:3888
server.102=10.0.0.102:2888:3888
server.103=10.0.0.103:2888:3888
EOF		
		(7)101同步相关目录到102,103节点
[root@elk101 ~]# data-rsync.sh  /data/data/zk
[root@elk101 ~]# data-rsync.sh  /data/tools/zookeeper
[root@elk101 ~]# data-rsync.sh  /etc/profile.d/kafka.sh
		
		(8)所有节点创建myid文件
[root@elk101 ~]#  cmd-cluster.sh  
do ssh 10.0.0.${host_id} "echo ${host_id} > /data/data/zk/myid";
done
		
		(9)所有节点加载zk环境变量
[root@elk101 ~]# cmd-cluster.sh "source /etc/profile.d/kafka.sh;echo  export PATH=$PATH >> /root/.bashrc;source /root/.bashrc"

		(10)所有节点启动zk服务
[root@elk101 ~]# cmd-cluster.sh "zkServer.sh start"

		(11)所有节点查看zk的角色状态
[root@elk101 ~]#  cmd-cluster.sh "zkServer.sh status"

2.3.2. zookeeper集群管理

编写zookeeper的集群管理脚本
[root@elk101]# cat > /usr/local/sbin/zkManager.sh <<'EOF'
#!/bin/bash

#判断用户是否传参
if [ $# -ne 1 ];then
    echo "无效参数,用法为: $0  {start|stop|restart|status}"
    exit
fi

#获取用户输入的命令
cmd=$1

#定义函数功能
function zookeeperManger(){
    case $cmd in
    start)
        echo "启动服务"        
        remoteExecution start
        ;;
    stop)
        echo "停止服务"
        remoteExecution stop
        ;;
    restart)
        echo "重启服务"
        remoteExecution restart
        ;;
    status)
        echo "查看状态"
        remoteExecution status
        ;;
    *)
        echo "无效参数,用法为: $0  {start|stop|restart|status}"
        ;;
    esac
}


#定义执行的命令
function remoteExecution(){
    for (( i=101 ; i<=103 ; i++ )) ; do
            tput setaf 2
            echo ========== 10.0.0.${i} zkServer.sh  $1 ================
            tput setaf 9
            ssh 10.0.0.${i}  "zkServer.sh $1 2>/dev/null"
    done
}

#调用函数
zookeeperManger
EOF

#给脚本添加执行权限
[root@elk1~]# chmod +x /usr/local/sbin/zkManager.sh

#使用
zkManager.sh start|stop|restart|status

2.4. 修改zookeeper的堆内存大小

修改zookeeper的堆内存大小:
温馨提示:	修改zookeeper的堆内存大小,一般情况下,生产环境给到2G足以,如果规模较大可以适当调大到4G。
	(1)查看zk默认的堆内存大小为1GB。
[root@elk101 ~]# jmap -heap `jps | awk '/QuorumPeerMain/{print $1}'`|grep -i heapsize
	(2)配置ZK的堆内存
[root@elk101 ~]# cat > /data/tools/zookeeper/zk/conf/java.env << 'EOF'
export JVMFLAGS="-Xms256m -Xmx256m $JVMFLAGS"
EOF
	(3)将配置文件同步到集群的其他zk节点上
[root@elk101 ~]# data-rsync.sh /data/tools/zookeeper/zk/conf/java.env

	(4)重启ZK集群
[root@elk101 ~]# zkManager.sh restart
	(5)验证堆内存
[root@elk101 ~]# jmap -heap `jps | awk '/QuorumPeerMain/{print $1}'`|grep -i heapsize

3. kafka相关

3.1. kafka单点部署

快速搭建kafka单点环境
	(1)下载kafka软件包
[root@elk101 ~]# mkdir -p /data/tools/kafka/ && cd /data/tools/kafka/
[root@elk101 ~]# wget https://downloads.apache.org/kafka/3.8.0/kafka_2.13-3.8.0.tgz

	(2)解压软件包
[root@elk101 ~]# tar xf kafka_2.13-3.8.0.tgz

	(3)创建符号连接
[root@elk101 ~]# ln -svf /data/tools/kafka/kafka_2.13-3.8.0 /data/tools/kafka/kafka

	(4)配置环境变量
[root@elk101 ]# cat > /etc/profile.d/kafka.sh <<'EOF'
export ZK_HOME=/data/tools/zookeeper/zk
export KAFKA_HOME=/data/tools/kafka/kafka
export PATH=$PATH:$KAFKA_HOME/bin:$ZK_HOME/bin
EOF
[root@elk101 ]# source /etc/profile.d/kafka.sh
[root@elk101 ]# echo "export PATH=$PATH" >> /root/.bashrc
[root@elk101 ]# source /root/.bashrc

	(5)修改配置文件 
[root@elk101 ~]# egrep '^broker|^zookeeper.connect=' /data/tools/kafka/kafka/config/server.properties
broker.id=101
zookeeper.connect=10.0.0.101:2181,10.0.0.102:2181,10.0.0.103:2181
	
	(6)启动kafka单点
[root@elk101 ]# kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties 


	(7)验证zookeeper的源数据信息
	zkCli.sh -server 10.0.0.101:2181,10.0.0.102:2181,10.0.0.103:2181
(CONNECTED) 0] ls /brokers/ids
[101]

3.2. kafka集群部署

kafka集群部署
  (1)101节点下载kafka软件包
[root@elk101 ~]# mkdir -p /data/tools/kafka/ && cd /data/tools/kafka/
[root@elk101 ~]# wget https://downloads.apache.org/kafka/3.8.0/kafka_2.13-3.8.0.tgz

	(2)101节点解压软件包
[root@elk101 ~]# tar xf kafka_2.13-3.8.0.tgz

	(3)101节点创建符号连接
[root@elk101 ~]# ln -svf /data/tools/kafka/kafka_2.13-3.8.0 /data/tools/kafka/kafka

	(4)101节点配置环境变量
[root@elk101 ]# cat > /etc/profile.d/kafka.sh <<'EOF'
export ZK_HOME=/data/tools/zookeeper/zk
export KAFKA_HOME=/data/tools/kafka/kafka
export PATH=$PATH:$KAFKA_HOME/bin:$ZK_HOME/bin
EOF
[root@elk101 ]# source /etc/profile.d/kafka.sh
[root@elk101 ]# echo "export PATH=$PATH" >> /root/.bashrc
[root@elk101 ]# source /root/.bashrc

	(5)101节点修改配置文件 
[root@elk101 ~]# ]# egrep '^broker|^zookeeper.connect=|log.dirs' /data/tools/kafka/kafka/config/server.properties
broker.id=101
log.dirs=/data/data/kafka-logs
zookeeper.connect=10.0.0.101:2181,10.0.0.102:2181,10.0.0.103:2181

  (6)101同步相关目录到102,103节点
[root@elk101 ~]# data-rsync.sh /data/data/kafka-logs
[root@elk101 ~]# data-rsync.sh /data/tools/kafka
[root@elk101 ~]# data-rsync.sh /etc/profile.d/kafka.sh
  
  (7)102,103配置文件修改
[root@elk102 ~]# sed -i 's#^broker.id.*#broker.id=102#' /data/tools/kafka/kafka/config/server.properties
[root@elk103 ~]# sed -i 's#^broker.id.*#broker.id=103#' /data/tools/kafka/kafka/config/server.properties
    
	(8)所有节点加载kafka环境变量
[root@elk101 ~]#  cmd-cluster.sh "source /etc/profile.d/kafka.sh; echo  export PATH=$PATH >> /root/.bashrc ; source /root/.bashrc"

	(9)所有节点启动kafka服务
[root@elk101 ~]#  cmd-cluster.sh "kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties "

(10)验证zookeeper的源数据信息
	zkCli.sh -server 10.0.0.101:2181,10.0.0.102:2181,10.0.0.103:2181
(CONNECTED) 0] ls /brokers/ids
[101, 102, 103]

3.3. kafka的常用术语

kafka的常用术语:
	kafka cluster(broker list):		kafka集群。		
	kafka Server (broker):		指的是kafka集群的某个节点。		
	Producer:		生产者,即往kafka集群写入数据的角色。
	Consumer:		消费者,即从kafka集群中读取数据的角色。一个消费者隶属于一个消费者组。		
	Concumer Group:		消费者组,里面有一个或多个消费者。		
	Topic:		主题,是一个逻辑概念,用于区分业务,一个主题最少要有1个分区和一个副本。		
	Partition:		分区,分区可以暂时理解为分区编号。	
	replica:
		副本,副本是实际存储数据的地方,分为两种角色,即leader和follower。
		   leader:
				负责读写。
		   follower:
				负责从leader节点同步数据,无法对集群外部提供任何服务。当leader无法访问时,follower会接管leader的角色。
		
		AR:
			所有的副本,包含leader和follower副本。
		ISR:
			表示和leader同步的所有副本集合。
		OSR:
			表示和leader不同步的所有副本即可。
			
	zookeeper集群:
		kafka 0.9之前的版本维护消费者组的offset,之后kafka内部的topic进行维护。
		协调kafka的leader选举,控制器协调者选举等....
	
client:
    consumer API:
        即消费者,指的是从boker拉取数据的角色。
		每个消费者均隶属于一个消费者组(consumer Group),一个消费者组内可以有多个消费者。
		
    producer API:
		即生产者,指的是往broker写入数据的角色。
		
	admin API:
		集群管理的相关API,包括topic,parititon,replica等管理。
		
	stream API:
		数据流处理等API,提供给Spark,Flink,Storm分布式计算框架提供数据流管道。
		
	connect API:
		连接数据库相关的API,例如将MySQL导入到kafka。
		
		

		
常见问题:
Q1: 分区和副本有啥区别?
	分区可以暂时理解为分区编号,它包含该分区编号的所有副本,和磁盘的分区没关系。
	副本是实际存储数据的地方,
	
Q2: offset存储在kafka集群,客户端在kafka集群任意一个节点如何获取偏移量。
	通过内部的消费者组的偏移量读取即可。("__consumer_groups")

3.4. kafka topic管理命令

topic管理:
-1 查看topic
    #查看topic列表
[root@elk101 ~]# kafka-topics.sh --bootstrap-server 10.0.0.101:9092,10.0.0.102:9092,10.0.0.103:9092 --list

    #查看指定topic的详细信息	
[root@elk101 ~]# kafka-topics.sh --bootstrap-server 10.0.0.101:9092,10.0.0.102:9092,10.0.0.103:9092 --describe --topic tom
	
   #查看所有的topic详细信息。
[root@elk101 ~]# kafka-topics.sh --bootstrap-server 10.0.0.101:9092,10.0.0.102:9092,10.0.0.103:9092 --describe 

-2 创建topic
	一个topic是生产者(producer)和消费者(consumer)进行通信的逻辑单元。
	底层存储数据的是对应一个或多个分区(partition)副本(replica)。
	#创建一个名为"tom",分区数为3,副本数量为2的topic。
[root@elk101 ~]# kafka-topics.sh --bootstrap-server 10.0.0.101:9092,10.0.0.102:9092,10.0.0.103:9092 --create  --partitions 3 --replication-factor 2 --topic tom

	#创建一个名为"jack",分区数为3,副本数量为2的topic。
[root@elk101 ~]# kafka-topics.sh --bootstrap-server 10.0.0.101:9092,10.0.0.102:9092,10.0.0.103:9092 --create  --partitions 3 --replication-factor 2 --topic jack
	
-3 修改topic(分区数量可以调大,但不可以调小!)
[root@elk101 ~]# kafka-topics.sh --bootstrap-server 10.0.0.101:9092,10.0.0.102:9092,10.0.0.103:9092 --alter --topic tom --partitions 5

-4 刪除topic
[root@elk101 ~]# kafka-topics.sh --bootstrap-server 10.0.0.101:9092,10.0.0.102:9092,10.0.0.103:9092 --delete --topic tom 
	
-5 创建生产者
[root@elk102 ~]# kafka-console-producer.sh --bootstrap-server 10.0.0.103:9092 --topic jack

-6 创建消费者
[root@elk103 ~]# kafka-console-consumer.sh --bootstrap-server 10.0.0.102:9092 --topic jack --from-beginning
 
-7 消费者组案例
	(1)创建topic
[root@elk103 ~]# kafka-topics.sh --bootstrap-server 10.0.0.101:9092 --create  --partitions 3 --replication-factor 2 --topic group-test-topic
	
	(2)启动生产者
[root@elk102 ~]# kafka-console-producer.sh --bootstrap-server 10.0.0.103:9092 --topic group-test-topic	
	
	(3)启动消费者加入同一个消费者组
	#加入消费者组方式1:
[root@elk101 ~]# kafka-console-consumer.sh --bootstrap-server 10.0.0.102:9092 --topic group-test-topic --consumer-property group.id=test --from-beginning
    #加入消费者组方式2:
[root@elk103 ~]# kafka-console-consumer.sh --bootstrap-server 10.0.0.102:9092 --topic group-test-topic --consumer.config  /data/tools/kafka/kafka/config/consumer.properties --from-beginning
	
	(4)测试
在生产者端写入数据,观察消费者的输出即可。

	(5)观察消费者组的详细信息
[root@elk101 ~]# kafka-consumer-groups.sh --bootstrap-server 10.0.0.101:9092 --describe --group group-test-topic

3.5. kafka内存调优

kafka堆内存调优:
	(1)修改启动脚本
[root@elk101 ~]# vim `which kafka-server-start.sh ` +28
...
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
	...
	# 将原有的注释掉
	# export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
	export KAFKA_HEAP_OPTS="-server -Xmx256m -Xms256m -XX:PermSize=128m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70"
	
    export JMX_PORT="8888"
fi

	(2)同步集群启动脚本
[root@elk101 ~]# data-rsync.sh `which kafka-server-start.sh`
	
	(3)重启kafka集群
[root@elk101 ~]# cmd-cluster.sh "kafka-server-stop.sh"

[root@elk101 ~]# cmd-cluster.sh "kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties"
	
	(4)验证kafka集群的内存大小
[root@elk101 ~]# jmap -heap `jps | awk '/Kafka/{print $1}'`|grep MaxHeapSize
[root@elk102 ~]# jmap -heap `jps | awk '/Kafka/{print $1}'`|grep MaxHeapSize
[root@elk103 ~]# jmap -heap `jps | awk '/Kafka/{print $1}'`|grep MaxHeapSize

3.6. kafka-eagle管理kafka

3.6.1. 启动kafka的jmx端口

-1 启动kafka的JMX端口
	(1)所有节点停止kafka
[root@elk101 ~]# cmd-cluster.sh "kafka-server-stop.sh"

	(2)所有节点修改kafka的配置文件
vim `which kafka-server-start.sh`
...
 #  export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"  # 注视掉该行,并将下面2行复制即可
    export KAFKA_HEAP_OPTS="-server -Xmx256M -Xms256M -XX:PermSize=128m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70"
    export JMX_PORT="8888"

	(3)所有节点启动kafka服务
[root@elk101 ~]# cmd-cluster.sh "kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties"


cd /data/tools/kafka/
windows 下载https://codeload.github.com/smartloli/kafka-eagle-bin/tar.gz/refs/tags/v3.0.1
上传至101节点

3.6.2. 启动zookeeper的jmx端口

- 启动zookeeper的JMX端口
	(1)修改配置文件
[root@elk101 ~]# vim /data/tools/zookeeper/zk/conf/zoo.cfg  
# 添加下面的一行,启动zk的4字监控命令
4lw.commands.whitelist=*

	(2)修改zk的启动脚本
[root@elk101 ~]# vim /data/tools/zookeeper/zk/bin/zkServer.sh +77
...
# 如果修改上面的方式不生效,则需修改zkServer.sh脚本中77行之后ZOOMAIN的值即可。
ZOOMAIN="-Dzookeeper.4lw.commands.whitelist=* ${ZOOMAIN}"
 
	(3)修改环境变量开启JMX
[root@elk101 ~]# vim /data/tools/zookeeper/zk/bin/zkEnv.sh
...
JMXLOCALONLY=false
JMXPORT=21812
JMXSSL=false
JMXLOG4J=false
	
	(4)同步脚本
[root@elk101 ~]# data-rsync.sh /data/tools/zookeeper/zk/conf/zoo.cfg
[root@elk101 ~]# data-rsync.sh /data/tools/zookeeper/zk/bin/zkServer.sh 
[root@elk101 ~]# data-rsync.sh /data/tools/zookeeper/zk/bin/zkEnv.sh 

  (5)重启zookeeper
[root@elk101 ~]# zkManager.sh restart

  (6)windows jconsole验证是否能连接JMX端口

3.6.3. 安装mysql,并配置

yum -y install mariadb-server
#配置mariadb的配置文件
# 关闭MySQL的反向解析功能
echo "skip-name-resolve=1" >> /etc/my.cnf
skip-name-resolve=1

systemctl enable mariadb.service --now
#创建数据库,授权用户
CREATE DATABASE efka DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON efka.* TO 'efka_admin'@'%' IDENTIFIED  BY '123456';
SHOW GRANTS FOR efka_admin;
#测试用户
mysql -u efka_admin -p123456 -h 10.0.0.102

3.6.4. 安装kafka-eagle监控

#1 下载压缩包,上传,解压
windows下载https://codeload.github.com/smartloli/kafka-eagle-bin/tar.gz/refs/tags/v3.0.1
[root@elk101 ~]# cd /data/tools/kafka/
[root@elk101 ~]# tar -xvf kafka-eagle-bin-3.0.1.tar.gz
[root@elk101 ~]# cd kafka-eagle-bin-3.0.1
[root@elk101 ~]# tar -xvf efak-web-3.0.1-bin.tar.gz
[root@elk101 ~]# mv efak-web-3.0.1 /data/tools/kafka
[root@elk101 ~]# cp /data/tools/kafka/efak-web-3.0.1/conf/{system-config.properties,.back}
#2 修改配置
[root@elk101 ~]# cat >  /data/tools/kafka/efak-web-3.0.1/conf/system-config.properties <<EOF
efak.zk.cluster.alias=prod
prod.zk.list=10.0.0.101:2181,10.0.0.102:2181,10.0.0.103:2181
prod.efak.broker.size=20
kafka.zk.limit.size=32
efak.webui.port=8048
prod.efak.offset.storage=kafka
prod.efak.jmx.uri=service:jmx:rmi:///jndi/rmi://%s/jmxrmi
efak.metrics.charts=true
efak.metrics.retain=15
efak.sql.topic.records.max=5000
efak.sql.topic.preview.records.max=10
efak.topic.token=admin
efak.driver=com.mysql.cj.jdbc.Driver
efak.url=jdbc:mysql://10.0.0.101:3306/efka?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
efak.username=efka_admin
efak.password=123456
EOF

#3 配置环境变量
cat >> /etc/profile.d/kafka.sh <<'EOF'
export KE_HOME=/data/tools/kafka/efak-web-3.0.1/
export PATH=$PATH:$KE_HOME/bin
EOF
source /etc/profile.d/kafka.sh

#4 修改堆内存大小
[root@elk101 ~]# vim `which ke.sh `
...
export KE_JAVA_OPTS="-server -Xmx256m -Xms256m -XX:MaxGCPauseMillis=20 -XX:+UseG1GC -XX:MetaspaceSize=128m -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"
#5 启动服务
[root@elk101 ~]# ke.sh start
#6 登录界面
http://10.0.0.101:8048
Account:admin ,Password:123456

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在Windows上安装KafkaZookeeper的步骤: 1. 下载KafkaZookeeper 访问官网下载页面,选择与您的操作系统版本相对应的KafkaZookeeper版本,并下载压缩包。 2. 解压缩文件 将KafkaZookeeper的压缩包解压缩到您选择的目录。 3. 配置Zookeeper 进入Zookeeper的目录,复制conf文件夹下的zoo_sample.cfg文件并重命名为zoo.cfg,然后打开zoo.cfg文件,修改dataDir参数为您想要存储Zookeeper数据的目录。例如: ``` dataDir=C:/zookeeper-3.6.2/data ``` 4. 启动ZookeeperZookeeper目录下,打开命令提示符或PowerShell,输入以下命令来启动Zookeeper: ``` bin/zkServer.cmd ``` 5. 配置Kafka 进入Kafka的目录,打开config文件夹下的server.properties文件,修改以下参数: ``` brokers.id=0 listeners=PLAINTEXT://localhost:9092 zookeeper.connect=localhost:2181 ``` 6. 启动KafkaKafka目录下,打开命令提示符或PowerShell,输入以下命令来启动Kafka: ``` bin/windows/kafka-server-start.bat config/server.properties ``` 7. 测试KafkaKafka目录下,打开命令提示符或PowerShell,输入以下命令来创建一个名为“test”的主题: ``` bin/windows/kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test ``` 然后,输入以下命令来启动一个消费者,并订阅刚创建的主题: ``` bin/windows/kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning ``` 最后,打开另一个命令提示符或PowerShell窗口,输入以下命令来启动一个生产者,并向刚创建的主题发送消息: ``` bin/windows/kafka-console-producer.bat --broker-list localhost:9092 --topic test ``` 在生产者命令行中输入消息,然后切换到消费者命令行,您将看到刚刚发送的消息。 以上就是在Windows上安装KafkaZookeeper的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值