基于Linux的Kafka安装,初步认识Kafka(一)

kafka消费、生产性能问题分析及优化方法 这是一篇关于我个人遇到的kafka性能问题分析与解决方案,欢迎大家阅读和积极提提意见! 阅读详情

1. 认识kafka

1. 搭建单机kafka

  1. 将kafka的安装包上传到虚拟机,并解压

    cd  /usr/loacl/
    tar -zxvf kafka_2.13-2.6.0.tgz
    cd /usr/local/kafka_2.13-2.6.0
    
  2. 修改 server.properties

    cd /usr/local/kafka_2.13-2.6.0/config
    vim server.properties
    
    # 修改brock的id
    brock.id=0
    # 修改kafka数据存放的位置,kafka数据默认以log的方式存储
    log.dirs=/usr/local/kafka_2.13-2.6.0/data
    
    
  3. 启动kafka服务器

    cd /usr/local/kafka_2.13-2.6.0
    ./bin/kafka-server-start.sh config/server.properties 
    
  4. 查看端口号占用的进程

    netstat -tunlp|egrep "(2181|9092)"
    

    image-20201029193230635

    2181: 是zookeeper的默认端口号

    9092: 是kafka 的默认端口号

  5. 单机连通性测试,启动两个xshell客户端,一个用于生产者发送信息,一个用于消费者消费信息。

  6. 创建一个topics名为test的主题

    # zookeeper 服务器地址
    --zookeeper localhost:2181
    #  创建副本数为2 
     --replication-factor 1
    # 分区数为1
     --partitions 1
     # 主题为test
     --topic test
    
    ./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
    
  7. 启动一个kafka的produce生产者

    cd /usr/local/kafka_2.13-2.6.0/
    ./bin/kafka-console-producer.sh  --broker-list localhost:9092 --topic test
    
  8. 启动一个kafka的consumer消费者

    cd /usr/local/kafka_2.13-2.6.0/
    ./bin/kafka-console-consumer.sh  --bootstrap-server localhost:9092 --topic test --from-beginning
    
  9. 此时我们从producer中输入任何单词,发送之后消费者consumer都能够接收到。

2. 单机基准测试

  • 生产者基准测试
bin/kafka-producer-perf-test.sh --topic test --num-records 500000 --throughput -1 --record-size 1000 --producer-props bootstrap.servers=192.168.216.130:9092 acks=1
--topic  主题名
--num-records  总共指定生产数据量(默认为500W)
--throughput    指定吞吐量——限流(-1代表不限流)
--record-size 	record数据的大小(字节为单位)
--producer-props   集群地址,ack=1,指定ack模式

image-20201029211839746

# 测试结果
500000 records sent, 15953.543282 records/sec (15.21 MB/sec), 1899.70 ms avg latency, 4087.00 ms max latency, 1689 ms 50th, 3327 ms 95th, 3921 ms 99th, 4070 ms 99.9th.
# 意思是50W条数据已经发送完毕;每秒大概发送1.6W条数据,约为15.21MB每秒;平均延迟为1899.70毫秒;最大延迟为4087毫秒;
  • 消费者基准测试
    bin/kafka-consumer-perf-test.sh --topic test --fetch-size 1048576 --messages 500000  --broker-list 192.168.216.130:9092
start.time2020-10-29 21:29:56:824
end.time2020-10-29 21:30:01:503
data.consumed.in.MB
共计消费的数据
476.8372
MB.sec
每秒消费的数量
101.9101
data.consumed.in.nMsg500002
nMsg.sec
每秒消费的数据
106860.8677
rebalance.time.ms1603978197378
fetch.time.ms-1603978192699
fetch.MB.sec-0.0000
fetch.nMsg.sec-0.0003

3. 搭建 kafka伪集群(待补充)

