kafka开发环境搭建

news2024/11/30 8:36:35

1 kafka开发环境

1.1 安装Java环境

1.1.1 下载linux下的安装包

登陆网址https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

下载完成后,Linux默认下载位置在当前目录下的Download或下载文件夹下,通过命令cd ~/Downloads或cd ~/下载即可查看到对应的文件。

1.1.2 解压安装包jdk-8u202-linux-x64.tar.gz

tar -zxvf jdk-8u291-linux-x64.tar.gz

解压后的文件夹为jdk1.8.0_291 进入文件夹和查看文件

cd jdk1.8.0_291

1.1.3 将解压后的文件移到/usr/lib目录下

在/usr/bin目录下新建jdk目录

sudo mkdir /usr/lib/jdk

将解压的jdk文件移动到新建的/usr/lib/jdk目录下来

sudo mv jdk1.8.0_291 /usr/lib/jdk/

1.1.4 配置java环境变量

这里是将环境变量配置在etc/profile,即为所有用户配置JDK环境。 使用命令打开/etc/profile文件

sudo vim /etc/profile

在末尾添加以下几行文字:

#set java env
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_291
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

1.1.5 执行命令使修改立即生效

source /etc/profile

1.1.6 测试安装是否成功

在终端输入,出现版本号说明安装成功。

java -version

1.2 Kafka的安装部署

1.2.1 下载kafka

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

1.2.2 安装kafka

我们下载的kafka是已经编译好的程序,只需要解压即可得到执行程序。

tar -zxvf kafka_2.11-2.0.0.tgz

进入kafka目录,以及查看对应的文件和目录

cd kafka_2.11-2.0.0

ls

 bin:为执行程序         config:为配置文件         libs:为库文件

1.2.3 配置和启动zookeeper

下载的kafka程序里自带了zookeeper,kafka自带的Zookeeper程序脚本与配置文件名与原生 Zookeeper稍有不同。 kafka自带的Zookeeper程序使用bin/zookeeper-server-start.sh,以及bin/zookeeper-server-stop.sh 来启动和停止Zookeeper。 kafka依赖于zookeeper来做master选举一起其他数据的维护。

启动zookeeper:zookeeper-server-start.sh

停止zookeeper:zookeeper-server-stop.sh

所以我们可以通过下面的脚本来启动zk服务,当然,也可以自己独立搭建zk的集群来实现。这里我们直接使用kafka自带的zookeeper。

启动zookeeper

前台运行:sh zookeeper-server-start.sh ../config/zookeeper.properties

后台运行:sh zookeeper-server-start.sh -daemon ../config/zookeeper.properties

默认端口为:2181,可以通过命令lsof -i:2181 查看zookeeper是否启动成功。

 1.2.4 启动和停止kafka

修改server.properties(在config目录), 增加zookeeper的配置,这里只是本地的配置,如果是另一台机器运行zookeeper,要配置对应的ip地址。

zookeeper.connect=localhost:2181

启动kafka

sh kafka-server-start.sh -daemon ../config/server.properties

默认端口为:9092,可以通过命令lsof -i:9092查看kafka是否启动成功。

停止kafka

sh kafka-server-stop.sh -daemon ../config/server.properties

1.3 kafka的基本操作

1.3.1 创建topic

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

--topic test

成功则显示:

Created topic "test".

参数说明:

--create 是创建主题的的动作指令

--zookeeper 指定kafka所连接的zookeeper服务地址

--replicator-factor 指定了副本因子(即副本数量)

--partitions 指定分区个数

--topic 指定所要创建主题的名称,比如test

replication-factor 表示该topic需要在不同的broker中保存几份,这里设置成1,表示在两个broker中保 存两份Partitions分区数。

1.3.2 查看topic

sh kafka-topics.sh --list --zookeeper localhost:2181

1.3.3 查看topic属性

 sh kafka-topics.sh --describe --zookeeper localhost:2181 --topic test

1.3.4 消费消息

sh kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test --from-beginning

1.3.5 发送消息

再开启一个终端窗口:

sh kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test

输入:

消费端显示:

 1.4 kafka-topics.sh 使用方式

围绕创建、修改、删除以及查看等功能。

1.4.1 查看帮助--help

/bin目录下的每一个脚本工具,都有着众多的参数选项,不可能所有命令都记得住,这些脚本都可以使 用 --help 参数来打印列出其所需的参数信息。

sh kafka-topics.sh --help

Command must include exactly one action: --list, --describe, --create, --alter
or --delete
Option Description
------ -----------
--alter Alter the number of partitions,
replica assignment, and/or
configuration for the topic.
--config <String: name=value> A topic configuration override for the
topic being created or altered.The
following is a list of valid
configurations:
cleanup.policy
compression.type
delete.retention.ms
file.delete.delay.ms
flush.messages
flush.ms
follower.replication.throttled.
replicas
....省略

下面我们挑选其中使用最为频繁且重要的参数进行说明,以及其中一些坑进行标明。

1.4.2 副本数量不能大于broker的数量

