- 博客(2443)
- 资源 (69)
- 问答 (17)
- 收藏
- 关注

原创 Flink 高分笔记
这篇博客文章总结了Flink流计算相关的基础知识和实践指南。主要内容包括:1) 流计算基础概念,如事件时间、Watermark机制、Exactly-once语义;2) Flink基础操作,如安装部署、程序结构、并发设置、故障恢复;3) DataStream API核心功能,包括时间概念、窗口计算、状态管理、双流Join等;4) Table API与SQL的使用方法和工作原理。文章提供了丰富的技术文档链接,涵盖了Flink从入门到进阶的各个方面,既有理论讲解也有实践案例,是一个系统的Flink学习资源合集。
2025-06-22 22:50:13
1028
原创 kafka 3.9.1 Error: VM option ‘UseG1GC‘ is experimental and must be enabled via -XX:+UnlockExperiment
摘要: Kafka集群启动时因JVM参数冲突报错,提示UseG1GC是实验性功能需通过UnlockExperimentalVMOptions解锁。该问题源于Kafka新版默认配置与低版本JDK8的兼容性问题。解决方案包括:1)升级Java版本(推荐);2)临时修改Kafka启动脚本,在kafka-run-class.sh中添加-XX:+UnlockExperimentalVMOptions参数解锁G1GC功能。(149字)
2025-08-20 23:05:22
401
原创 实战 | ZooKeeper 3.8.4 伪分布式模式安装与启动
本文详细介绍了ZooKeeper伪集群的安装与配置步骤。主要内容包括:通过下载tar包安装ZooKeeper 3.8.4版本;配置多实例的zoo.cfg文件,设置不同端口实现单机伪集群;创建myid文件标识不同节点;配置环境变量;编写启动/停止脚本管理集群。关键点在于调整配置文件中的端口号和dataDir路径,确保各实例配置唯一性,并通过myid文件区分节点。最后给出了启动集群和验证状态的脚本示例,帮助用户快速搭建本地测试环境。
2025-08-17 22:45:48
565
原创 实战 | Zookeeper 3.8.4 Problem starting AdminServer on address 0.0.0.0, port 8080
摘要: Zookeeper 3.8.4集群部署时出现AdminServer端口冲突,因默认8080端口被占用导致启动失败。分析发现伪分布式部署中三个节点未显式配置admin.serverPort,均尝试绑定同一端口。解决方案是为每个节点的配置文件(zoo1.cfg/zoo2.cfg/zoo3.cfg)分别指定唯一端口(如2081/2082/2083),避免冲突。此问题在单机多实例部署时需特别注意端口唯一性。
2025-08-17 22:32:53
353
原创 优化 | Hive 简单查询 FetchTask
摘要: Hive的FetchTask机制通过绕过MapReduce/Tez/Spark引擎,直接从存储层读取数据,显著优化简单查询性能。核心配置参数hive.fetch.task.conversion(默认more)控制其行为,支持none(禁用)、minimal(仅基础查询)和more(扩展支持列筛选和过滤)。配合hive.fetch.task.conversion.threshold(默认1GB)可避免大数据量误触发。通过EXPLAIN查看Stage-0可确认是否启用FetchTask。该机制将简单查询
2025-08-16 19:00:19
604
原创 优化 | Hive 本地执行模式
Hive本地执行模式是一种优化小数据查询性能的轻量级方案。当满足输入数据量小于128MB且任务数少于4个时,Hive可自动在单机执行查询,避免了启动分布式MapReduce作业的系统开销。通过配置hive.exec.mode.local.auto等参数可启用该模式,测试显示本地模式查询耗时仅7.5秒,而远程模式需要89秒。本地模式特别适合处理小规模数据查询,能显著减少资源占用和执行时间。该功能自Hive 0.7.0版本引入,可通过临时SQL设置或修改hive-site.xml实现永久配置。
2025-08-14 23:29:30
806
原创 原理解析 | Hive 从 GROUP BY 查询看 MapReduce 执行全流程
本文通过分析Hive执行GROUP BY查询的MapReduce过程,展示了SQL到MapReduce作业的转换机制。以一个用户行为表为例,解析了计算不同行为类型数量的查询执行计划。执行过程分为两个Stage:Stage-1完成MapReduce作业(包括表扫描、分组聚合和结果输出),Stage-0负责最终结果获取。执行计划详细展示了每个阶段的算子操作(如TableScan、Select、GroupBy等)及数据流转过程,揭示了Hive如何将SQL逻辑转化为分布式计算任务。该案例帮助我们理解Hive查询优化
2025-08-12 23:29:13
919
转载 Apache Paimon 实时数据湖: Streaming Lakehouse 的存储底座
Apache Paimon作为实时数据湖存储底座,支持流计算3.0架构,通过CDC实时入湖实现高效数据更新。相比传统Hive数仓,Paimon采用主键表+Tag机制,提供实时查询、离线视图和增量查询能力,显著降低存储成本。其LSM文件复用特性可实现数十倍存储优化,同时支持Flink双流Join、Lookup Join和Partial Update等多种数据打宽方案。Paimon已形成包含83+贡献者的繁荣生态,兼容Flink、Spark等多种计算引擎,并持续扩展外键打宽等能力,为实时湖仓场景提供灵活高效的解
2025-08-07 23:43:59
968
转载 Apache Paimon 在抖音集团多场景中的优化实践
摘要 抖音集团采用Lambda架构进行实时数仓建设,存在维护成本高、计算口径难对齐等问题。通过引入Apache Paimon流式数据湖技术,优化了游戏视频指标上卷和财经多流拼接两个典型场景。在游戏场景中,Paimon作为维表存储,实现了流批一体开发模式,提高了数据新鲜度并解决了乱序问题;在财经场景中,通过多流拼接构建完整用户交易链路,支持实时OLAP查询。方案显著降低了开发维护成本,提升了数据处理效率和查询能力,为实时数仓建设提供了新思路。Paimon的序列字段、变更日志生成等特性在解决实际问题中发挥了关键
2025-08-04 00:00:28
542
原创 Hive 3.1.3 java.lang.NoSuchMethodError: com.google.common.base.Preconditions.xxx
摘要: Hive 3.1.3初始化时出现NoSuchMethodError异常,原因是Guava版本冲突(Hive依赖19.0,Hadoop 3.2.1依赖27.0)。解决方案是统一使用Hadoop的Guava 27.0版本:删除Hive的guava-19.0.jar,将Hadoop的guava-27.0-jre.jar复制到Hive的lib目录下,重新执行初始化命令即可解决。 关键词: Hive、Guava、版本冲突、NoSuchMethodError、解决方案
2025-08-03 22:24:23
278
转载 Apache Paimon:Streaming Lakehouse is Coming
本文介绍了数据分析架构从Hive到Lakehouse的演进过程。Lakehouse架构具有计算存储分离、冷热数据分层、操作灵活、查询速度快等优势,并能将时效性提升至分钟级。Flink是降低时效性的核心引擎,但现有Lakehouse与Flink实时数仓存在割裂问题。文章重点介绍了Apache Paimon这一新型流式数据湖格式,它专为流更新设计,支持Flink和Spark引擎,延迟仅1-5分钟,可实现CDC更新入湖、Partial-Update等场景,简化了流计算链路。Paimon社区发展迅速,已成为生产可用
2025-07-31 22:59:23
597
转载 Apache Fluss:面向实时分析设计的下一代流存储
当前业界呈现出一个显著的趋势,即大数据的处理正在从离线模式转向实时化。我们可以观察到,多个行业和应用场景都在进行实时化的演进。例如,互联网、车联网和金融等领域都正通过挖掘实时数据来提升业务价值。在技术方面,大数据计算架构经历了显著的演变。从最初的 Hive 传统数据仓库,到引入 Lakehouse 湖仓架构,再到目前国内流行的 Paimon 流式湖仓架构,这些演进的核心驱动力在于提升业务的时效性。从传统的 T+1 天模式,逐步缩短到 T+1 小时,再到 T+1 分钟。
2025-07-29 23:58:21
60
翻译 原理解析 | Hadoop 2.x HDFS 架构
HDFS(Hadoop分布式文件系统)是一个高容错、高吞吐量的分布式文件系统,专为大数据处理设计。其核心架构包括主节点NameNode(管理文件系统元数据)和从节点DataNode(存储实际数据块)。HDFS采用机架感知的副本放置策略确保数据可靠性,支持一次写入多次读取的简单一致性模型,并优先将计算任务调度到数据所在节点以提升效率。系统启动时通过安全模式进行数据块校验,使用FsImage和EditLog持久化元数据变更。HDFS适用于海量数据存储场景,可在低成本硬件上实现跨平台部署。
2025-07-19 22:12:14
71
原创 原理解析 | Hadoop HDFS 剖析文件写入
本文详细描述了HDFS文件写入过程和副本放置策略。写入过程涉及客户端通过DistributedFileSystem创建文件,数据被分块写入由DataNode组成的复制管线,并采用确认队列机制确保数据可靠性。当DataNode故障时,系统会自动处理确保数据完整性。副本放置策略综合考虑可靠性、读写带宽和负载均衡,默认策略将首个副本放在客户端节点,第二个副本置于不同机架,第三个副本在同一机架,其余随机分布。这种设计既保证了数据高可用性,又优化了读写性能。
2025-07-18 22:29:04
42
转载 Flink 1.9 Table API & SQL TableEnvironment 如何选择
本文详细介绍了Flink 1.9中的5种TableEnvironment及其适用场景。TableEnvironment是Table & SQL程序的入口,主要职能包括对接外部系统、表管理、SQL执行等。在Flink 1.9中,保留了1个TableEnvironment接口、2个BatchTableEnvironment和2个StreamTableEnvironment接口,分别支持Java和Scala API。文章对比了不同TableEnvironment在作业类型、API支持等方面的区别,并通过代
2025-07-14 23:23:38
50
翻译 原理解析 | 深入理解 Apache Flink SQL 动态表的持续查询
Apache Flink通过Table API和SQL为流处理提供统一的关系型接口,其核心创新在于动态表(Dynamic Tables)概念。动态表持续更新并可像常规表一样查询,实现流批统一语义。Flink的关系API将流数据转换为动态表,执行连续查询后转回数据流,支持窗口聚合、状态处理等复杂操作。当前版本(2017)已支持基本查询,未来将扩展更新结果功能,以覆盖更多流分析场景。这种设计使SQL成为流处理的标准语言,降低技术门槛,同时保持Flink的高吞
2025-07-07 23:28:19
89
原创 原理解析 | 深入理解 Apache Flink 数据流类型和转换关系
Flink提供了多种数据流类型来实现流批处理统一编程模型。核心数据流类型包括: DataStream:基础并行流,支持map、filter等逐条转换操作 KeyedStream:通过keyBy分组后的数据流,可访问keyed状态 WindowedStream:基于key分组和时间窗口的流,支持窗口聚合 JoinedStreams/CoGroupedStreams:双流join操作,基于窗口实现 ConnectedStreams:连接异构双流并共享状态,不同于union操作 这
2025-06-29 13:10:24
967
翻译 原理解析 | 深入了解 Apache Flink 1.10 TaskManager 内存管理改进
Apache Flink 1.10对内存模型进行了重大优化,提供了更灵活的内存配置选项。文章介绍了Flink的Task Manager内存组成,包括JVM Heap和Off-Heap内存,以及用户代码和框架如何利用这些内存。新版提供了三种内存配置方式:总进程内存、总Flink内存以及细粒度控制Task Heap和Managed Memory。文章还探讨了比例分配内存的方法,并给出了控制容器内存限制的实用建议,如调整RocksDB状态和JVM参数等。这些改进使Flink在容器化环境中运行更加稳定高效。
2025-06-23 23:10:57
87
翻译 原理解析 | 深入了解 Apache Flink 网络栈 II:监控、指标和处理背压
在前面的章节中,我们讨论了如何监控 Flink 的网络栈,主要涉及识别反压:发生的位置,发生的源头,以及(可能)发生的原因。可以通过两种方式来识别:对于简单的场景和调试会话,使用反压监测器;对于持续监控、更深入的分析和更少的运行时开销场景,使用 Flink 的任务和网络栈指标。反压可能由网络层本身引起,但在大多数情况下,是由高负载下的某些子任务引起的。可以通过分析上述指标来区分这两种场景。我们还提供了一些关于监视资源使用情况以及追踪从数据源到数据汇网络延迟的手段。
2025-06-22 22:35:20
70
转载 原理解析 | 深入了解 Apache Flink 的网络栈
原文:Flink 的网络栈是组成模块的核心组件之一,也是每个 Flink 作业的核心部分。它连接了 TaskManager 的各个子任务(Subtask),因此,对于 Flink 作业的性能(包括吞吐量和延迟指标)都至关重要。与 TaskManager 和 JobManager 之间通过基于 Akka 的 RPC 通信的控制通道不同,TaskManager 之间的网络栈依赖于 Netty 的低级 API。这篇博文是关于网络栈系列文章中的第一篇。
2025-06-22 15:34:54
70
转载 Flink Kafka Connector 实现机制简析
Flink Kafka Connector由Consumer和Producer两部分组成,通过Checkpoint机制实现Exactly-Once语义。Consumer通过KafkaFetcher线程和Handover队列异步获取数据,并定期保存分区和偏移量状态。Producer基于TwoPhaseCommitSinkFunction实现两阶段提交协议:preCommit阶段预提交数据,checkpoint完成后正式提交事务。这种机制使Flink能在
2025-06-15 21:52:37
77
原创 Flink 从 Savepoint 备份中启动作业
Apache Flink的Savepoint功能支持流处理程序的零停机升级、状态迁移、版本回滚等场景,显著优于其他流处理器。通过bin/flink savepoint手动触发Savepoint并指定存储路径,或从Savepoint恢复作业(bin/flink run -s)。示例展示了从Kafka消费单词并统计频率的作业,启动作业后手动触发Savepoint,记录消费位点和状态,后续可通过Savepoint恢复作业状态并继续处理。流程包括启动作业、触发Savepoint(保存状态和偏移量)及从Sav
2025-06-14 21:36:23
812
原创 Flink DataStream Hadoop is not in the classpath
本地运行Flink程序时出现 UnsupportedFileSystemSchemeException 异常,提示无法支持HDFS文件系统。原因是Flink需依赖Hadoop客户端实现HDFS支持。解决方法是在pom.xml中添加hadoop-client依赖(版本需匹配集群),如2.10.1版本。该问题常发生于代码中使用HDFS路径但未配置Hadoop依赖的情况。
2025-06-14 14:28:54
431
转载 Flink 1.13 State Backend 优化与生产实践
Flink 1.13版本在State Backend方面进行了多项重要改进:1)引入State访问性能监控功能,可通过采样记录延迟数据;2)实现Savepoint格式统一,支持不同State Backend类型间的切换;3)将状态存储和检查点概念分离,API设计更清晰;4)优化RocksDB的分区索引功能,显著提升内存受限场景性能;5)默认配置调整,如异步检查点和多线程传输。此外,持续优化RocksDB内存管控机制,通过统一管理Write Buffer和Block Cache来避免内存溢出,并改进小文件写入
2025-06-08 13:41:32
784
原创 Hive 实战:NULL 的隐身术陷阱
Hive SQL中NULL值在不等式比较中的陷阱解析 摘要:Hive开发中,NULL值在不等式比较(!=或<>)中的特殊行为是一个常见陷阱。NULL不是值而是未知标记,任何与NULL的比较结果都是NULL而非TRUE/FALSE。文章通过销售数据案例演示,当使用region != 'North'条件时,NULL区域的数据会被意外过滤。解决方法包括使用OR IS NULL或COALESCE函数。此外还分析了NULL在运算、IF、CASE WHEN、HAVING和聚合函数中的特殊表现,强调正确处理N
2025-06-07 09:35:18
876
原创 Flink 源码解读 Kafka Connector Source 如何指定启动模式来确定消费位点
启动模式...启动模式 (StartupMode)说明EARLIEST从最早偏移量 Offset 开始LATEST从最晚偏移量 Offset 开始TIMESTAMP从指定时间戳开始的偏移量 Offset 开始从 Zookeeper/Kafka Brokers 中找到已提交的分组偏移量 Offset 开始指定的偏移量 Offset 开始状态恢复优先级若作业从检查点/Savepoint恢复,启动模式会被忽略,Flink 始终优先使用状态中保存的消费位点Offset。的回退行为。
2025-05-31 23:09:18
909
原创 Apache StreamPark 实战:安装部署与入门
StreamPark 2.1.5安装指南:首先确保Java 1.8+、Scala 2.12+等环境准备就绪,从官网下载并解压安装包。默认使用H2数据库,如需切换MySQL需修改config.yaml配置,初始化数据库脚本并添加MySQL驱动到lib目录。配置文件可调整Hadoop用户、Kerberos认证等参数。安装包包含启动脚本、配置文件及数据库升级脚本,支持Flink作业部署到Yarn/Kubernetes环境。创建软连接便于后续升级维护。
2025-05-24 11:47:13
706
转载 Flink DataStream Aysnc IO 实现原理
Flink 的 Async I/O 功能旨在解决流计算系统中与外部系统交互时的网络延迟问题。通过异步模式,系统可以并发处理多个请求和回复,避免同步访问中的阻塞等待,从而提高吞吐量和降低延迟。Flink 提供了简洁的 API,支持有序和无序两种输出模式,并通过 AsyncWaitOperator 实现异步操作。AsyncWaitOperator 内部由 StreamElementQueue 和 Emitter 组成,分别负责管理未完成的请求队列和发送完成的消息。Flink 还通过不同的队列实现方式,确保了消息
2025-05-19 23:23:17
97
原创 Flink DataStream 实战:通过 JDBC Connector 写入 MySQL
本文介绍了如何在 Flink 1.13.5 中使用 JDBC Connector 将 DataStream 数据实时写入 MySQL 数据库。首先,需要在项目中添加 Flink JDBC Connector 和 MySQL JDBC 驱动程序的依赖。接着,创建了一个 MySQL 表 tb_user_active 用于存储用户活跃数据。文章详细剖析了 JdbcSink 的核心组件,包括 SQL 语句、JDBC 语句构建器、执行控制参数和数据库连接参数,并提供了完整的 JdbcSink 示例代码。通过这些步骤,
2025-05-18 18:49:46
1293
原创 Flink DataStream 实战:集成 Bahir Redis Connector
本文探讨了如何在大数据实时处理场景中使用 Apache Flink 与 Redis 进行高效数据交互。通过 Redis Connector,Flink 能够实现低延迟的数据写入,适用于实时缓存、状态存储等场景。文章详细介绍了技术选型、环境准备、核心实现步骤,包括数据模型定义、RedisMapper 实现、连接池配置以及 Redis Sink 的构建。此外,还提供了单机、哨兵和集群模式下的配置示例,帮助开发者在不同部署环境中实现 Flink 与 Redis 的无缝集成。通过代码实践和调优技巧,本文为高效处理实
2025-05-11 21:52:19
833
原创 Redis 实战:安装与启动
在安装 Redis 前,应选择稳定版本(次版本为偶数)进行开发和生产环境使用。当前最新稳定版本为 6.0.6,可通过官网或中文官网下载。安装步骤包括解压缩文件到指定目录、创建软连接以便升级、配置环境变量以及编译和安装 Redis。安装成功后,可通过直接运行 redis-server 启动 Redis,或通过配置文件启动以提供更大的灵活性。启动后,可以使用 redis-cli 命令行客户端进行交互,并通过 SHUTDOWN 命令正确停止 Redis,以避免数据丢失。
2025-05-11 12:57:15
1027
原创 ClickHouse 实战: 在 Java 中使用 JDBC 驱动进行基本操作
ClickHouse 作为一款高性能的 OLAP 数据库,近年来在 Java 生态中的应用越来越广泛。本文将详细介绍如何使用进行连接和基本 CRUD 操作。
2025-04-21 23:33:27
975
原创 Hive SQL 中的断点分组技术详解
断点分组(Breakpoint Grouping)是一种针对时间序列或状态连续性数据的分析技术,尤其适用于处理用户行为日志、设备状态记录等场景。在 Hive SQL 中,由于其分布式计算特性,断点分组的实现需要兼顾性能与逻辑简洁性。本文将深入探讨 Hive 中该技术的核心原理、多种实现方案、适用场景及优化策略。
2025-03-07 23:27:34
416
原创 DolphinScheduler 实战:使用 Docker Compose 部署 DolphinScheduler 集群
本文将详细介绍如何使用 Docker Compose 部署 Apache DolphinScheduler。如果你已经有在运行中的数据库或者 ZooKeeper 且不想启动新的服务,可以使用这个方案在沿用已有的 PostgreSQL 和 ZooKeeper 服务前提下来启动 DolphinScheduler 各服务。本文将从配置文件解析、部署步骤、部署后验证等方面展开,帮助您快速上手 DolphinScheduler。
2025-03-05 23:17:38
1849
2
apache-mahout-distribution-0.11.1-src
2015-11-30
log4j-1.2.17
2015-11-30
LINUX内核设计与实现
2015-12-14
JavaEE企业应用实战-Struts2+Spring3+Hibernate整合开发
2015-12-17
Android技术内幕.系统卷
2015-12-17
Android高级编程
2015-12-17
Android开发精要
2015-12-17
重构-改善即有代码的设计
2015-12-14
Mahout算法解析与案例实战
2015-12-16
apache-maven-3.3.9-bin
2015-11-30
算法艺术和信息学竞赛
2015-12-14
Better bitmap performance with Roaring bitmaps
2023-03-06
美团外卖离线数仓建设实践
2023-02-19
log4j所需jar包
2016-01-20
Hadoop实战中文版
2015-12-25
Spring-Jar-4.2.4
2016-01-28
Apache Spark源码剖析
2016-11-12
Android开发秘籍
2015-12-17
大型网站技术核心原理与案例分析
2015-12-25
Shell脚本学习指南
2016-05-28
Android应用开发揭秘
2015-12-17
Redis 入门指南
2017-06-02
精通Spring
2016-02-07
Hive Range Between 结果错误问题
2023-02-28
Storm Trident 抛异常不重发
2018-11-23
hive SERDEPROPERTIES 实现正则过滤
2018-06-05
Flink 关于窗口Window的问题
2018-01-17
Hive 运行SQL 重定向文件 输出WARN日志
2017-06-13
Hadoop Distcp报错 队列问题
2017-01-17
Hive Join 失败
2016-11-28
Hive 查询问题
2016-09-07
Hive LOAD DATA 错误
2016-07-23
[ElasticSearch] 中文字符串精确搜索 term 搜不到结果
2016-07-05
mysql group by 统计问题
2016-06-17
大型分布式网站架构的演进
2016-05-16
ubuntu IntelliJ Idea设置快捷方式问题
2016-03-08
罗技键盘 k380 连接上 没有任何的反应?
2016-03-06
Maven archetype:generate报错
2016-01-25
Log4j问题
2016-01-16
Java Stringbuilder调用append()方法报错
2015-12-20
nosql开放性问题
2015-12-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人