- 博客(33)
- 收藏
- 关注
原创 Flink Kafka 生产者原理与实现
是连接 Flink 与 Kafka 的桥梁,其强大之处不仅在于高效写入能力,更在于与Flink Checkpoint 机制深度集成,通过两阶段提交 + Kafka 事务性 Producer,真正实现了端到端 Exactly-once语义。// Step 1: 配置 Kafka 生产者// Step 2: 构造 Schema// Step 3: 创建 Producer(EXACTLY_ONCE)schema,props,// 生产必备// Step 4: 添加到 stream。
2025-10-21 19:54:55
926
原创 MinIO与HDFS对比测试
在现代大数据与云原生架构中,MinIO(对象存储)与HDFS(Hadoop分布式文件系统)分别代表了两种主流的分布式存储范式:前者面向通用对象存储场景,后者专为批处理计算生态设计。两者在存储模型、一致性模型、性能特征、部署运维与成本结构等方面存在显著差异。本文基于详实的技术特性分析与实际测试数据,从架构设计、缺陷对比、存储方式、性能表现、扩容能力等维度对MinIO与HDFS进行系统性对比,旨在为不同业务场景下的技术选型提供科学决策依据。维度MinIO 优势HDFS 优势部署运维。
2025-10-21 19:46:44
1329
原创 Flink-Kafka 连接器的 Checkpoint 与 Offset 管理机制
关闭 Kafka 自动提交(启用 Checkpoint + Exactly-once 模式使用 RocksDB + 增量 Checkpoint 提升性能配置容错与外部化 Checkpoint 保障生产稳定永远不要手动管理 offset,除非你清楚所有后果。
2025-10-15 10:38:45
1155
原创 Flink 作业通用优化方案
✅生产环境核心原则:避免明显瓶颈:低效解析、数据倾斜、大窗口缓存是“性能杀手”状态必须有界:所有状态应配置TTL,禁止“无限增长”资源按需分配:并行度与数据源匹配,避免过度或不足监控先行:必须接入Prometheus+Grafana,监控:吞吐、延迟、状态大小、Checkpoint耗时、背压使用RocksDB处理大状态:禁用于生产Checkpoint必配// 30秒一次。
2025-10-14 11:40:28
582
原创 Hive 删除分区语句卡死问题
Hive 删除分区卡死的核心原因是锁竞争(删除需排他锁,查询占用共享锁),排查时需通过show locks定位锁的持有者,再根据业务场景选择“等待释放”或“手动解锁”。日常操作中需规范查询与删除的执行时机,优化 Hive 配置减少锁竞争,避免类似问题重复发生。
2025-10-13 21:24:45
885
原创 ES集群基于Reindex数据迁移方案
Reindex任务支持断点续传,若任务失败,重新执行相同命令即可从断点继续。:Reindex仅迁移文档数据,如需迁移索引设置和映射,需提前通过。:建议在业务低峰期执行迁移,减少对源集群的性能影响。确认输出结果中的索引是否为需要迁移的数据(如。权限,目标集群的elastic用户有。:确保源集群的elastic用户有。使配置生效(源集群无需重启)。
2025-10-10 15:57:37
817
原创 ClickHouse 配置优化与问题解决
调整延迟时间,确保所有副本都完成元数据同步。原因:小批量插入过于频繁,导致分区文件过多。解决:增加 JDBC 连接超时设置。或优化 SQL,减少数据处理量。原因:查询占用内存过大被中断。原因:单个查询超出内存限制。原因:字符串长度超过限制。解决:调整最大字符串长度。解决:调整全局内存限制。
2025-10-09 17:46:06
690
原创 微信公众号文章自动发布
本文介绍了微信公众号文章自动发布工具的实现方案,包括核心功能模块和关键实现细节。该工具通过Python脚本实现微信接口认证、图片处理、素材上传、草稿创建和文章群发等全流程自动化。重点解决了图片格式转换、大小压缩、透明通道处理等技术难点,并设计了临时文件管理、延迟清理等健壮性机制。文章详细阐述了各模块的实现思路,包括Access Token管理、图片处理策略、文件系统延迟处理等,最终封装为一键发布方法,为公众号运营者提供了高效的内容发布解决方案。
2025-09-30 14:57:40
2285
原创 LLM 全生命周期技术体系详解
【摘要】本文系统介绍了大型语言模型(LLM)全生命周期技术体系,涵盖训练、微调、推理和服务等核心环节。训练环节通过大规模数据预训练构建基础模型;微调环节采用适配器、提示微调等方法实现任务适配;推理环节注重低延迟、高吞吐的优化技术;服务环节提供规模化部署方案。各环节均详细阐述了技术原理、关键工具(如Megatron-LM、Unsloth、vLLM等)和典型应用场景,为LLM技术落地提供全面指导。
2025-09-26 11:45:30
889
原创 Trae:与AI结伴,开启编程新体验
Trae是一款强大的智能编程助手,它支持多种主流AI模型,如DeepSeek R1/V3、豆包大模型1.5等,并允许用户根据需求自由切换或导入自定义模型。这意味着开发者可以根据项目特点选择最适合的模型,从而快速提升编程效率和代码质量。
2025-03-15 16:57:59
833
原创 【Elasticsearch查询】查询环境
因此,在执行请求时,需要从所有shard中获得0到10的结果,对它们进行排序,然后返回结果,如果想确保结果正确的话。每个分片执行搜索并生成一个排序后的结果列表,该结果列表位于该分片的本地。所有其他选项都不能完全保证在搜索中使用任何特定的分片副本,对于一个变化的索引,这可能意味着重复的搜索可能会产生不同的结果,如果它们是在处于不同刷新状态的不同分片副本上执行的话。这个参数应该用来防止单个请求超载集群(例如,默认的请求会击中集群中的所有索引,如果每个节点的分片数很高,可能会导致分片请求拒绝)。
2024-02-29 20:23:10
1072
原创 【Elasticsearch管理】网络配置
如果在同一个主机上运行多个Elasticsearch实例,但希望Elasticsearch调整其线程池的大小,就像它只有一部分CPU一样,应该覆盖设置为所需的部分的处理器(例如,如果在一台16核的机器上运行两个Elasticsearch实例,请将处理器设置为8)。请注意,这是一个专家级的用例,其中涉及的内容远不止设置处理器设置,还有其他需要考虑的事项,如更改垃圾收集器线程的数量、将进程固定到内核等。fixed:fixed持有固定大小的线程来处理请求,使用一个队列(可选绑定)处理没有线程为其服务的挂起请求。
2024-02-29 17:31:43
2295
1
原创 【Elasticsearch索引】Rollover滚动、Shrink收缩、Split拆分索引
新索引的设置、映射和别名取自任何匹配的索引模板。另外,您可以在请求的主体中指定设置、映射和别名,就像create index一样。请求中指定的值将覆盖在匹配索引模板中设置的任何值。例如,下面的滚动请求将覆盖索引。},"index.number_of_shards": 1, //目标索引中的分片数。这必须是源索引中分片数量的一个因素。"index.codec": "best_compression" //最佳压缩仅在对索引进行新写操作时生效,例如将分片强制合并到单个段时。},
2024-02-28 17:32:11
1961
原创 【Elasticsearch索引】Recovery恢复索引
因为Lucene提交的开销太大,无法在每个单独的更改上执行,所以每个分片副本都有一个与之关联的事务日志,称为translog。对Lucene的更改只会在Lucene提交期间持久化到磁盘上,这是一个相对昂贵的操作,因此不能在每次索引或删除操作之后执行。更准确地说,如果设置为request, Elasticsearch只会在跨日志在主服务器和每个分配的副本上成功地同步并提交之后,向客户端报告索引、删除、更新或批量请求的成功。recovery命令是索引分片恢复的视图,包括正在进行的和已经完成的。
2024-02-28 17:15:21
2066
原创 【Elasticsearch索引】索引模板和索引别名
当指定时,针对指向多个索引的别名的所有索引和更新请求将尝试解析为一个索引,即写索引。如果没有指定写索引,并且别名引用了多个索引,那么就不允许写。没有显式地为索引设置is_write_index: true且只引用一个索引的别名,将使所引用的索引表现为写索引,直到引用了另一个索引为止。场景1:数据量非常大,需要进行索引生命周期管理,按日期划分索引,要求多个索引的Mapping一致,每次手动创建或者脚本创建都很麻烦。场景2:实际业务多个索引,想让多个索引中的相同名字的字段类型完全一致,以便实现跨索引检索。
2024-02-27 19:56:55
3543
原创 【Elasticsearch索引】索引基础操作
如果在已经有index.max_refresh_listeners(默认为1000)个请求中进入refresh= wait_for请求,则该请求将等待对该分片的刷新,则该请求的行为就好像刷新设置为true一样:它将强制刷新。这种快速的同步id比较(如果存在)在恢复或重启期间使用,以跳过该过程的第一个和最昂贵的阶段(有助于索引恢复速度的提高)。段是存储索引数据的索引中的内部存储元素,并且是不可变的。合并在不同的线程中运行,当达到最大的线程数时,进一步的合并将等待,直到有一个合并线程可用。
2024-02-27 11:37:10
1304
原创 【Elasticsearch管理】缓存机制
默认情况下,请求缓存将仅缓存size = 0时的搜索请求结果,因此将不缓存hits,但将缓存hits.total,aggregations, 和suggestions。查询缓存负责缓存查询的结果。如果你的查询使用的脚本,其结果是不确定的(例如,它使用一个随机函数或引用当前时间),你应该设置request_cache标志为false,以禁用该请求的缓存。当针对一个索引或多个索引运行搜索请求时,每个涉及的分片都在本地执行搜索,并将其本地结果返回到协调节点,该节点将这些分片级结果合并为一个“全局”结果集。
2024-02-26 17:46:21
1464
原创 【Elasticsearch管理】节点角色及发现机制
但是对于生产环境下的集群是不行的,需要将每台es进程绑定在一个非回环的ip地址上,才能跟其他节点进行通信,同时需要使用集群发现机制来跟其他节点上的es node进行通信。在启动时,或者在选择新的主节点时,Elasticsearch尝试连接到它列表中的每个种子节点,并与它们进行心跳连接,以查找其他节点并构建集群的完整图景。为了确保您的主节点是稳定的,并且不会受到压力,在较大的集群中,设置专用的主节点和专用数据节点是个好主意。如果你在运行一个Elasticsearch的节点,那么你有一个节点的集群。
2024-02-26 17:43:13
2160
原创 【Elasticsearch查询】深度查询
因此,在遍历过程中,排序顺序可能会根据索引的更新和删除而改变。如果切片的数量大于分片的数量,切片过滤器在第一次调用时非常慢,它的复杂度为O(N),内存消耗等于每切片N位,其中N是切片中的文档总数。在几个调用之后,应该缓存过滤器,随后的调用应该更快,但是您应该限制并行执行的切片查询的数量,以避免内存爆炸。由于切片的最大数量设置为2,所以两个请求的结果的并集等效于不切片的滚动查询的结果。滚动查询不是为了满足实时的用户请求,而是为了处理大量的数据,例如,为了将一个索引的内容重新索引到一个具有不同配置的新索引中。
2024-02-23 20:16:11
1556
原创 【Elasticsearch查询】精确查询
必须匹配的词的数量在每个文档中都是不同的,或者由最小应匹配字段控制,或者在每个文档中计算最小应匹配脚本。全文查询将在执行之前对查询字符串进行分词,而词项级查询将对存储在反向索引中的精确词项进行操作,并且执行前对只对具有normalizer属性的keyword字段词项进行规范化。与bool查询中的“NOT”子句不同,它仍然选择包含不需要的词语的文档,但会降低它们的总体得分。复合查询封装了其他复合查询或子查询,可以组合它们的结果和分数,改变它们的行为,或者从查询切换到过滤上下文。)和多字符通配符(*)
2024-02-23 19:43:29
1840
1
原创 【Elasticsearch管理】备份恢复
如果唯一需要的信息是存储库中的快照名称/ uuid以及每个快照中的索引,则可以将可选的布尔参数verbose设置为false,以对存储库中的快照执行更高效且更具成本效益的检索。由于快照是增量快照,因此仅复制存储库中尚未存在的Lucene段,因此stats对象包含快照引用的所有文件的总计部分,以及实际需要存储的那些文件的增量部分。索引快照进程是递增的。快照格式可以在主要版本之间更改,因此,如果在不同版本上的集群试图编写相同的存储库,那么由一个版本编写的快照可能对另一个版本不可见,存储库可能会被破坏。
2024-02-22 16:36:54
1506
1
原创 【Elasticsearch监控】集群查看
这个API返回基本的索引指标(分片数、存储大小、内存使用情况)和关于当前集群节点的信息(数量、角色、操作系统、jvm版本、内存使用情况、cpu和已安装的插件)。例如,任务管理、节点状态和节点信息都可以报告一组经过筛选的节点的结果,而不是所有节点的结果。响应提供集群名称、集群状态的总压缩大小(序列化以便在网络上传输时的大小)和集群状态本身,可以对其进行筛选,以只检索感兴趣的部分。返回的统计信息是在索引级别聚合的,包含初选和总聚合,其中初选仅是主分片的值,而total是主分片和复制分片的累计值。
2024-02-22 14:39:57
2494
1
原创 【Elasticsearch开发】Ingest Pipelines
管道是一系列处理器的定义,它们按照声明的顺序执行。description是一个特殊字段,用于存储有关管道所做工作的有用描述。processors参数定义了要按顺序执行的处理器列表。
2024-02-21 17:29:42
1263
1
原创 【Elasticsearch管理】分片分配
用户定义的元数据可以使用集群设置API存储和检索。这可以用于存储关于集群的不经常更改的任意数据,而不需要创建索引来存储这些数据。此数据可以使用任何前缀为cluster.metadata的键存储。用户定义的集群元数据不用于存储敏感或机密信息。任何存储在用户定义的集群元数据中的信息都可以被任何访问集群Get Settings API的人看到,并记录在Elasticsearch日志中。
2024-02-20 20:05:26
2626
原创 【Elasticsearch开发】配置约定
如果指定open,则通配符表达式将仅展开为打开的索引,如果指定closed,则通配符表达式将仅展开为关闭的索引。如果没有指定,那么通配符扩展将被禁用,如果指定了all,通配符表达式将扩展到所有索引(这等同于指定open,closed)。例如,如果指定了通配符表达式foo*,并且没有以foo开头的可用索引,那么根据这个设置,请求将失败。对于多搜索、多获取和批量请求,用户可以选择在URL中指定索引,并在请求体中的每个请求上指定索引。控制是否忽略任何指定的索引不可用,包括不存在的索引或关闭的索引。
2024-02-20 19:55:34
1005
原创 Prometheus 自定义指标上报
Prometheus是一个开源系统监控和警报工具包,最初是在SoundCloud上构建的。自从它在2012年成立以来,许多公司和组织已经采用了Prometheus,并且这个项目有一个非常活跃的开发人员和用户社区。它现在是一个独立的开源项目,并且独立于任何公司进行维护。
2023-03-22 14:03:06
1455
原创 【Elasticsearch开发】文档操作
Elasticsearch中的每个索引都被划分为分片,每个分片可以有多个副本。这些副本称为复制组,在添加或删除文档时必须保持同步。如果我们不这样做,从一个副本读取将导致非常不同的结果从另一个。保持分片副本同步并从其中读取数据的过程称为数据复制模型。Elasticsearch的数据复制模型是基于主备模型的,并且在Microsoft Research的PacificA论文中进行了很好的描述。该模型基于从复制组中获得一个副本充当主分片。其他副本称为副本分片。主分片用作所有索引操作的主入口点。
2023-02-28 19:21:04
2668
原创 Flink Kafka Patition 分配问题
当Flink消费多个Topic的时候,由于分配算法是针对单个Topic的分区数,因此在对多个Topic进行分配的时候会造成重复分配,就会有几个subtask处于空闲当中,造成subtask数据倾斜。
2023-02-19 22:37:30
580
原创 【Elasticsearch索引】ReIndex重建索引
就像update_by_query一样,reindex获取源索引的快照,但是它的目标必须是一个不同的索引,这样就不太可能出现版本冲突。比修改值大的requests_per_second将立即生效,而修改值小的requests_per_second将在完成当前批处理后生效。除了像pretty这样的标准参数外,Reindex还支持refresh、wait_for_completion、wait_for_active_shards、timeout、scroll和requests_per_second。
2022-10-08 18:57:32
6822
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