Storm-kafka源码分析之Config相关类

【Kafka】kafka 脚本kafka-configs.sh用法解析 1.概述 引用博客来自李志涛:https://www.cnblogs.com/lizherui/p/12275193.html 2.前言介绍 网络上针对脚本kafka-configs.sh用法,也有一些各种文章,但都不系统不全面,介绍的内容是有缺失的,总让人看起来很懂,用起来难,例如:动态配置内部关系不清晰、有些重点配置参数主从同步配额限流也没有解释清楚,除非去看代码。所以我希望读者通过深入阅读此文,更便捷利用此脚本解决实际运维和开发中遇到的问题,同时也为大家节省学习时间。 3.脚本语法解析 kafka-. 阅读详情


要创建一个KafkaSpout对象,必须要传入一个SpoutConfig对象,KafkaSpout的构造函数定义如下:

public KafkaSpout(SpoutConfig spoutConf) {
    _spoutConfig = spoutConf;
}

SpoutConfig继承KafkaConfig,并实现Serializable,由于在KafkaConfig中所有的属性字段都是public的因此在SpoutConfig中可以直接引用,SpoutConfig类的定义如下其中核心字段添加了注释。

public class SpoutConfig extends KafkaConfig implements Serializable {
    //记录zookeeper的地址列表
    public List<String> zkServers = null;
    //zookeeper端口号
    public Integer zkPort = null;
    //该参数是Consumer消费的meta信息,保存在zk的路径,自己指定
    public String zkRoot = null;
    //唯一id
    public String id = null;
    //向zookeeper记录offset的间隔时间
    public long stateUpdateIntervalMs = 2000;

    public SpoutConfig(BrokerHosts hosts, String topic, String zkRoot, String id) {
        super(hosts, topic);
        this.zkRoot = zkRoot;
        this.id = id;
    }
}

KafkaConfig的定义如下:

public class KafkaConfig implements Serializable {
    //用以获取Kafka broker和partition的信息
    public final BrokerHosts hosts;
    //读消息的topic
    public final String topic;
    //消息者所用的client id
    public final String clientId;
    //每次从kafka读取的byte数
    public int fetchSizeBytes = 1024 * 1024;
    //Consumer连接kafka server超时时间
    public int socketTimeoutMs = 10000;
    //当服务器没有新消息时,消费者会等待这些时间
    public int fetchMaxWait = 10000;
    //consumer段的缓冲区大小
    public int bufferSizeBytes = 1024 * 1024;
    //数据发送的序列化和反序列化定义的Scheme
    public MultiScheme scheme = new RawMultiScheme();
    //是否强制从kafka中offset最小开始读数据,和startOffsetTime,一起用,默认情况下,为false,一旦startOffsetTime被设置,就要置为true  
    public boolean forceFromStart = false;
    //从何offset时间开始读,默认为最旧的offset
    public long startOffsetTime = kafka.api.OffsetRequest.EarliestTime();
    //每次kafka会读取一批offset存放在list中,当zk offset比当前本地保存的commitOffse相减大于这个值时,重新设置commitOffset为当前zk offset
    public long maxOffsetBehind = Long.MAX_VALUE;
    //如果所请求的offset对应的消息在Kafka中不存在,是否使用startOffsetTime
    public boolean useStartOffsetTimeIfOffsetOutOfRange = true;
    //多长时间统计一次metrics
    public int metricsTimeBucketSizeInSecs = 60;

    public KafkaConfig(BrokerHosts hosts, String topic) {
        this(hosts, topic, kafka.api.OffsetRequest.DefaultClientId());
    }

    public KafkaConfig(BrokerHosts hosts, String topic, String clientId) {
        this.hosts = hosts;
        this.topic = topic;
        this.clientId = clientId;
    }
}

影响初始读取进度的配置

在一个topology上线后,KafkaSpout从何处开始读消息呢,有几个配置影响读消息的位置,先罗列如下:

  • SpoutConfig中的id字段:如果想让一个topology从另一个topology之前的处理进度处读取数据,他们需要有相同的id
  • KafkaConfig的forceFromStart字段:如果该字段为true,在topology上线后会忽略之前id相同的topology的进度,重新从最早的消息处读取
  • KafkaConfig的startOffsetTime字段:默认为kafka.api.OffsetRequest.EarliestTime()开始读,也就是从Kafka中最早的消息开始处理。也可以设成kafka.api.OffsetRequest.LatestOffset,也就是最晚的消息开始读。也可以自己指定具体的值
  • KafkaConfig的maxOffsetBehind字段:这个字段对于KafkaSpout的多个处理流程都有影响。当提交一个新topology时,如果没有forceFromStart, 当KafkaSpout对某个partition的处理进度落后startOffsetTime对应的offset多于此值时,KafkaSpout会丢弃中间的消息,从而强制赶上目标进度.比如,如果startOffsetTime设成了lastestTime,那么如果进度落后超过maxOffsetBehind,KafkaSpout会直接从latestTime对应的offset开始处理。如果设成了froceFromStart,则在提交新任务时,始终会从EarliestTime开始读。
  • KafkaSpout的userStartOffsetTimeIfOffsetOutOfRange字段:如果设成true,那么当fetch消息时出错,且FetchResponse显示的出错原因是OFFSET_OUT_OF_RANGE,那么就会尝试从KafkaSpout指定的startOffsetTime对应的消息开始读。例如,如果有一批消息因为超过了保存期限被Kafka删除,并且zk里记录的消息在这批被删除的消息里。如果KafkaSpout试图从zk的记录继续读,那么就会出现OFFSET_OUT_OF_RANGE的错误,从而触发这个配置
