Kafka在Linux下的安装和使用
Kafka简介
Tips:本文主要介绍在Linux系统中安装和使用Lafka的操作步骤。
安装Kafka
访问Kafka官网,下载安装包版本(https://kafka.apache.org/downloads),下载 kafka_2.12-3.3.2.tgz,前面的 2.12 是 Scala的版本号,后面的3.3.2是kafka的版本号。https://downloads.apache.org/kafka/3.3.2/kafka_2.12-3.3.2.tgz
下载后,按照命令进行安装:
cd /home/guozhong
wget https://downloads.apache.org/kafka/3.3.2/kafka_2.12-3.3.2.tgz
tar -zxvf kafka_2.12-3.3.2.tgz -C /opt/modules/app
cd /opt/modules/app
mv kafka_2.12-3.3.2 kafka
chown -R hadoop ./kafka
启动Kafka
安装完成后,首先要启动Kafka。登录Linux系统(本教程使用已经创建的hadoop用户),打开一个终端,输入命令启动Zookeeper服务:
cd /opt/modules/app/kafka
./bin/zookeeper-server-start.sh config/zookeeper.properties
注意:执行完上面的命令后,终端窗口会返回一堆信息,然后停止不动了,没有回到shell命令提示符状态,这时,不要误以为是程序任务死掉了,而是Zookeeper服务器已经启动了,正处于运行状态下。所以,千万不要关闭该终端窗口,一旦关闭,Zookeeper服务就停止了。
请另打开一个终端,然后输入以下命令启动kafka服务:
cd /opt/modules/app/kafka
./bin/kafka-server-start.sh config/server.properties
同样的,执行上面的命令后,终端窗口也返回一堆信息,然后就会停止不动,没有回到shell命令提示符状态,同样不要以为死机了,而是Kafka服务器已经启动,正处于运行状态。所以不要关闭终端窗口。否则,关闭后Kafka服务就停止了。
当然,要想kafka在后台运行,可以采用在结尾增加"&"的命令:
cd /opt/modules/app/kafka
./bin/kafka-server-start.sh config/server.properties &
这样,Kafka启动后就会在后台运行,即使关闭了终端窗口,服务也一直在运行。
查看当前启动的服务:
[root@hadoop01 kafka]# jps
2711 Kafka
4600 Jps
2255 QuorumPeerMain
创建Topic
再打开第三个终端,然后输入以下命令,创建一个自定义名称为“testsender”的Topic:(这2.12版本之后的创建方式,老版本的创建方式命令不同,可以查看️常见问题 说明)
./bin/kafka-topics.sh --create --topic testsender --bootstrap-server localhost:9092
Created topic testsender.
可执行如下命令,查看"testsender"的Topic是否已成功创建:
./bin/kafka-topics.sh --list --bootstrap-server localhost:9092
testsender
启动生产者和消费者
启动生产者发送消息:
./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic testsender
>hello
>123456
启动消费者接收消息:
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic testsender --from-beginning 接收到消息:
hello
123456
️常见问题
解决zookeeper is not a recognized option问题
出现如下错误,这时不要慌

分析这个问题可能有两点:
第一点:当我们使用如下命令创建 topic 时,会报此错误。比如要创建一个名称为“testsender”的topic,当前安装的版本是2.12,这时我们要使用新版本的创建topic命令来执行,老版本是报以上错误的。
老版本的创建topic方式:
./bin/kafka-topics.sh --create --zookeeper localhost:2181
--replication-factor 1 --partitions 1
--topic testsender
我们采用新版本的创建topic方式:
./bin/kafka-topics.sh --create --topic testsender --bootstrap-server localhost:9092
第二点:如果采用新版本的创建方式还是报错,这时要考虑的问题多数在配置文件上,这个问题多数是因为:kafka 的配置文件和 zookeeper 的配置文件,我们都按照默认,并没有修改,这里可能需要修改就是这两个文件:kafka-server-start.sh 和 zookeeper-server-start.sh中默认的启动内存,初始值有点大,如果服务器的配置比较低的话,会报内存不足的错误,这个问题不太容易发现,这里我们可以把启动内存调小一点。
kafka-server-start.sh文件: Xms1G 调整为 Xms128M
默认:
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi EXTRA_ARGS=${EXTRA_ARGS-'-name kafkaServer -loggc'}
修改后:
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
export KAFKA_HEAP_OPTS="-Xmx1G -Xms128M"
fi EXTRA_ARGS=${EXTRA_ARGS-'-name kafkaServer -loggc'}
zookeeper-server-start.sh文件:Xmx512M 调整为 Xms128M
默认:
if [ "x$KAFKA_LOG4J_OPTS" = "x" ]; then
export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/../config/log4j.properties"
fi if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
export KAFKA_HEAP_OPTS="-Xmx512M -Xms512M"
fi EXTRA_ARGS=${EXTRA_ARGS-'-name zookeeper -loggc'}
修改为:
if [ "x$KAFKA_LOG4J_OPTS" = "x" ]; then
export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/../config/log4j.properties"
fi if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
export KAFKA_HEAP_OPTS="-Xmx512M -Xms128M"
fi EXTRA_ARGS=${EXTRA_ARGS-'-name zookeeper -loggc'}
接下来重启服务,再试一下:
./bin/kafka-topics.sh --create --topic testsender --bootstrap-server localhost:9092
Created topic testsender.
Kafka在Linux下的安装和使用的更多相关文章
- 我的 Kafka 旅程 - Linux下的安装 & 基础命令
准备工作 安装解压缩工具 tar # 检查是否安装了解压缩工具 tar yum list tar # 如未安装 tar yum install tar -y 安装必备的 java # 检查是否安装了 ...
- Linux下yum安装MySQL
写这篇文章的原因是:在刚开始使用Linux操作系统时想要搭建LAMP环境,于是开始在Google和百度上各种寻找资料,碰到了不是很多的问题后,我决定写这篇文章总结一下在Linux下yum安装MySQL ...
- LINUX下编译安装PHP各种报错大集合
本文为大家整理汇总了一些linux下编译安装php各种报错大集合 ,感兴趣的同学参考下. nginx1.6.2-mysql5.5.32二进制,php安装报错解决: 123456 [root@clien ...
- 【夯实PHP基础系列】linux下yum安装PHP APC
Alternative PHP Cache(可选PHP缓存),依赖于 PECL扩展库 用源码方式安装,直接yum就行了:首先要安装apc的依赖包:yum install php-pear php-de ...
- Linux学习心得之 Linux下ant安装与使用
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下ant安装与使用 1. 前言2. ant安装3. 简单的a ...
- Linux下php安装Redis扩展
说明: 操作系统:CentOS php安装目录:/usr/local/php php.ini配置文件路径:/usr/local/php7/etc/php.ini Nginx安装目录:/usr/loca ...
- linux下编译安装vim7.4并安装clang_complete插件
linux下编译安装vim7.4并安装clang_complete插件 因为debian里软件仓库中下载安装的vim是不支持python写的插件的(可以打开vim,在命令模式先输入:py测试一下),导 ...
- linux下编译安装curl
linux下编译安装curl 1.下载curl git clone https://github.com/curl/curl.git 2.在curl目录下生成configure文件 ./buldcon ...
- linux下编译安装boost库
linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4. ...
- linux下VMware安装出现的问题解决
linux下VMware安装出现的问题解决 linux下VMware安装出现的问题解决 报错信息 问题1liboverlay-scrollbar.so和libunity-gtk-module.so加载 ...
随机推荐
- Hive 与 HBase 之间的区别和联系
首先要知道 Hive 和 HBase 两者的区别,我们必须要知道两者的作用和在大数据中扮演的角色 概念 Hive 1.Hive 是 hadoop 数据仓库管理工具,严格来说,不是数据库,本身是不存储数 ...
- java多线程--7 线程协作 线程池
java多线程--7 线程协作 线程池 并发协作模型--生产者消费者模式 这是一个线程同步问题,生产者和消费者共享同一个资源,并且生产者和消费者之间互相依赖,互为条件. java提供了几个方法解决线程 ...
- java异常--处理机制
java异常处理机制 异常处理的关键字:try catch finally throw throws package charpter6.Demo02; public class Test { pub ...
- Zab(Zookeeper Atomic Broadcast)协议
更多内容,前往IT-BLOG 一.什么是 Zab协议 Zab( Zookeeper Atomic Broadcast:Zookeeper原子广播)Zookeeper 通过 Zab 协议保证分布式事务的 ...
- node.js介绍及简单例子
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ArcGIS Pro处理发布并在前端调用bim数据全过程-rvt转slpk
记录ArcGIS处理三维bim模型全纪录,从原始的rvt格式开始,到最后web前端js api调用的整个过程,并记录部分中间操作过程中出现的问题和解决办法. 本文示例使用: 软件:ArcGIS Pro ...
- 打造自己的ChatGPT:OpenAI的API接入技巧
打造自己的ChatGPT:OpenAI 的API接入技巧 2023年3月更新 OpenAI 在3月1日的时候放出了ChatGPT的接口,新的接口可以使用 GPT-3.5 模型,同时接口参数更新为了 m ...
- Ubuntu系统Flameshot使用问题
Ubuntu系统Flameshot使用问题 系统:Ubuntu22.04 问题:使用Flameshot,每次都会先截取整个屏幕,提示需要先分享,再使用Flameshot的功能 安装Flameshot ...
- 关于Java中泛型的上界和下界理解
既然聊到了泛型的上下界问题,就先给出几个类的继承关系吧 class Fruit{}class Apple extends Fruit{}class Orange extends Fruit{}clas ...
- [Java EE]SpringBoot/Tomcat之启动时报"Error: Could not find or load main class CLASS xxxx"、"no main manifest attribute"异常
环境信息如下: OS: CENTOS 7 Tomcat : 9.0.46 SpringBoot: 2.3.12.RELASE Build JDK: 1.8.0_261 Runetime JDK : o ...