搭建kafka伪集群之前,先要有zookeeper伪集群。就好像单机Kafka也需要有单机zookeeper。

  1. 搭建zookeeper伪集群

  2. kafka伪集群复制配置文件

    cd/usr/local/kafka_2.13-2.6.0
    cp config/server.properties config/server-1.properties
    cp config/server.properties config/server-2.properties
    cp config/server.properties config/server-3.properties
    
  3. 修改 每个server 的配置文件 server-x.properties

    vim config/server-1.properties:
    
        host.name=192.168.216.130
        broker.id=1
        port=9093
        log.dir=/usr/local/kafka_2.13-2.6.0/kafka_data/server1
        zookeeper.connect=master:2182,master:2183,master:2184
        
    vim config/server-2.properties:   
        host.name=192.168.216.130
        broker.id=2
        port=9094
        log.dir=/usr/local/kafka_2.13-2.6.0/kafka_data/server2
        zookeeper.connect=master:2182,master:2183,master:2184
        
    vim config/server-3.properties:   
        host.name=192.168.216.130
        broker.id=3
        port=9095
        log.dir=/usr/local/kafka_2.13-2.6.0/kafka_data/server3
        zookeeper.connect=master:2182,master:2183,master:2184
    

4. kafka 基本概念

Producer : 消息和数据的生产者,向Kafka的一个Topic发布消息的进程、代码或服务;

Consumer : 消息和数据的消费者,订阅数据(Topic)并且处理其发布的消息的进程、代码或服务;

Consumer Group : 逻辑概念,对于同一个topic,会广播给不同的group,一个group中,只有一个consumer可以消费该消息;

Broker : 物理概念,Kafka集群中的每个Kafka节点;

Topic : 逻辑概念,Kafka消息的类别,对数据进行区分、隔离;

Partition : 物理概念,Kafka下数据存储的基本单位,一个Topic数据会被分散存储在多个Partition中,每个Partition中的消息是有序的;

Replication : 同一个Partition可能会有多个Replia,多个Replica之间数据一般是一样的;

Replication Leader : 一个Partition的多个Replica上,需要一个Leader负责该Partition上与Producer和Consumer交互;

Replication Manager : 负责管理当前broker所有分区和副本的信息,处理KafkaController发起的一些请求,副本状态的切换、添加/读取消息等。

5. 幂等性

  • 生产这消息重复问题:

    即Kafka生产者生产消息到partition分区中,如果直接发送消息,Kafka会将消息保存到分区中,并且Kafka会返回一个 ACK 给生产者,表示当前操作是否成功,即Kafka分区是否保存了这条消息。如果ACK响应的过程失败了,此时生产者会认为Kafka分组没有接收到生产者生产的消息,生产者就会重试,继续发送没有发送成功的消息。那么此时Kafka就会保存了两条一模一样的消息。

  • 解决办法:

    • 当Kafka的生产者生产消息时,会增加一个Pid(生产者的唯一编号)和sequence number (针对消息的一个递增序列)。
    • 发送消息时,会连着 pid 和sequence number 一块发送。
    • Kafka 接收消息,会将消息和pid、sequence number 一并保存。
    • 如果ACK响应失败,生产者重试,再次发送消息时,Kafka会根据第二次接收到的pid、sequence number 判断这条消息是否需要被保存下来。
    • 判断条件:生产者发送过来的 sequence number 是否小于等于 partition 中消息对应的sequence number。 若小于,则说明已经保存过了。 ·
Kafka 在 Linux 下的集群配置和安装 本文详细介绍了在 Linux 环境中配置和安装 Kafka 集群的过程,包括每个配置项的说明和常见故障的排查方法。通过这些步骤,您可以轻松地构建一个可靠的 Kafka 集群,支持大规模数据流处理和实时数据传输。希望这篇文章能够帮助您顺利搭建和管理 Kafka 集群。 阅读详情

相关推荐

Linux kafka安装

一 JDK安装: 1.jdk1.7.0_55.tar.gz 准备安装包 2.tar -zxvf 安装包进行当前位置解压(一般解压在根目录opt下) 3.vi /etc/profile 编辑文本最下面加入以下内容进行保存: JAVA_HOME=jdk解压目录(注意最后没有/) PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/d...

ys3909656的博客 2287

kafka入门简介

Kafka是分布式的发布—订阅消息系统。它最初由LinkedIn(领英)公司发布,使用Scala语言编写,与2010年12月份开源,成为Apache的顶级项目。Kafka是一个高吞吐量的、持久性的、分布式发布订阅消息系统。它主要用于处理活跃live的数据(登录、浏览、点击、分享、喜欢等用户行为产生的数据)。 ...

鸭梨的博客 456

实测对比:DINOv2、CLIP、ResNet在图像相似度任务上谁更强?(含Python代码与避坑指南)