kafka 创建主题的时候其副本数量不能大于broker的数量,否则创建主题 topic 失败.

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

详细报错信息见下图

 注意:副本数量和分区数量的区别。

1.4.3 创建主题--create

创建主题时候,有3个参数是必填的,分别是 --partitions(分区数量)、 --topic(主题名) 、 -- replication-factor(复制系数), 同时还需使用 --create 参数表明本次操作是想要创建一个主题操作。

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

--topic test1

返回: Created topic "test1".   此时主题 test1 就已经创建了。另外在创建主题的时候,还可以附加以下两个选项:–if-not-exists 和 -- if-exists . 第一个参数表明仅当该主题不存在时候,创建; 第二个参数表明当修改或删除这个主题时候, 仅在该主题存在的时候去执行操作。

1.4.4 查看broker上所有的主题 --list

sh kafka-topics.sh --list --zookeeper localhost:2181

1.4.5 查看指定主题 topic 的详细信息 --describe

该参数会将该主题的所有信息一一列出打印出来,比如分区数量、副本系数、领导者等待。

sh kafka-topics.sh --describe --zookeeper localhost:2181 --topic test1

 1.4.6 修改主题信息 --alter(增加主题分区数量)

 sh kafka-topics.sh --zookeeper localhost:2181 --topic test1 --alter --partitions 2

可以看到已经成功的将主题的分区数量从1修改为了2。如果去修改一个不存在的topic信息会怎么样?比如修改主题 test2,当前这主题是不存在的。

sh kafka-topics.sh --zookeeper localhost:2181 --topic test2 --alter --partitions 2

注意:不要使用 --alter 去尝试减少分区的数量,如果非要减少分区的数量,只能删除整个主题 topic, 然后重新创建。

1.4.7 删除主题 topic --delete

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

日志信息提示,主题 test1已经被标记删除状态,但是若delete.topic.enable 没有设置为 true , 则将不 会有任何作用。

启动生产者:sh kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test1

启动消费者:sh kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test1--from-beginning

发现此时还是可以发送消息和接收消息。

如果要支持能够删除主题的操作,则需要在 /bin 的同级目录 /config目录下的文件server.properties 中,修改配置delete.topic.enable=true(如果置为false,则kafka broker 是不允许删除主题的)。

 需要server.properties中设置delete.topic.enable=true否则只是标记删除或者直接重启。 重启kafka

停止:sh kafka-server-stop.sh -daemon ../config/server.properties

启动:sh kafka-server-start.sh -daemon ../config/server.properties

再次删除

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

轻松学习string类常用接口(附模拟实现)

目录 String的常用接口说明(最常用的) string类对象的容量操作 string类对象的访问及遍历操作 string类对象的修改操作 string类非成员函数 深浅拷贝 简介&#xff1a;Cstring 是C中的字符串。 字符串对象是一种特殊类型的容器&#xff0c;专门设计来操作的字符序列。 不像…

MySQL 全文检索的实现

微信搜「古时的风筝」&#xff0c;还有更多技术干货 这有朋友聊到他们的系统中要接入全文检索&#xff0c;这让我想起了很久以前为一个很古老的项目添加搜索功能的事儿。 一提到全文检索&#xff0c;我们首先就会想到搜索引擎。也就是用一个词、一段文本搜索出匹配的内容。一般…

Vue3中的组合Api与响应函数

文章目录1. 组合Api介绍setup2. 响应函数2.1 ref2.2 reactive2.3 toRef和toRefs2.4 readonly2.5 customRef1. 组合Api介绍 组合Api其实时用于解决功能、数据和业务逻辑分散的问题&#xff0c;使项目更益于模块化开发以及后期维护。 vue2.x — optionsApi 配置式Api — react类…

STM32 定时器定时计算

STM32 定时器定时计算STM32 定时器频率例子公式referenceSTM32 定时器频率 定时时间 定时器频率 / 倍频 /装载周期 htim1.Init.Prescaler 72-1;htim1.Init.CounterMode TIM_COUNTERMODE_UP;htim1.Init.Period 1*1000*1000;tim 72x10^6 / (72-1)/ 110001000 1us 根据定时…

RAC/RAC One Node 修改私网/心跳网卡名

cDAS RAC/RAC One Node一般采用ib ip作为私网/心跳ip&#xff0c;有些现场可能会有修改心跳/私网网卡的需求&#xff0c;一般修改网卡也会伴随修改心跳/私网ip的需求。若心跳/私网有高可用&#xff0c;可以一个个修改。 场景1&#xff1a;心跳网卡有高可用 原心跳网卡名 原心…

Vue中 引入使用 localforage 改进本地离线存储(突破5M限制)

1. 简介 说到本地存储数据&#xff0c;首先想到的是 localStorage&#xff0c;应该很多小伙伴都用过&#xff0c;使用很简单。然而&#xff0c;localStorage 却有下面一些缺点&#xff1a; 存储容量限制&#xff0c;大部分浏览器应该最多5M。我就遇到过localStorage存储字符然…

H264码流中SPS PPS详解

