从新建linux虚拟机到搭建zookeeper+kafka详细版

目录

  • 虚拟linux系统
    • 一.安装虚拟机
    • 二.创建虚拟机
    • 三. 配置网络
    • 四. 搭建集群准备工作
  • 安装jdk
    • 1. 检查是否已安装openjdk
    • 2. 下载
    • 3. 上传安装包
    • 4. 解压
    • 5. 修改环境变量
    • 6. 检测是否配置成功
  • 搭建zookeeper集群
    • 1. 下载
    • 2. 上传
    • 3. 解压
    • 4. 配置zk1
    • 5. 启动集群
    • 6. 查看启动状态
      • Error contacting service. It is probably not running
  • 搭建kafka集群
    • 1. 下载
    • 2. 上传
    • 3. 解压
    • 4. 更改文件夹名称
    • 5. 新建logs文件夹
    • 6. 修改配置文件
    • 7. 将修改后的文件扩展到computer02和computer03
    • 8. 启动kafka
  • 使用kafka
    • 1. 创建topic
    • 2. 查看topic
    • 3. 查看topic详细信息
    • 4. 发送消息
    • 5. 接收消息
    • 6.删除topic

虚拟linux系统

一.安装虚拟机

  1. VMware软件下载地址:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
    按照步骤依次点击下一步即可,只有一点需要注意,请不要将VM安装默认C盘,后续本机电脑可能会卡顿,建议安装到除C盘外的任意一盘
  2. CentOS 7 下载映像文件地址:http://mirrors.aliyun.com/centos/7/isos/x86_64/
    选择CentOS-7-x86_64-DVD-2009.iso

二.创建虚拟机

  1. 创建新的虚拟机
    从新建linux虚拟机到搭建zookeeper+kafka详细版_第1张图片
  2. 选择典型配置(自定义有些麻烦,只是自己学习搭个系统没有必要)
    从新建linux虚拟机到搭建zookeeper+kafka详细版_第2张图片
    2.选择映射文件
    因为我这里是先建的虚拟机,后下载的centos,所以选择了稍后安装,如果你提前下载好了,可以直接选择安装的映射文件
    从新建linux虚拟机到搭建zookeeper+kafka详细版_第3张图片
  3. 选择创建虚拟机的操作系统
    从新建linux虚拟机到搭建zookeeper+kafka详细版_第4张图片
  4. 自定义虚拟机名字和位置
    从新建linux虚拟机到搭建zookeeper+kafka详细版_第5张图片
  5. 选择磁盘大小:40
    从新建linux虚拟机到搭建zookeeper+kafka详细版_第6张图片
  6. 点击完成
    从新建linux虚拟机到搭建zookeeper+kafka详细版_第7张图片
  7. 删除一些不用的插件,增加内存空间(声卡和打印器)
    从新建linux虚拟机到搭建zookeeper+kafka详细版_第8张图片
  8. 添加iso映射文件
    从新建linux虚拟机到搭建zookeeper+kafka详细版_第9张图片
  9. 启动虚拟机,等待安装完成
  10. 选择语言
    从新建linux虚拟机到搭建zookeeper+kafka详细版_第10张图片
  11. 安装位置
    从新建linux虚拟机到搭建zookeeper+kafka详细版_第11张图片
    从新建linux虚拟机到搭建zookeeper+kafka详细版_第12张图片
  12. 设置密码(自定义,但root或者123456这类过于简单的密码是不可以的)
    从新建linux虚拟机到搭建zookeeper+kafka详细版_第13张图片

三. 配置网络

由于配置网络步骤过于繁复,此篇文章不再赘述,有需要请移步另一篇文章~
虚拟机linux系统与本机网络互通