本文通过实测对比DINOv2、CLIP和ResNet在图像相似度任务中的表现,提供Python代码实现与避坑指南。实验结果显示,DINOv2在精度上表现最佳,CLIP在多模态场景中优势明显,而ResNet则在计算效率上更优。文章还针对不同业务场景给出了具体选型建议,帮助开发者在图像搜索和版权检测等项目中做出更明智的技术决策。

weixin_30588381的博客 285

kafka第一次send/生产时,响应很慢

        首先排除版本与依赖不一致的情况后:         Kafka在第一次加载时,会首先加载元数据,在向Kafka服务器发送元数据更新请求时,如果服务器与客户端在同一个网段,那么首次加载更新元数据时,会很快。         Kafka服务器与客户端不在同一网

loney_wolf的博客 3318

V-rep机器人仿真(Win10):UR5+RG2+Kinect+YOLOV3+DDPG+Pytorch(第四部分:YOLOV3图像识别)

这是一个V-rep机器人仿真实验,较为简单,适合初学者在入门图像识别、机器学习、机器人学的内容时进行学习与训练。 实验涉及的内容有:V-rep机器人仿真,YOLOV3图像识别,强化学习DDPG,UR5机械臂及RG2机械手,Kinect摄像头。 使用环境:Win10,Pytorch0.4,V-rep 整个实验一共由多篇文章组成,本文是第四部分。 第四部分:YOLOV3图像识别 文章目录第四部分:YO...

weixin_42158966的博客 5836

扣子(coze)实战|手把手教你搭建AI换装自动化工作流

摘要:本文介绍了使用Coze平台搭建AI换装工作流的详细教程。工作流包含模特图片上传、服装替换、任务提交和智能轮询等模块,通过change_model插件实现异步换装处理,并内置30秒循环查询机制。该工具支持自定义API密钥对接不同AI服务商,目前已上线共享空间并提供会员服务(59.8元/年)和VIP课程(499元/年),包含100+智能体和实战案例资源。完整体验地址见文中链接。

yueyehuguang的博客 1843

生产故障|Kafka消息发送延迟达到几十秒的罪魁祸首竟然是...

点击上方“服务端思维”,选择“设为星标”回复”669“获取独家整理的精选资料集回复”加群“加入全国服务端高端社群「后端圈」作者 | 丁威出品| 中间件兴趣圈1、故障现象笔者在双十一期间负...

梁桂钊的博客 2511

ue 打包linux程序 在windows系统 2026

ue 打包linux程序 在windows系统 2026

jacke121的专栏 371

Kafka运维大全来了!优化、监控、故障处理……

作者介绍小火牛,项目管理高级工程师,具有多年大数据平台运维管理及开发优化经验。管理过多个上千节点集群,擅长对外多租户平台的维护开发。信科院大数据性能测试、功能测试主力,大...

过往记忆大数据 3602

智能体开发套件(ADK)介绍

city } ---") city_normalized = city . lower() . replace(" " , "") # 模拟天气数据库 mock_weather_db = {

lpfasd123的博客 1403

Unity开发抖音小游戏存储的几种方法分析

前段时间写小游戏为了省事一直就没有研究抖音小游戏的存储方案,一直使用的是unity中的PlayerPrefs去做的存储,但是后来发现官方会一直提醒让使用抖音sdk中的新文件存储系统,从而降低内存占用。

类人_猿的博客 2533

linux安装kafka

今天来安装kafka 安装kafka前台必须安装zookeeper 不会安装请移步:点我快速进入安装zookeeper文章 一、安装kafka 下载kafka两种方式 1、手动下载 下载地址:http://kafka.apache.org/downloads 下载好了然后上传服务器(不在这里赘述。前两个文章都有!) 2、也可以用命令下载(直接下载到服务器哦!):...

猿码优创 4万+

SCI论文发表很容易【5】:比较容易中的期刊

整理了一些经管方面比较容易中稿的期刊,可供大家参考

qq_25018077的博客 1678

kafka教程之linux安装教程(一)

目录 一、安装JDK 二、安装Kafak 三、创建启动和关闭的 kafka 执行脚本 四、创建生产者 topic 和 消费者 topic 简单示例 五、查看运行的进程 和 当前topic 一、安装JDK 安装jdk1.8版本 yum install -y java-1.8.0-openjdk.x86_64 查询jdk版本 java -version 如果能查看到jdk的版本信息,这样就安装成功了。默认给安装到usr/lib/jvm/ 二、安装Kafak 1、下载kafka.

尼古拉斯大树的博客 2万+

