02.Kafka部署安装

1 Linux 安装 Kafka

1.1 安装前的环境准备

        由于 Kafka 是用 Scala 语言开发的,运行在 JVM 上,因此在安装Kafka之前需要先安装JDK。

yum install java-1.8.0-openjdk* -y

        kafka 依赖 zookeeper,所以需要先安装 zookeeper。

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.8/apache-zookeeper-3.5.8-bin.tar.gz

        解压归档包。

tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz cd apache-zookeeper-3.5.8-bin

        复制配置文件。

cd apache-zookeeper-3.5.8-bin
cp conf/zoo_sample.cfg conf/zoo.cfg

        启动 zookeeper Server。

cd apache-zookeeper-3.5.8-bin
bin/zkServer.sh start

        启动客户端 zookeeper  Client。

cd apache-zookeeper-3.5.8-bin
bin/zkCli.sh

        查看zk的根目录相关节点

ls / 

1.2 Kafka 安装

1.2.1 下载安装包

        下载2.4.1 release版本,并解压:

wget https://archive.apache.org/dist/kafka/2.4.1/kafka_2.11-2.4.1.tgz

        2.11是scala的版本,2.4.1是kafka的版本。

        解压归档包。

tar -xzf kafka_2.11-2.4.1.tgz
1.2.2 修改配置
cd kafka_2.11-2.4.1
#修改配置文件
vim config/server.properties

        修改如下配置内容。

#broker.id属性在kafka集群中必须要是唯一
broker.id=0
#kafka部署的机器ip和提供服务的端口号
listeners=PLAINTEXT:192.168.31.162:9092  
#kafka的消息存储文件
log.dir=/usr/local/data/kafka-logs
#kafka连接zookeeper的地址
zookeeper.connect=192.168.31.162:2181
1.2.2.1 server.properties核心配置

Property

Default

Description

broker.id

0

每个broker都可以用一个唯一的非负整数id进行标识;这个id可以作为broker的“名字”,你可以选择任意你喜欢的数字作为id,只要id是唯一的即可。

log.dirs

/tmp/kafka-logs

kafka存放数据的路径。这个路径并不是唯一的,可以是多个,路径之间只需要使用逗号分隔即可;每当创建新partition时,都会选择在包含最少partitions的路径下进行。

listeners

PLAINTEXT://192.168.31.192:9092

server接受客户端连接的端口,ip配置kafka本机ip即可。

zookeeper.connect

localhost:2181

zooKeeper连接字符串的格式为:hostname:port,此处hostname和port分别是ZooKeeper集群中某个节点的host和port;zookeeper如果是集群,连接方式为 hostname1:port1, hostname2:port2, hostname3:port3。

log.retention.hours

168

每个日志文件删除之前保存的时间。默认数据保存时间对所有topic都一样。

num.partitions

1

创建topic的默认分区数

default.replication.factor

1

自动创建topic的默认副本数量,建议设置为大于等于2

min.insync.replicas

1

当producer设置acks为-1时,min.insync.replicas指定replicas的最小数目(必须确认每一个repica的写数据都是成功的),如果这个数目没有达到,producer发送消息会产生异常

delete.topic.enable

false

是否允许删除主题

1.2.3 启动 Kafka 服务

        现在来启动kafka服务:启动脚本语法

kafka-server-start.sh [-daemon] server.properties

        可以看到,server.properties 的配置路径是一个强制的参数,-daemon 表示以后台进程运行,否则ssh客户端退出后,就会停止服务。(注意,在启动kafka时会使用linux主机名关联的ip地址,所以需要把主机名和linux的ip映射配置到本地host里,用vim /etc/hosts)。

        启动kafka。

cd kafka_2.11-2.4.1
#后台启动,不会打印日志到控制台
bin/kafka-server-start.sh -daemon config/server.properties
#会在控制台打印日志
bin/kafka-server-start.sh config/server.properties &

        进入zookeeper目录通过zookeeper客户端查看下zookeeper的目录树。

bin/zkCli.sh 
#查看zk的根目录kafka相关节点 
ls / 
#查看kafka节点
ls /brokers/ids 
#停止kafka 
bin/kafka-server-stop.sh

2 Docker 安装 Kafka 

2.1 安装运行 zookeeper

        搜索 zookeeper 镜像。

docker search zookeeper

        拉取镜像。

docker pull zookeeper

        启动 zookeeper 容器。

docker run -d --name zookeeper -p 2181:2181 zookeeper

        查看容器。

docker ps

        可以看到,zookeeper 容器已经启动。

2.2 安装运行 Kafka

         搜索 kafka镜像。

docker search kafka

        拉取镜像。

docker pull bitnami/kafka

         启动 Kafka 容器。 