每天进步一点点
Python进行.tif格式数据波段组合;多波段tif数据波段分离 Python进行.tif格式数据波段组合;多波段tif数据波段分离.tif格式数据波段组合多波段.tif数据波段分离 阔别已久,我又来了;啊啊啊…… 读了研究生,忙到天昏地暗(哈哈哈,这都是借口,主要是花了一定时间适应研究生生活) 这方面的内容我也主要是应用在遥感领域,我们知道在遥感应用中,大多数的图像数据格式为.tif格式的。进行波段组合使用ArcGIS里面的Composite Bands工具是可以实现的,波段分离也可以使用一些工具或巧妙的方法分开。但当你使用Python程序的话,就可以简化这个软件点击和 阅读详情

相关推荐

c语言【分糖果】2023蓝桥杯4124(枚举,递归,dfs)

但是这是不符合我们糖果刚好分完的条件的,我们应该往回退到上一层,也就是孩子6这层,然后j+1=3,孩子7分到3个第二种糖果,这也不符合我们糖果刚好分完的条件,然后就会再次回退到孩子6这里,然后j+1=4,让我们的孩子7获得5块第二种糖果,然后还是不符合糖果刚分完的条件,于是再一次退回到孩子6这里,然后就会有外循环i+1=1,j=1,孩子7分到1块第一种糖果1块第二块糖果......然后就是这样的不停地回溯,试探,直到把整棵树遍历一遍,并且记录所有的满足条件的组合。先放一下我的代码,我的代码超时啦救命!

weixin_74331419的博客 732

(六)storm-kafka源代码走读之PartitionManager

PartitionManager算是storm-kafka的核心类了,如今開始简单分析一下。还是先声明一下,metric部分这里不做分析。 PartitionManager主要负责的是消息的发送、容错处理,所以PartitionManager会有三个集合  _pending:尚未发送的message的offset集合, 是个TreeSet&lt;Long&gt;()fail...

weixin_34146805的博客 321

Cisco Firepower FMCv修改管理Ip方法

Cisco Firepower FMCv修改管理Ip方法

funnycoffee123的博客 1091

Storm集成Kafka中KafkaSpout配置参数释义

Storm集成Kafka中KafkaSpout配置参数释义 KafkaSpout构造: 涉及到两个类:       SpoutConifg、KafkaConfig、ZkHosts 一、       SpoutConfig: zkServers: KafkaSpout保存offset的zookeeper所在地址. 立出来这个属性是为了防止offset保存位置不在kafka集群中....

Simon的博客 7819

API安全攻防实战:从信息搜集到漏洞利用的完整路径

本文详细解析了API安全攻防实战的全过程,从信息搜集到漏洞利用,涵盖了渗透测试的核心技巧和工具使用。通过真实案例展示如何发现和利用API漏洞,如HTTP方法滥用、内容类型转换攻击等,并提供企业级防御策略和测试心得,帮助安全研究人员提升API安全防护能力。

weixin_30394981的博客 435

零基础学写《扫雷》游戏(Qt扫雷源码)

扫雷游戏是在windows系统中自带的游戏,他的游戏玩法其实很简单,20世纪初期电脑上没有啥游戏可以玩,所以扫雷游戏也算是当时是最常火爆的一个电脑游戏。以下文章详细介绍扫雷游戏的实现。实现语言为C++。

啊渊的专栏 1万+

Kafka ProducerConfig和ConsumerConfig配置

20.max.in.flight.requests.per.connection可以在一个connection中发送多个请求,叫作一个flight,这样可以减少开销,但是如果产生错误,可能会造成数据的发送顺序改变,默认5。13.fetch.max.wait.ms从Kafka拉取消息时,在不满足fetch.min.bytes条件时,等待的最大时间,默认500ms。11.reconnect.backoff.max.ms尝试连接到Kafka,生产者客户端等待的最大时间,默认1000ms。...

