基于飞腾平台的Kafka移植与安装

news2024/9/23 15:32:50
   【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。 点击这里开始你的技术升级之旅吧

image.png

本文分享至飞腾开发者平台《飞腾平台Kafka_v3.0.0移植安装手册》

1 介绍

  Kafka是一款开源的、轻量级的、分布式的、可分区和具有复制备份的(Replicated)、基于ZooKeeper协调管理的分布式流平台的功能强大的消息系统。与传统的消息系统相比,Kafka能够很好地处理活跃的流数据,使得数据在各个子系统中高性能、低延迟地不停流转,kafka由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。主要处理大数据中的实时流式数据处理场景。

2 环境要求

2.1 硬件要求

  硬件要求如下表所示。

项目说明
CPUFT-2000+/64服务器
网络无要求
存储无要求
内存无要求

2.2 操作系统要求

  操作系统要求如下表所示。

项目说明
CentOS8
Kernel4.18.0-193.el8.aarch64

2.3 软件环境要求

  软件环境要求如下表所示。

项目说明
JDK1.8.0_281

3 安装步骤

3.1 下载Kafka压缩包

  1. 前往官网下载Kafka安装包:https://kafka.apache.org/downloads

  注*:在官网下载Kafka安装包时,要选择编译好的,可以直接使用的压缩包,如下图所示:

image.png

  2. 解压压缩包

tar -xzvf kafka_2.12-3.0.0.tgz

3.2 启动Zookeeper

  Kafka 0.5.x版本以上就已经自带ZooKeper,也可以单独使用Zookeeper安装文件建立集群。本文使用的是Kafka自带的Zookeeper。

>>bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

  -daemon参数的作用是在后台启动Zookeeper,并将输出的信息保存在执行目录的logs/zookeeper.out文件中。(若Zookeeper启动未成功,执行文件中的报错信息会非常重要)

3.2.1 Zookeeper启动时可能会出现的报错信息

  1)failed; error=’Not enough space’ (errno=12)

  出现此错误的原因是服务器内存过小,可以通过修改bin/zookeeper-server-start.sh中的参数,来减少内存的使用,将配置文件中的-Xmx512M -Xms512M改小。如下图所示

image.png

  2)Error: Unexpected exception exiting abnormally. java,net.BindException: Adress already in use

  出现此错误的原因是Zookeeper端口2181被占用(2181一般为默认端口,具体端口信息还是要查看报错日志)。首先要查看端口被哪个进程占用了,使用命令:

>>sudo lsof -i:2181

  或者

>>sudo netstat -atunlp | grep 2181

  通过返回的信息找到占用端口进程的PID:(下图分别对应第一条与第二条代码的返回信息)

image.png

image.png

  可见2076182就是占用2181端口进程,之后使用如下代码将进程结束问题就解决了。

>> kill -9 2076182

  3)java.io.IOException: No snapshot found, but there are log entries

  网上大部分论坛(如CSDN,博客园)对此错误的解释是在启动zookeeper时恢复数据的报错,但是对于刚刚下载并配置的人来说,可以简单的理解为在此服务器上存在另一个版本的zookeeper,两个zookeeper都在同一默认目录下储存数据,导致这个错误。解决这个问题的方法就是修改zookeeper.properties文件中的dataDir,如下图所示:

image.png

3.2.2 查看Zookeeper是否启动成功

  普遍使用的检查Zookeeper是否启动的代码如下:

>>ps -aux | grep ’zookeeper’
>>ps -elf | grep zookeeper

  但是,无论Zookeeper是否启动,上述代码均有返回信息,区别在于,如果Zookeeper启动成功,会返回一大串Zookeeper的相关路径,如下图所示:

image.png

  并且,为了保险起见,再次查看2181端口的占用情况,发现2181已被监听,则说明Zookeeper启动成功。

3.2.3 关闭Zookeeper

>>bin/zookeeper-server-stop.sh -daemon config/zookeeper.properties

3.3 启动Kafka

3.3.1 Kafka配置

  kafka的配置文件在config/server.properties文件中,主要需要查看和修改参数如下:

  1)broker.id

image.png

  broker.id很重要,但是一般不需要更改(基本都是从0开始)。

  2)listeners

image.png

  listeners是监听地址,按照文本提供的格式填写主机地址就可以,如上图所示。在初始配置文档中,listeners是被注释掉的,而网上大部分教程中的listeners并没有被注释掉,在之后启动3.0.0版本的Kafka时,未注释掉listeners会导致Kafka启动失败(原因暂时未知),所以在此建议先将监听地址注释掉,了解它的作用即可。

  3)num.partitions

