【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。 点击这里开始你的技术升级之旅吧
本文分享至飞腾开发者平台《飞腾平台Kafka_v3.0.0移植安装手册》
1 介绍
Kafka是一款开源的、轻量级的、分布式的、可分区和具有复制备份的(Replicated)、基于ZooKeeper协调管理的分布式流平台的功能强大的消息系统。与传统的消息系统相比,Kafka能够很好地处理活跃的流数据,使得数据在各个子系统中高性能、低延迟地不停流转,kafka由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。主要处理大数据中的实时流式数据处理场景。
2 环境要求
2.1 硬件要求
硬件要求如下表所示。
项目 | 说明 |
---|---|
CPU | FT-2000+/64服务器 |
网络 | 无要求 |
存储 | 无要求 |
内存 | 无要求 |
2.2 操作系统要求
操作系统要求如下表所示。
项目 | 说明 |
---|---|
CentOS | 8 |
Kernel | 4.18.0-193.el8.aarch64 |
2.3 软件环境要求
软件环境要求如下表所示。
项目 | 说明 |
---|---|
JDK | 1.8.0_281 |
3 安装步骤
3.1 下载Kafka压缩包
1. 前往官网下载Kafka安装包:https://kafka.apache.org/downloads
注*:在官网下载Kafka安装包时,要选择编译好的,可以直接使用的压缩包,如下图所示:
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改小。如下图所示
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:(下图分别对应第一条与第二条代码的返回信息)
可见2076182就是占用2181端口进程,之后使用如下代码将进程结束问题就解决了。
>> kill -9 2076182
3)java.io.IOException: No snapshot found, but there are log entries
网上大部分论坛(如CSDN,博客园)对此错误的解释是在启动zookeeper时恢复数据的报错,但是对于刚刚下载并配置的人来说,可以简单的理解为在此服务器上存在另一个版本的zookeeper,两个zookeeper都在同一默认目录下储存数据,导致这个错误。解决这个问题的方法就是修改zookeeper.properties文件中的dataDir,如下图所示:
3.2.2 查看Zookeeper是否启动成功
普遍使用的检查Zookeeper是否启动的代码如下:
>>ps -aux | grep ’zookeeper’
或
>>ps -elf | grep zookeeper
但是,无论Zookeeper是否启动,上述代码均有返回信息,区别在于,如果Zookeeper启动成功,会返回一大串Zookeeper的相关路径,如下图所示:
并且,为了保险起见,再次查看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
broker.id很重要,但是一般不需要更改(基本都是从0开始)。
2)listeners
listeners是监听地址,按照文本提供的格式填写主机地址就可以,如上图所示。在初始配置文档中,listeners是被注释掉的,而网上大部分教程中的listeners并没有被注释掉,在之后启动3.0.0版本的Kafka时,未注释掉listeners会导致Kafka启动失败(原因暂时未知),所以在此建议先将监听地址注释掉,了解它的作用即可。
3)num.partitions
num.partitions是新建Topic的默认Partition数量,虽然Partition数量提升,一定程度上可以提升并发性,但是为了尽可能的在第一次配置Kafka时减少报错,先将其设置为1。
4)log.dirs
log.dirs是日志目录,需要根据自己的情况设置。需要注意的是,最好单独建立并命名一个文件夹用来保存日志,因为若日志目录下还保存有别的文件,在启动Kafka时会出现报错。
5)启动Kafka
>>kafka-server-start.sh -daemon config/server.properties
3.3.2 查看Kafka是否启动成功
-daemon参数会将任务转入后台运行,输出日志信息将写入日志文件,日志文件在执行命令的目录下的logs目录中kafkaServer.out,结尾输同started说明启动成功。如下图所示:
也可以使用jps命令,查看是否有Kafka进程:
>>jps
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
4)发送消息
>>kafka-console-producer.sh --broker-list 172.16.32.201:9092 --topic test
5)接收消息
>>kafka-console-consumer.sh --bootstrap-server 172.16.32.201:9092 --topic test
--from-beginning
6)查看特定主题的详细信息
>>kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic test
7)删除主题
>>bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic test
推荐阅读
- 基于飞腾平台的Spark移植与安装
- 飞腾腾云S2500 Nginx单机环回测试性能调优方法
欢迎广大开发者来飞腾开发者平台获取更多前沿技术文档及资料
如开发者在使用飞腾产品有任何问题可通过在线工单联系我们
版权所有。飞腾信息技术有限公司 2023。保留所有权利。
未经本公司同意,任何单位、公司或个人不得擅自复制,翻译,摘抄本文档内容的部分或全部,不得以任何方式或途径进行传播和宣传。
商标声明
Phytium和其他飞腾商标均为飞腾信息技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
本文档的内容视为飞腾的保密信息,您应当严格遵守保密任务;未经飞腾事先书面同意,您不得向任何第三方披露本文档内容或提供给任何第三方使用。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,飞腾在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但飞腾在此明确声明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保证。
本文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由飞腾和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权等。非经飞腾和/或其关联公司书面同意,任何人不得擅自使用、修改,复制上述内容。