程序员一博 3941

Python 爬虫实战:爬取哔哩哔哩知识区,抓取高赞课程信息

哔哩哔哩(Bilibili)是一个广受欢迎的综合性视频社区,其中的知识区汇聚了大量优质的教育、科普、技术等课程内容。本文将指导读者如何使用 Python 爬虫技术从哔哩哔哩知识区抓取高赞课程信息,并进行数据分析。本文深入探究了利用 Python 爬虫技术从哔哩哔哩知识区抓取高赞课程信息的全流程。从前期的环境搭建、模拟登录,到核心的课程数据抓取、存储,再到后续的数据分析与可视化,都详细展开讲解并提供代码支持。通过此方法所获取的数据,能够助力创作者优化内容、用户发现优质课程、平台洞察用户需求。

u014481728的博客 1137

安装kafka和相关配置解析

1选择操作系统kafka是一个java应用程序,可以运行在很多系统上Windows, MacOS, Linux, 等一般都是Linux2安装java环境3安装zkzk存储的是metadata架构图如下Kafka已经用稳定的zk的3.4.6版本进行了广泛的测试,它可以从apache.org的http://bit.ly/2sDWSgJ上下载。单独的服务。

weixin_38738049的博客 1397

点云中概念:匹配、配准、融合

匹配,是寻找与一幅图相似的图像(不对寻找到的图像做矫正)。 配准,是寻找相似图像但是变形后的图像(需要做一些旋转之类的校正变换)。 融合,是多幅图像连接成一幅大图,视频集成中用的比较多。 1)匹配: 2)配准: 比如由于固定式激光雷达受测量方式的限制和被测物体集合形状的限制,固定的话一次只能扫描被测物体有限范围的点云数据(比如一个面??),这需要在多个视角下进行多次扫描(就是将激光雷达前后左右四个面都扫一下??对的),然而每个视角下得到点云数据都具有独立的坐标系,无法直接进行拼接(拼接就是将四个面

m0_37957160的博客 1万+

手把手教你学Simulink--使用Simulink进行双冗余电机驱动系统的故障切换验证

提高系统可靠性:当一个电机或其驱动器出现故障时,另一个可以立即接管,避免系统停机。增强安全性:对于一些关键任务的应用场景(如飞行控制),确保即使在硬件故障情况下也能维持基本操作能力。简化维护:允许在不影响系统正常工作的情况下进行维护和更换故障部件。确定可能发生的故障类型(如过流、欠压、温度过高),以及每种故障对应的条件。通过上述步骤,我们简要介绍了如何基于Simulink实现双冗余电机驱动系统的故障切换验证。

MHD0815的博客 448

springboot的kafka动态工具类(动态创建topic、监听和监听方法)

springboot下的kafka动态创建topic队列,kafkaListner监听容器相关的动态工具类,非常好用!

python_small_pan的博客 5681

谁还攥着旧的类加载器:Metaspace OOM 的元数据记账、类卸载条件与泄漏定位解析

MetaSpace区是JVM内存管理中的关键部分,负责存储类元数据。随着Java 8的推出,MetaSpace取代了PermGen区,但其灵活性也带来了新的挑战,尤其是在动态类加载和频繁类更新的场景下,容易导致MetaSpace内存溢出(OOM)问题。本文探讨了MetaSpace OOM的根本原因,包括类加载器泄漏、内存管理不当和GC效率低下等,并提供了一系列调优策略和解决方案,帮助开发者有效排查和防止此类问题的发生,确保应用程序的稳定性和高可用性。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 15万+

kafka 工具类(scala版)

object MyKafkaUtil { private val properties: Properties = PropertiesUtil.load("config.properties") val broker_list = properties.getProperty("kafka.broker.list") // kafka消费者配置 val kafkaParam ...

ITBOY_ITBOX博客 1156

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Kafka动态配置了解下?

什么是动态Broker参数配置? 在开始分享之前,我们先来复习一下设置 Kafka 参数,特别是 Broker 端参数的方法。 在 Kafka 安装目录的 config 路径下,有个 server.properties 文件。通常情况下,我们会指定这个文件的路径来启动 Broker。如果要设置 Broker 端的任何参数,我们必须在这个文件中显式地增加一行对应的配置,之后启动 Broker 进程,令参数生效。我们常见的做法是,一次性设置好所有参数之后,再启动 Broker。当后面需要变更任何参数时,我们

weixin_48606364的博客 977

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Kafka入门教程:第二部分 - 基本配置和使用

通过以上步骤,你已经掌握了Kafka的基本配置和使用方法。接下来,我们将深入探讨Kafka的高级功能和优化技巧,帮你更好地利用Kafka来处理大规模数据流。安装Kafka只是冰山一角,接下来是配置Kafka。但不用担心,我们会一步步来,帮你搞定这些配置。Kafka的核心在于消息的生产和消费。我们将使用内置的生产者和消费者来发送和接收消息。每个Kafka服务器需要一个唯一的ID。Kafka中的主题是消息的分类容器。接下来,我们将创建一个新的主题。你会看到生产者发送的消息实时出现在消费者的控制台上。

weixin_40726747的博客 617

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Kafka源码解读——kafka配置文件_Configs

Kafka源码解读——配置文件_Configs(间断持续更新......) 目录 Kafka源码解读——配置文件_Configs(间断持续更新......) Producer Configs配置 Consumer Configs配置 Broker Configs配置 Kafka Connect Configs配置 以下配置中没有的请查看官网原文:http://kafka.apache....

主要写大数据集群一线运维和学习工作经验 3656

Kafka集群配置config/server.properties

【代码】Kafka配置config/server.properties。

weixin_44943389的博客 897

kafka config参数配置简要说明

#kafka参数配置 #等待所有的replicas都响应后才返回响应,可靠性最高,但会降低吞吐率 acks=all #发生Retriable exceptions可重试异常时,重试发送消息次数,最大为Integer.MAX_VALUE(这些重试与客户端接收到发送错误时的重试没有什么不同。允许重试将潜在的改变数据的顺序) retries=0 #生成这批量发送的基本单位,默认16384Byte,即1...

卖辣椒也用券 4509

Kafka基础概念

1. 楔子 公司项目开发用到了kafka,可是某个菜鸟不会,于是不得不进行的为期一周的晚自习去恶补相关知识。 但是恶补来知识很零散,所以趁这次周末写一篇博客,总结一下得失,顺便查缺补漏。 2. Kafka 2.1 Kafka是什么 Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息...

Yuwen_forJava的博客 983

kafka配置参数简介

配置及参数说明 consumer的配置参数 #如果'enable.auto.commit'为true,则消费者偏移自动提交给Kafka的频率(以毫秒为单位),默认值为5000。 spring.kafka.consumer.auto-commit-interval = 5000; #当Kafka中没有初始偏移量或者服务器上不再存在当前偏移量时该怎么办,默认值为latest,表示自动将偏移重置为最新的偏移量 #可选的值为latest, earliest, none # earliest: 当各分区下有已

言午玉口才 5883

kafka Configs 中文版(部分重要的)

这个设置给出了批量延迟的上限:一旦我们得到了一个分区的batch.size值的记录,它将立即被发送,不管这个设置如何,但是如果我们在这个分区累积的字节数少于这个值,我们会在指定的时间内“逗留”,等待更多的记录出现。在设置enable.idempotence为false和max.in.flight.requests.per.connection大于1的同时允许重试,可能会改变记录的顺序,因为如果两个批次被发送到同一个分区,第一个失败并被重试,但第二个成功,那么第二个批次中的记录可能会先出现。

m0_67729411的博客 185

(二)storm-kafka源码走读之Config相关类走读

详细介绍了Storm-Kafka模块中Config的相关配置信息,就是扫盲的一篇介绍而已

iTer的专栏 5133

Kafka安装基础配置详解

1、下载地址 下载地址:Apache Download Mirrors 2、解压解压命令:tar –zxvf kafka_2.13-2.4.0.tgz 移动: cp -R kafka_2.13-2.4.0 /zjl/program/ 创建软链接: ln -s kafka_2.13-2.4.0/ /zjl/program/kafka解压后可使用 配置zookeeper集群参见: zooke...

希的博客 5686

SpringBoot集成kafka配置使用(一)

目录 1、pom文件的引入 2、kafkaConfig 3、消息的生产者(KafkaSender) 4、消息的消费者(KafkaReceiver) 5、yml配置文件 6、使用(so easy) 项目中原版使用的是rocketmq,由于客户那边用的是kafka。先把中间件更换长kafka,步入正题: 1、pom文件的引入 <!-- kafka --> <dependency> <groupId>org.

m0_54850467的博客 1965

Kafka 配置ConsumerConfig 详解

1.group.id 消费者所属消费组的唯一标识 2.max.poll.records 一次拉取请求的最大消息数,默认500条 3.max.poll.interval.ms 指定拉取消息线程最长空闲时间,默认300000ms 4.session.timeout.ms 检测消费者是否失效的超时时间,默认10000ms 5.heartbeat.interval.ms 消费者心跳时间,默认3000ms 6.bootstrap.servers 连接集群broker地址 7.enable.auto.com

Alice_qixin的博客 7684
上一篇: Eclipse 提示 @Override must override a superclass method 问题解决 remove@Override annotation
下一篇: storm-kafka编程
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值