四. 搭建集群准备工作

  1. 由于kafka与zookeeper集群至少需要三台机器,所以需要搭建三台虚拟机,但无需将前几步配置三次,只需要配置一次之后复制一下就可以啦~
    注意:复制虚拟机的时候需要先将虚拟机关机再复制
    从新建linux虚拟机到搭建zookeeper+kafka详细版_第14张图片
    点击克隆之后一直点击下一步,直到选择克隆方法“创建完整克隆”
  2. computer2和computer3从computer1复制完之后,需要分别修改一下ifcfg-ens33中的IPADDR,分别将后缀改为11,12,13,为后续操作方便

安装jdk

1. 检查是否已安装openjdk

rpm -qa|grep jdk

如果已经安装openjdk,需要先卸载,再安装jdk,卸载命令如下

yum -y remove

2. 下载

下载地址:https://www.oracle.com/java/technologies/downloads/#java8
从新建linux虚拟机到搭建zookeeper+kafka详细版_第15张图片

3. 上传安装包

新建java目录

cd /usr/local
mkdir java

上传部分由于我是用终端软件上传,并没有用VM操作,所以没有什么参考价值,大家看自己习惯来就好啦~

4. 解压

tar -zxvf jdk-8u351-linux-i586.tar.gz

5. 修改环境变量

sudo vi /etc/profile

在文件下面增加以下内容,其中JAVA_HOME的路径需要替换成自己的路径

export JAVA_HOME=/usr/local/java/jdk1.8.0_351
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

修改之后需要执行以下命令让配置生效

source /etc/profile

6. 检测是否配置成功

java -version

如果失败,出现报错:
-bash: bin/java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
则可以运行以下命令,问题就可以消除

sudo yum install glibc.i686

搭建zookeeper集群

1. 下载

下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.5.5/
从新建linux虚拟机到搭建zookeeper+kafka详细版_第16张图片
注意:一定要注意后缀,千万不要下载错了,处处是坑!!!

2. 上传

新建zookeeper目录

cd /usr/local
mkdir zookeeper

上传过程同上节

3. 解压

tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz

4. 配置zk1

step1:更改文件夹名称(更好的区分三个服务器,不改也行,只是看着不舒服)

mv apache-zookeeper-3.5.5-bin zk1

step2:新建data和logs,用于存放数据和日志

cd /usr/local/zookeeper/zk1
mkdir data logs

step3:更改zoo_sample.cfg文件名称

cd /usr/local/zookeeper/zk1/conf
mv zoo_sample.cfg zoo.cfg

step4:修改zoo.cfg文件

vi zoo.cfg

修改以下内容:

①
dataDir=/usr/local/zookeeper/zk1/data
dataLogDir=/usr/local/zookeeper/zk1/logs	#如果这一行没有就在dataDir下面新增
②
clientPort=2181	#这是客户端的请求端口号,需要记住

在文件下面添加以下内容

server.1=192.168.227.11:2881:3881
server.2=192.168.227.12:2882:3882
server.3=192.168.227.13:2883:3883

注意:添加的ip分别为三台虚拟机的ip,后面的端口也是防火墙需要打开的端口,不然无法彻底实现集群内部的网络互通
具体如何开放端口,请看Linux常用语句->防火墙部分
所涉及到的端口:
computer1:2181/2881/3881
computer2:2183/2882/3882
computer3:2183/2883/3883
检测是否防火墙已成功开启端口

telnet 192.168.227.12 3882

step5:将修改好的zoo.cfg文件复制到computer2和computer3中,需要对应修改的部分如下
从新建linux虚拟机到搭建zookeeper+kafka详细版_第17张图片
zk1 -> zk2 zk3
2181 -> 2182 2183
step6:data 目录下创建一个 myid 文件,内容为1

cd /usr/local/zookeeper/zk1/data
echo 1 > myid

computer1和computer2也相同操作

5. 启动集群

cd /usr/local/zookeeper/zk1/bin
./zkServer.sh start

cd /usr/local/zookeeper/zk2/bin
./zkServer.sh start

cd /usr/local/zookeeper/zk3/bin
./zkServer.sh start

6. 查看启动状态

cd /usr/local/zookeeper/zk1/bin
./zkServer.sh status

cd /usr/local/zookeeper/zk2/bin
./zkServer.sh status