1 SPS和PPS从何处而来&#xff1f; 2 SPS和PPS中的每个参数起什么作用&#xff1f; 3 如何解析SDP中包含的H.264的SPS和PPS串&#xff1f; 1 客户端抓包 在做客户端视频解码时&#xff0c;一般都会使用Wireshark抓包工具对接收的H264码流进行分析&#xff0c;如下所示&…

Transform+ASM插桩系列(3)——Transform+ASM的实战

回顾 在上一章讲到创建完buildSrc之后&#xff0c;实现了项目的plugin之后&#xff0c;就可以在plugin注册我们的Transform。这期文章将正式进入重头戏&#xff0c;今天的学习内容有【认识Transform】、【认识AMS】、【插桩实战】 前言 插桩的技巧中&#xff0c;我们要知道 …

Python实现LDA和KNN人脸识别模型(LinearDiscriminantAnalysis和KNeighborsClassifier算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 人脸识别&#xff0c;是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含…

【2021-TITS】Deep Learning in Lane Marking Detection: A Survey

概述 回顾了针对路面标线的深度学习算法&#xff0c;主要分析了他们的网络架构及优化目标&#xff1b;此外还总结了现有车道标线相关的数据集&#xff0c;评价基准及常见的数据处理技术 PaperCode 总结 创新点&#xff1a; 1.总结深度学习网络架构、优化目标2.总结了相关现有…

使用Portman、Postman和Newman自动化API测试

几个月前我换了工作和公司&#xff0c;很喜欢这样的变化&#xff0c;但多少会有些不知所措。现在事情已经安排好了一些&#xff0c;我可以回来做一些我喜欢的事情。 现在正在工作的团队是一个新团队&#xff0c;我们正在努力弄清楚我们的流程&#xff0c;并试图尽可能地实现自…

编译原理实验一:源程序的预处理及词法分析程序的设计与实现(python)

实验目的 设计并实现一个包含预处理功能的词法分析程序&#xff0c;加深对编译中词法分析过程的理解。 实验要求 1、实现预处理功能 源程序中可能包含有对程序执行无意义的符号&#xff0c;要求将其剔除。 首先编制一个源程序的输入过程&#xff0c;从键盘、文件或文本框输…

[附源码]java毕业设计校园拓展活动管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

论文阅读之Dynamic Routing Between Capsules(2017)

文章目录前言capsule network参考前言 capsule network 可以简单理解为将神经网络的标量计算&#xff0c;赋予了方向&#xff0c;变换成了向量进行计算。 标量只有大小之分。 向量不仅有大小&#xff0c;还有方向之分。 应该可以略微感受到这种思路的魔力了。 capsule 主要是…

IB历史备考,如何拿高分?

邻近期末考&#xff0c;大伙儿是不是十分焦虑不安呢&#xff1f;大家的老师经常发觉学生们本来知识要点都把握得挺不错的&#xff0c;但每到考試便是拿不上满意的考试成绩&#xff0c;让人十分郁闷&#xff01;因此应对那样的难点&#xff0c;大家的IB历史时间评委为大伙儿筹备…

行业分析| 智慧消防对讲

消防工程关系国计民生&#xff0c;关系到每个公民的人身和财产安全&#xff0c;在每个场所的建设中&#xff0c;消防工程建设是必不可少的一个板块&#xff0c;包括消防应急通道建设和应急设备建设两个方面。其中消防系统设备建设主要分为九大系统的建设&#xff1a;消防水系统…

VectorCAST测试工具环境搭建

**目的&#xff1a;**本文提供VectorCAST使用的实际操作方法&#xff0c;以便项目可以很好的使用VectorCAST工具。 适用范围&#xff1a;VectorCAST是一个专门针对嵌入式软件的C/C代码进行单元测试的工具&#xff0c;它可以自动生成测试用例、评估测试结果并生成测试报告。 **工…

十年来高薪专业变成了它——信息安全

“什么专业好就业&#xff1f;” “什么专业以后赚的钱多&#xff1f;” 确实&#xff0c;专业对应的行业薪资各有不同&#xff0c;选对了专业赢在起跑线也不是没有可能&#xff01; 麦可思机构分析了近十年大学生就业数据情况&#xff0c;发现从2011年到2020年的大学毕业生高…

Windows简单安装redis

1.去git下载 或者去搜点资源&#xff0c;windows下载是压缩包&#xff0c;找个目录解压进去。 Github下载地址&#xff1a;https://github.com/MicrosoftArchive/redis/releases 2.打开cmd 尝试启动 比如我放在d盘soft下面&#xff0c;windows你直接打开cmd&#xff0c;输入d…

Baklib知识分享|文档生命周期:确保您的文档产出效率

一个多世纪以来&#xff0c;文档一直是任何产品或服务的支柱。它是用户在使用您的产品、应用程序、网站或其他软件服务时所引用的内容。但在现代&#xff0c;随着大多数帮助或支持文档从传统形式转移到数字形式&#xff0c;对效率的需求比以往任何时候都更加明显。此外&#xf…