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下的安装和使用的更多相关文章

  1. 我的 Kafka 旅程 - Linux下的安装 & 基础命令

    准备工作 安装解压缩工具 tar # 检查是否安装了解压缩工具 tar yum list tar # 如未安装 tar yum install tar -y 安装必备的 java # 检查是否安装了 ...

  2. Linux下yum安装MySQL

    写这篇文章的原因是:在刚开始使用Linux操作系统时想要搭建LAMP环境,于是开始在Google和百度上各种寻找资料,碰到了不是很多的问题后,我决定写这篇文章总结一下在Linux下yum安装MySQL ...

  3. LINUX下编译安装PHP各种报错大集合

    本文为大家整理汇总了一些linux下编译安装php各种报错大集合 ,感兴趣的同学参考下. nginx1.6.2-mysql5.5.32二进制,php安装报错解决: 123456 [root@clien ...

  4. 【夯实PHP基础系列】linux下yum安装PHP APC

    Alternative PHP Cache(可选PHP缓存),依赖于 PECL扩展库 用源码方式安装,直接yum就行了:首先要安装apc的依赖包:yum install php-pear php-de ...

  5. Linux学习心得之 Linux下ant安装与使用

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下ant安装与使用 1. 前言2. ant安装3. 简单的a ...

  6. Linux下php安装Redis扩展

    说明: 操作系统:CentOS php安装目录:/usr/local/php php.ini配置文件路径:/usr/local/php7/etc/php.ini Nginx安装目录:/usr/loca ...

  7. linux下编译安装vim7.4并安装clang_complete插件

    linux下编译安装vim7.4并安装clang_complete插件 因为debian里软件仓库中下载安装的vim是不支持python写的插件的(可以打开vim,在命令模式先输入:py测试一下),导 ...

  8. linux下编译安装curl

    linux下编译安装curl 1.下载curl git clone https://github.com/curl/curl.git 2.在curl目录下生成configure文件 ./buldcon ...

  9. linux下编译安装boost库

    linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4. ...

  10. linux下VMware安装出现的问题解决

    linux下VMware安装出现的问题解决 linux下VMware安装出现的问题解决 报错信息 问题1liboverlay-scrollbar.so和libunity-gtk-module.so加载 ...

随机推荐

  1. Resistance distance 图上2个节点的等效电阻求解算法

    目录 如何计算正方体网络中(乃至更一般的图)2个节点间的等效电阻? 公式的正确性很容易得到验证 如何计算Weighted matrix的Resistance matrix 我验证了特例,是对的,但是对 ...

  2. 「学习笔记」平衡树基础:Splay 和 Treap

    「学习笔记」平衡树基础:Splay 和 Treap 点击查看目录 目录 「学习笔记」平衡树基础:Splay 和 Treap 知识点 平衡树概述 Splay 旋转操作 Splay 操作 插入 \(x\) ...

  3. 全网最详细中英文ChatGPT-GPT-4示例文档-从0到1快速入门python代码解释应用——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

    目录 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node.js接口请求示 ...

  4. Teamcenter_NX集成开发:UF_UGMGR_invoke_pdm_server函数的使用

    之前了解到通过UFUN函数UF_UGMGR_invoke_pdm_server可以调用Teamcenter ITK函数,从而可以获取及编辑Teamcenter对象.UFUN中有样例代码,但是就是不知道 ...

  5. fluter usage---->动态更换Theme

    应用中切换深色主题和暗色主题是比较常见的操作,今天我们就来学习一下Flutter中动态的切换主题. Simple Theme import 'package:flutter/material.dart ...

  6. 使用Docusaurus搭建个人网站

    第一次使用 Docusaurus 搭建我的个人网站 第一步 安装 node 环境 安装 Node.js 16.14 或更高版本(可以通过执行 node -v 命令来查看当前所用的 Node.js 版本 ...

  7. NodeJS V8引擎的内存和垃圾回收器(GC)

    一.为什么需要GC 程序应用运行需要使用内存,其中内存的两个分区是我们常常会讨论的概念:栈区和堆区. 栈区是线性的队列,随着函数运行结束自动释放的,而堆区是自由的动态内存空间.堆内存是手动分配释放或者 ...

  8. vue中使用西瓜视频中引入自定义样式,绝对可以

    首先配置sass-loader和raw-loader 方法,再vue-config.js中加上这一段代码 module.exports = { chainWebpack: config => { ...

  9. redis 5种数据类型的增删改查

    string: 增:set name zhangsan 删:del name 改:set name lisi 查:get name hash: 增:hmset name name1 zhangsan ...

  10. 记一次 .NET 某传感器采集系统 线程爆高分析

    一:背景 1. 讲故事 前段时间有位朋友微信找到我,说他的程序使用 hsl 库之后,采集 plc 时内存溢出,让我帮忙看一下怎么回事,哈哈,貌似是分析之旅中的第二次和 hsl 打交道,既然找到我,那就 ...