kafka学习笔记

  • 前言
  • 一、安装虚拟机(略过)
  • 二、安装源并升级系统软件(非必须)
  • 三、安装JDK
  • 1、下载JDK8
  • 2、安装JDK
  • 3、配置环境变量
  • 四、安装kafka
  • 1、下载kafka
  • 2、解压
  • 五、kafka生产和消费
  • 1、启动kafka
  • 2、创建topic
  • 3、删除Topic
  • 4、创建生产者
  • 5、消费消息
  • 六、外网访问kafka(springboot集成)
  • 1、配置
  • 2、防火墙
  • 3、虚拟机外程序成功连接并消费


前言

kafka是什么?(来自百度百科)
       Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。
       
kafka官方中文文档(https://kafka.apachecn.org/):
我们知道流处理平台有以下三种特性:

  1. 可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。
  2. 可以储存流式的记录,并且有较好的容错性。
  3. 可以在流式记录产生时就进行处理。

Kafka适合什么样的场景?它可以用于两大类别的应用:

  1. List item构造实时流数据管道,它可以在系统或应用之间可靠地获取数据。 (相当于message queue)
  2. 构建实时流式应用程序,对这些流数据进行转换或者影响。 (就是流处理,通过kafka stream topic和topic之间内部进行变化)

一、安装虚拟机(略过)

二、安装源并升级系统软件(非必须)

       RHEL以及他的衍生发行版如CentOS、Scientific Linux为了稳定,官方的rpm repository提供的rpm包往往是很滞后的,当然了,这样做这是无可厚非的,毕竟这是服务器版本,安全稳定是重点,官方的rpm repository提供的rpm包也不够丰富,很多时候需要自己编译那太辛苦了,而EPEL恰恰可以解决这两方面的问题。
       EPEL:(Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux.
安装EPEL并更新软件,EPEL会自动配置源。

yum install epel-release -y
yum update -y

springboot 批量拉取kafka怎么实现_kafka


springboot 批量拉取kafka怎么实现_centos_02

三、安装JDK

1、下载JDK8

       在Oracle官网下载jdk8的Linux版安装包,地址是jdk8下载地址

springboot 批量拉取kafka怎么实现_kafka_03

2、安装JDK

       将下载号的JDK包传到虚拟机,在安装包目录下执行yum -y localinstall jdk-8u271-linux-x64.rpm(我这里已经安装好了)

springboot 批量拉取kafka怎么实现_linux_04


       安装后可以使用java -version检查jdk是否安装成功。

3、配置环境变量

echo "JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")" | sudo tee -a /etc/profile

springboot 批量拉取kafka怎么实现_java_05


注意:配置完环境变量后需要让配置生效source /etc/profile 检查一下是否配置成功

echo $JAVA_HOME

springboot 批量拉取kafka怎么实现_linux_06

四、安装kafka

1、下载kafka

       下载地址kafka清华源。下载完成后上传到虚拟机。或者可以直接使用wget命令下载kafka,如果没有wget需要先安装yum -y install wget,安装完成后使用wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.6.0/kafka_2.13-2.6.0.tgz下载。

springboot 批量拉取kafka怎么实现_jdk_07


springboot 批量拉取kafka怎么实现_linux_08

2、解压

tar -xvf kafka_2.13-2.6.0.tgz

springboot 批量拉取kafka怎么实现_centos_09

五、kafka生产和消费

1、启动kafka

       首先启动zookeeper./ ../config/zookeeper.properties

springboot 批量拉取kafka怎么实现_kafka_10


       然后启动kafka./ ../config/server.properties

springboot 批量拉取kafka怎么实现_linux_11

2、创建topic

kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test1

springboot 批量拉取kafka怎么实现_linux_12

3、删除Topic

./kafka-topics.sh --delete --zookeeper localhost:2181 --topic test1

4、创建生产者

springboot 批量拉取kafka怎么实现_centos_13

5、消费消息

./kafka-console-consumer.sh --bootstrap-server 192.168.32.128:9092 --from-beginning --topic test1

springboot 批量拉取kafka怎么实现_jdk_14


       其他命令可自行百度

六、外网访问kafka(springboot集成)

1、配置

找到kafka配置文件中的listeners和advertised.listeners
vim ../config/server.porperties 如果没有vim可以使用vi或者安装vimyum -y install vim

//监听地址
listeners=PLAINTEXT://192.168.32.128:9092
//如果需要外网访问需要配置这个
//解决springboot集成kafka报错:(localhost/127.0.0.1:9092) could not be established. Broker may not be availa
advertised.listeners=PLAINTEXT://192.168.32.128:9092

也可以将其设置成英文名,如node1、node2、node3等,但同时必须在/etc/hosts中配置。

springboot 批量拉取kafka怎么实现_kafka_15

2、防火墙

       如果还是报错,可能是防火墙开着,可以直接将防火墙关闭,或者设置防火墙通过9092端口。

1. 查询某个端口是否开启:firewall-cmd --query-port=9092/tcp
 2. 开启某个端口:firewall-cmd --permanent --add-port=9092/tcp
 3. 关闭某个端口:firewall-cmd --permanent --remove-port=9092/tcp
 4. 开启防火墙:service firewalld start
 5. 关闭防火墙:service firewalld stop
 6. 重启防火墙:service firewalld restart
 7. 查看防火墙状态:firewall-cmd --state

3、虚拟机外程序成功连接并消费

springboot 批量拉取kafka怎么实现_centos_16