docker run -d --name kafka -p 9092:9092 --link zookeeper:zookeeper \
-v /usr/kafka/config/server.properties:/config/server.properties \
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
--env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 bitnami/kafka 

         查看容器。

        进入 zookeeepr 容器,查看节点信息。

docker exec -it 80bf /bin/bash

        启动客户端。 

bin/zkCli.sh

        查看节点状态。 

3 Kafka 集群环境

3.1 Linux Kafak集群

        对于 kafka 来说,一个单独的 broker 意味着 kafka 集群中只有一个节点。要想增加 kafka 集群中的节点数量,只需要多启动几个 broker 实例即可。为了有更好的理解,现在我们在一台机器上同时启动三个broker实例。

        首先,建立好其他 2 个broker的配置文件:

cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties

        配置文件的需要修改的内容分别如下:

        config/server-1.properties:

#broker.id属性在kafka集群中必须要是唯一
broker.id=1
#kafka部署的机器ip和提供服务的端口号
listeners=PLAINTEXT://192.168.31.162:9093   
log.dir=/usr/local/data/kafka-logs-1
#kafka连接zookeeper的地址,要把多个kafka实例组成集群,对应连接的zookeeper必须相同
zookeeper.connect=192.168.31.162:2181

        config/server-2.properties:

#broker.id属性在kafka集群中必须要是唯一
broker.id=2
#kafka部署的机器ip和提供服务的端口号
listeners=PLAINTEXT://192.168.31.162:9093   
log.dir=/usr/local/data/kafka-logs-1
#kafka连接zookeeper的地址,要把多个kafka实例组成集群,对应连接的zookeeper必须相同
zookeeper.connect=192.168.31.162:2181

        目前我们已经有一个zookeeper实例和一个broker实例在运行了,现在只需要在启动2个broker实例即可:

bin/kafka-server-start.sh -daemon config/server-1.properties
bin/kafka-server-start.sh -daemon config/server-2.properties

        查看zookeeper确认集群节点是否都注册成功:

3.2 Docker Kafka集群

        Docker 搭建 Kafka 集群,我们只需启动三个容器。

docker run -d --name kafka0 -p 9092:9092 --link zookeeper:zookeeper \
-v /usr/kafka/config/server.properties:/config/server.properties \
-e KAFKA_BROKER_ID=0 \
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.31.193:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
--env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
-t bitnami/kafka

docker run -d --name kafka1 -p 9093:9093 --link zookeeper:zookeeper \
-v /usr/kafka/config/server.properties:/config/server.properties \
-e KAFKA_BROKER_ID=1 \
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.31.193:9093 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 \
--env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
-t bitnami/kafka
docker run -d --name kafka1 -p 9094:9094 --link zookeeper:zookeeper \
-v /usr/kafka/config/server.properties:/config/server.properties \
-e KAFKA_BROKER_ID=2 \
--env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.31.193:9094 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9094 \
--env KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
-t bitnami/kafka

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/581875.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

5G图标显示分析

1、问题现象 MTK平台项目中出现一个5G图标显示问题,注册5G时,拨打电话,对比机图标显示回落到4G,测试机一直显示5G。 2、原因分析 2.1、NSA显示规则 根据GSMA协议,NSA架构下5G图标显示有如下4种. 2.2、Android中显示5G…