image.png

  num.partitions是新建Topic的默认Partition数量,虽然Partition数量提升,一定程度上可以提升并发性,但是为了尽可能的在第一次配置Kafka时减少报错,先将其设置为1。

  4)log.dirs

image.png

  log.dirs是日志目录,需要根据自己的情况设置。需要注意的是,最好单独建立并命名一个文件夹用来保存日志,因为若日志目录下还保存有别的文件,在启动Kafka时会出现报错。

  5)启动Kafka

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

3.3.2 查看Kafka是否启动成功

  -daemon参数会将任务转入后台运行,输出日志信息将写入日志文件,日志文件在执行命令的目录下的logs目录中kafkaServer.out,结尾输同started说明启动成功。如下图所示:

image.png

  也可以使用jps命令,查看是否有Kafka进程:

>>jps

image.png

3.3.3 关闭Kafka

>>bin/kafka-server-stop.sh config/server.properties

4 测试

  1)前提:Kafka和Zookeeper已启动完成

  2)创建topic

  大部分网上教程使用的代码为:

>>bin/kafka-topics.sh --create --zookeeper 172.16.32.201:2181 --replication-factor 3 --partitions 3
--topic test

  但是,在我使用的3.0.0版本中,使用上述代码会出现报错:zookeeper is not a recognized option。查询之后发现,在0.9版本之后,创建主题的命令为:

>>kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 
--topic test

  3)查看已创建的topic

>>kafka-topics.sh --list --bootstrap-server 172.16.32.201:9092

image.png

  4)发送消息

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

image.png

  5)接收消息

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

image.png

  6)查看特定主题的详细信息

>>kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic test

image.png

  7)删除主题

>>bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic test

推荐阅读

  • 基于飞腾平台的Spark移植与安装
  • 飞腾腾云S2500 Nginx单机环回测试性能调优方法

欢迎广大开发者来飞腾开发者平台获取更多前沿技术文档及资料

如开发者在使用飞腾产品有任何问题可通过在线工单联系我们


版权所有。飞腾信息技术有限公司 2023。保留所有权利。

未经本公司同意,任何单位、公司或个人不得擅自复制,翻译,摘抄本文档内容的部分或全部,不得以任何方式或途径进行传播和宣传。

商标声明

Phytium和其他飞腾商标均为飞腾信息技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

本文档的内容视为飞腾的保密信息,您应当严格遵守保密任务;未经飞腾事先书面同意,您不得向任何第三方披露本文档内容或提供给任何第三方使用。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,飞腾在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但飞腾在此明确声明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保证。

本文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由飞腾和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权等。非经飞腾和/或其关联公司书面同意,任何人不得擅自使用、修改,复制上述内容。

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

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

相关文章

java基础 之 集合与栈的使用(一)

文章目录 集合特点(从整体性来看)区别List接口(一)实现类:ArrayList(二)实现类:LinkedList 集合 java集合可分为Set、List、Queue和Map四种体系。其中List、Set、Queue均继承自Coll…

ADC静态误差

0 前言 图1 表示测量数据精密度高,但准确度较差;图2 表示测量数据的准确度高,但精密度差;图3 表示测量数据精密度和准确度都好,即精确度高。 1 简介 模数转换器(ADC)广泛用于各种应用中&…

Spring Cloud开发实战(一)- 搭建一个Eureka+Feign+LoadBalancer 项目

Spring Cloud开发实战(一)- 搭建一个EurekaFeignLoadBalancer 项目 文章目录 Spring Cloud开发实战(一)- 搭建一个EurekaFeignLoadBalancer 项目0.内容简介1.Eureka服务注册与发现1.1.什么是服务注册与发现1.2.Eureka注册中心1.2.…

Android 系统与SDK和JDK版本对照表

Android 系统与SDK和JDK版本对照表 传说中的兼容问题是指在高版本 SDK 平台开发的软件,可能在低版本 Android 系统中运行时出现各种问题。而低版本 SDK 开发的软件在高版本 Android 系统中运行时基本没有兼容问题的。 Android版本SDK/API版本JDK版本备注Android 14…

springboot宠物相亲平台-计算机毕业设计源码16285

目 录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2 开发环境及相关技术介绍 2.1 MySQL数据库的介绍 2.2 B/S架构的介绍 2.3 Java语言 2.4 SpringBoot框架 3 宠物相亲平台系统分析 3.1 可行性分析 3.1.1 技术可行性分析 3.1.2 经济…