cd /usr/local/zookeeper/zk3/bin
./zkServer.sh status

Error contacting service. It is probably not running

ps:这里我出现了一个错误:
从新建linux虚拟机到搭建zookeeper+kafka详细版_第18张图片
解决思路:
需要telnet ip 端口,看是否通,首先确认本机和虚拟机之间能telnet通,然后确认虚拟机和虚拟机之间能telnet通,然后执行“./zkServer.sh restart”,即可解决

成功的状态:
从新建linux虚拟机到搭建zookeeper+kafka详细版_第19张图片

搭建kafka集群

1. 下载

下载网址:https://kafka.apache.org/downloads
从新建linux虚拟机到搭建zookeeper+kafka详细版_第20张图片

2. 上传

新建kafka目录

cd /usr/local
mkdir kafka

3. 解压

tar -zxvf kafka_2.12-3.3.1.tgz

4. 更改文件夹名称

mv kafka-3.3.1-src kafka

5. 新建logs文件夹

cd /usr/local/kafka/kafka
mkdir logs

6. 修改配置文件

vi /usr/local/kafka/kafka/config/server.properties

修改如下配置

①
broker.id=0  #集群里需要用不用的id号
②
listeners=PLAINTEXT://192.168.227.12:9092
③
log.dirs=/usr/local/kafka/kafka/logs
④
zookeeper.connection=192.168.227.11:2181,192.168.227.12:2182,192.168.227.13:2183
⑤
delete.topic.enable=true

7. 将修改后的文件扩展到computer02和computer03

8. 启动kafka

cd /usr/local/kafka/kafka/bin
./kafka-server-start.sh ../config/server.properties

从新建linux虚拟机到搭建zookeeper+kafka详细版_第21张图片
启动成功之后是一个阻塞进程,需要打开新的窗口操作

使用kafka

1. 创建topic

cd /usr/local/kafka/kafka/bin
./kafka-topics.sh --create --bootstrap-server 192.168.227.11:9091 --replication-factor 1 --partitions 1 --topic topic1

参数说明:
①192.168.227.11:9091 服务器ip:端口号
②–replication-factor 1 分区副本数为1
③–partitions 分区数为1
④–topic topic1 topic名称为topic1
在创建topic时指定的副本数不能大于可用的集群结点数
注:kafka3.0以后建立topic的时候不需要依赖zookeeper,所以不能用–zookeeper来建立topic,会报错

2. 查看topic

./kafka-topics.sh --bootstrap-server 192.168.227.11:9091 --list

在这里插入图片描述

3. 查看topic详细信息

./kafka-topics.sh --bootstrap-server 192.168.227.11:9091 --topic topic1 --describe

在这里插入图片描述
参数说明:
①第一行:topic的名字、分区数、每个分区的副本数
②第二行:分区信息表示。topic:名称topic1;Partition:0号分区;Replicas:分区的副本在broker.id为0的机器上, Leader:分区的leader在broker.id=0的实例上,Isr:投票选举的时候用的,哪个分区副本的数据和leader数据越接近,这个分区所在的broker.id就越靠前,当leader挂掉时,就取Isr中最靠前的一个broker来顶替leader

4. 发送消息

进入192.168.227.11服务器,建立topic生产几条消息

cd /usr/local/kafka/kafka/bin
./kafka-console-producer.sh --broker-list 192.168.227.11:9091 --topic topic1

在这里插入图片描述

5. 接收消息

进入192.168.227.22服务器,开启消费者控制台,监听topic1的消息

cd /usr/local/kafka/kafka/bin
./kafka-console-consumer.sh --bootstrap-server 192.168.227.11:9091  --topic topic1 --from-beginning

在这里插入图片描述

6.删除topic

cd /usr/local/kafka/kafka/bin
./kafka-topics.sh --bootstrap-server 192.168.227.11:9091 --delete --topic topic1 

你可能感兴趣的:(大数据,linux,java-zookeeper,zookeeper)