基于Springboot的甘肃旅游服务平台(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的甘肃旅游服务平台(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…

idea的插件,反编译整个jar包

idea的插件,反编译整个jar包 1.安装插件1.1找到插件1.2 搜索插件 2.反编译整个jar包2.1 复制jar包到工件目录下:2.2 选中jar包,点出右键 3.不用插件,手动查看某一个java类3.1 选中jar包,点出右键 1.安装插件 1.1找到插…

日本宇宙航空研究“Int-Ball2”自由飞行相机机器人采用的Epson IMU

IMU有助于飞行的稳定控制和电池充电的自动对接- 精工爱普生公司(TSE:6724,“Epson”)很高兴地宣布,日本宇宙航空研究开发机构(JAXA)选择了爱普生M-G370系列的惯性测量单元(IMU)&…

Spring Security介绍(三)过滤器(2)自定义

除了使用security自带的过滤器链,我们还可以自定义过滤器拦截器。 下面看下自定义的和security自带的执行顺序。 一、总结 1、自定义过滤器: 一般自定义fliter都是: import lombok.extern.slf4j.Slf4j; import org.springframework.ster…

0418EmpTomCat项目 初次使用ajax实现局部动态离职

0418EmpTomCat项目包-CSDN博客 数据库字段: 员工部门表 分页查询; 多条件查询; 添加新员工; ajax点击离职操作效果:

R-Tree: 原理及实现代码

文章目录 R-Tree: 原理及实现代码1. R-Tree 原理1.1 R-Tree 概述1.2 R-Tree 结构1.3 R-Tree 插入与查询 2. R-Tree 实现代码示例(Python)结语 R-Tree: 原理及实现代码 R-Tree 是一种用于管理多维空间数据的数据结构,常用于数据库系统和地理信…

使用FPGA发送一个经过曼彻斯特编码的伪随机序列

介绍 这几天突然就不知道要使用FPGA实现什么样的功能了,然后就跑去学习数电了,学的也是晕晕的。正好之前写了一个使用FPGA发送伪随机序列的代码,然后因为需要使用曼彻斯特编码,所以又加了一个模块吧,使得最后输出的波形经过曼彻斯特编码。 曼彻斯特编码 首先,曼彻斯特编…

Spark-机器学习(7)分类学习之决策树

在之前的文章中,我们学习了分类学习之支持向量机,并带来简单案例,学习用法。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。…

C语言——栈的实现

栈(Stack)是一种基于先进后出(LIFO)原则的数据结构,类似于我们平常堆放书籍或者盘子的方式。 栈通常是从高地址向低地址增长的,也就是说,栈顶位于较高的内存地址,而栈底位于较低的内…

初始计算机网络

TCP/IP TCP/IP模型 TCP/IP网络模型:对于不同设备之间的通信,就需要网络通信,而设备是多样性的,所以要兼容多种多样的设备,就协商出了一套通用的网络协议。 TCP/IP分层 这个网络协议是分层的,每一层都有…

PyVista 3D数据可视化 Python 库 简介

Pyvista是一个用于科学可视化和分析的Python库 ;我认为它适合做一些网格数据的处理; 它封装了VTK(Visualization Toolkit)之上,提供了一些高级接口, 3D数据可视化变得更加简单和易用。 1.安装 pyvista&…

【Qt】控件的核心属性

1 🍑控件概述🍑 Widget 是 Qt 中的核⼼概念. 英⽂原义是 “⼩部件”, 我们此处也把它翻译为 “控件” .控件是构成⼀个图形化界⾯的基本要素。 Qt 作为⼀个成熟的 GUI 开发框架, 内置了⼤量的常⽤控件。这⼀点在 Qt Designer 中就可以看到端倪&#xf…

装饰器模式、代理模式、适配器模式对比

装饰器模式、代理模式和适配器模式都是结构型设计模式,它们的主要目标都是将将类或对象按某种布局组成更大的结构,使得程序结构更加清晰。这里将装饰器模式、代理模式和适配器模式进行比较,主要是因为三个设计模式的类图结构相似度较高、且功…

10分钟了解数据质量管理-奥斯汀格里芬 Apache Griffin

在不重视数据质量的大数据发展时期,Griffin并不能引起重视,但是随着数据治理在很多企业的全面开展与落地,数据质量的问题开始引起重视。 1.Griffin简介 Griffin是一个开源的大数据数据质量解决方案,由eBay开源,它支持…

httpClient提交报文中文乱码

httpClient提交中文乱码,ContentType类型application/json 指定提交参数的编码即可 StringEntity se new StringEntity(paramBody.toJSONString(),"UTF-8");se.setContentType("application/json");context.httpPost.setHeader("Cookie&…

【PPT设计】颜色对比、渐变填充、简化框线、放大镜效果、渐变形状配图、线条的使用

目录 图表颜色对比、渐变填充、简化框线放大镜效果渐变形状配图 线条的使用区分标题与说明信息区分标题与正文,区分不同含义的内容**聚焦****引导****注解****装饰** 图表 颜色对比、渐变填充、简化框线 小米汽车正式亮相!你们都在讨论价格,我全程只关…

【实时数仓架构】方法论(未完)

笔者不是专业的实时数仓架构,这是笔者从其他人经验和网上资料整理而来,仅供参考。写此文章意义,加深对实时数仓理解。 实时数仓背景和场景 一、实时数仓架构技术演进 1.1、四种架构演进 1)离线大数据架构 一种批处理离线数据分…

State.initState() must be a void method without an `async` keyword错误解析

文章目录 报错问题报错的代码 错误原因解决方法解析 另外的方法 报错问题 State.initState() must be a void method without an async keyword如下图: 报错的代码 报错的代码如下: overridevoid initState() async{super.initState();await getConf…

springboot权限验证学习-上

创建maven项目 创建父工程 这类项目和原来项目的区别在于&#xff0c;打包方式是pom 由于pom项目一般都是用来做父项目的&#xff0c;所以该项目的src文件夹可以删除掉。 创建子工程 子工程pom.xml 父工程pom.xml 添加依赖 父工程导入依赖包 <!--导入springboot 父工程…
最新文章