unplugin-vue-components 插件配置 忽略 部分目录下的组件自动导入

背景 vue3 项目 为了省略 第三方库ui 组件 全局组件的注册代码,使用了 unplugin-vue-components 插件 原理 组件识别 在编译阶段,unplugin-vue-components 会扫描 Vue 单文件组件(.vue 文件)的模板部分,识别出所有使…

从零开始掌握进程间通信:管道、信号、消息队列、共享内存大揭秘

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! 大家好,我是小米,今天我们来聊一聊操作系统中的一个重要话题——进程间通信(Inter-Process Communication,简称IPC)。IPC是指在不同进程间传递数据…

01.docker安装、配置、常用命令、dockerfile、镜像上传下载和Harbor仓库搭建

1.docker安装 1.1移除旧版本 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine1.2安装yum-utils获取yum-config-manager [rootlocalhost ~]# yum install -y yum-utils …

图论之最短路径问题(朴素Dijksra算法\堆优化版Dijksra算法\Bellman-Ford\SPFA)

朴素Dijskra算法 时间复杂度:,适用于稠密图,需要用邻接矩阵来存储。 算法描述 设起点为s,dist[v] 表示起点到v点的最短距离。 a)初始化 dist[v]INF(v!s),dist[s] 0 这里一共有n个点,第一个点(起点)初始化为0,其余都初始化为in…

COFFEE AI PARTNER -- 神奇的AI工具,相当我雇佣了一个AI员工,淘汰你的是会使用AI的人

COFFEE AI PARTNER介绍 COFFEE AI PARTNER是由 AI JAVA开发的一款生成式人工智能工具(又名AI助手),尝试一下。 首先域名似乎正在备案中,企业邮箱似乎正在采购,目前服务地址是:COFFEE AI PARTNER-官网 官网…

基于JSP技术的教学质量评价系统

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:JSP 数据库:MySQL 技术:JSPJavaBeans 工具:MyEclipse、Tomcat、Navicat 系统展示 首页 管理员功能模块 学生功…

前端面试:八股文系列(一)

更多详情:爱米的前端小笔记(csdn~xitujuejin~zhiHu~Baidu~小红shu)同步更新,等你来看!都是利用下班时间整理的,整理不易,大家多多👍💛➕🤔哦!你们…

大学新生入门编程的最佳路径

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

微服务架构三大利器:限流、降级与熔断

文章目录 前言一、限流(Rate Limiting)二、降级(Degradation)三、熔断(Circuit Breaker)四、三者关系总结 前言 限流、降级和熔断是分布式系统中常用的容错策略,它们各自承担着不同的角色&#…

5.Gateway-微服务统一网关

5.Gateway-微服务统一网关 1.为什么需要网关2.Spring Cloud Gateway2.1 引入依赖2.2 编写启动类2.3 配置路由规则2.4 路由断言(Predicates)2.5 过滤器(Filters)2.6 熔断机制 1.为什么需要网关 统一访问入口:在微服务架…

【微分方程——高数】

7.二阶常系数非齐次线性微分方程(重点) 8.欧拉方程(重点)

Prompt提示工程上手指南:基础原理及实践-Prompt个性知识库引导

前言 Prompt系列的第二期文章已经将所有的Prompt工程主流策略讲解完毕,共涉及到六种Prompt类别模型以及具体生产内容详解。再结合系列第一篇文章具体对Prompt工程的详细介绍,也就可以达到Prompt工程师的初步入门,现在如果掌握了这些基础技能…

缓存击穿

概念 缓存击穿问题也叫热点key问题,指的是一个被高并发访问并且缓存重建业务较为复杂的key突然失效了,大量的请求会到达数据库给数据库带来巨大的冲击。 常见解决方法有两种:互斥锁,逻辑过期。 优缺点 : 基于互斥锁的…

Python多进程:如何在不依赖Queue的情况下传递结果

随着数据的爆炸式增长,网络爬虫成为获取信息的强大工具。在爬取大量数据时,多进程技术可以显著提高效率。然而,如何在多进程中传递结果,而不依赖Queue,成为了一个值得探讨的问题。本文将以采集抖音短视频为案例&#x…

web框架:Django进阶(一)

文章目录 django进阶内容回顾1.模板1.1 寻找html模板顺序1.2 模板处理的本质1.3 常用语法1.4 内置函数1.5 自定义模板功能1.6 继承和母版1.7 模板的导入 2.django中间件2.1 原始方式2.2 MiddlewareMixin(建议)2.3 prcess_request的执行时,是否…