电路板保险丝如何选型

在电路板保险丝选型过程中,需要考虑多个因素以确保其适合特定的电路需求。最后,经过以上程序选定的样品需要在实际的电路中进行测试,以验证所选择的保险丝是否合适。

weixin_57010826的博客 1310

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

linux环境kafka安装及配置

linux环境kafka安装及配置过程(含zookeeper)

W_StackOverFlow_W的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Kafka在Linux下载安装及部署

前期准备工作: kafka的安装及使用需要用到ZooKeeper,所以需要提前安装搭建好ZooKeeper ZooKeeper在Linux下载安装及部署:https://blog.csdn.net/Eternal_Blue/article/details/94762494 - - - --- - - --- - - --- - - --- - - --- ......

学弟不想努力了 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Linux 安装 kafka

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

qq_42923937的博客 7523

kafka 在Linux上的安装部署

通过以上步骤,我们在 Linux 系统上成功安装和部署了 Kafka。在实际应用中,可以根据具体的业务需求进一步配置和优化 Kafka,如设置更复杂的安全机制、调整性能参数等。希望本教程对大家有所帮助,让大家能够顺利开启 Kafka 之旅。

m0_56341622的博客 5157

Linux下安装Kafka

zookeeper.connect:申明kafka所连接的zookeeper的地址,需配置为zookeeper的地址,由于本次使用的是kafka高版本中自带zookeeper,使用默认配置即可。添加开放端口:firewall-cmd --zone=public --add-port=80/tcp --premanent (–premanent永久生效,没有此参数,重启后失效)查看开放端口:firewall-cmd --list-port。重新载入规则:firewall-cmd --reload。

NAMELI的博客 5912

Linux 安装kafka详细步骤

Linux 安装 kafka 详细步骤 一,kafka 下载地址 http://archive.apache.org/dist/kafka/ 二,安装步骤 2.1 安装JDK (kafka 是Scala语言开发,运行在 jvm 上) # 解压文件 tar -zxf jdk1.8.0_201.tar # 配置环境变量 vim /etc/profile # 在 profile 文件最后加上 export JAVA_HOME=/usr/local/java/jdk1.8.0_201 export PATH=$

不负年华 2万+

Linux安装 kafka 详细步骤

Linux安装 kafka 详细步骤一、安装JDK环境1.1、下载jdk1.2、上传jdk到linux1.3、解压jdk1.4、配置环境变量1.5、测试jdk安装是否成功二、安装Zookeper2.1、下载安装包2.2、创建安装目录2.3、修改配置2.4、创建节点的myid:2.5、启动ZooKeeper三、安装Kafka3.1、下载kafka3.2、创建工作目录&启动3.3、开启远程链接3.4、创建和查看topic 一、安装JDK环境 1.1、下载jdk jdk下载链接: http://www.j

qq_45887180的博客 5841

Linux下安装使用Kafka

listeners:申明此kafka服务器需要监听的端口号,如果是在本机上跑虚拟机运行可以不用配置本项,默认会使用localhost的地址,如果是在远程服务器上运行则必须配置,例如:listeners=PLAINTEXT://192.168.180.128:9092。zookeeper.connect:申明kafka所连接的zookeeper的地址,需配置为zookeeper的地址,由于本次使用的是kafka高版本中自带zookeeper,使用默认配置即可。进入bin目录下,启动zookeeper服务。

a2335vg的博客 1294

zookeeper及kafka在Linux下的安装与配置

zookeeper及kafka在Linux下的安装与配置

Mr_XiMu的博客 3778

Kafka 在 Linux 环境下的安装配置

linux环境下安装配置Kafka以及遇到的一些问题

Ethereal的博客 7438

kafka:linux 安装 kafka集群

启动:sh /opt/kafka/kafka_2.11-2.4.0/bin/kafka-server-start.sh -daemon /opt/kafka/kafka_2.11-2.4.0/config/server.properties。若要关闭efak,则运行命令:sh/opt/kafka-eagle/kafka-eagle-bin-2.1.0/efak-web-2.1.0/bin/ke.sh stop。下载linux版本的jdk包,比如:jdk-8u192-linux-x64.tar.gz。

积水成多,水到渠成 1820
上一篇: leetcode104. 二叉树的最大深度
下一篇: Kafka分区、副本机制(二)
Dim_Jerry
博客等级 码龄8年 14粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值