自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 收藏
  • 关注

原创 Spark 运行架构及相关概念

Spark 框架的核心是一个计算引擎,整体来说,它采用了标准的 master-slave 结构。上图中的 Driver 表示 master ,负责管理整个集群中的作业任务调度;Executor 则是 slave,负责实际执行任务;

2025-12-11 16:40:41 860

原创 Java ConcurrentHashMap 简介

在 JDK1.7 中 ConcurrentHashMap 的底层是 Segment 数组 + HashEntry 数组 + 链表。如下图所示:ConcurrentHashMap 为了提高本身的并发能力,在内部采用了一个叫做 Segment 的结构,一个 Segment 其实就是一个类 Hashtable 的结构,Segment 内部维护了一个链表数组每个 Segment 继承 ReentrantLock,作为独立的锁,默认 16 个 Segment 最大并发 16。

2025-12-09 22:10:08 558

原创 Java HashMap、Hashtable、HashSet、TreeMap 之间的区别

HashSet 底层是基于 HashMap 实现的,除了 clone()、writeObject()、readObject()是 HashSet 自己实现的,其他方法都是直接调用 HashMap 中的方法。这些方法都是基于红黑树数据结构的属性实现的,红黑树保持平衡状态,从而保证了搜索操作的时间复杂度为 O(log n),这让 TreeMap 成为了处理有序集合搜索问题的强大工具。综上所述,相比于 HashMap,TreeMap 主要多了对集合中的元素根据键排序的能力以及对集合内元素的搜索能力。

2025-12-09 17:28:20 777

原创 HDFS 扩容缩容

NameNode 格式化是初始化 HDFS 文件系统的过程,它会创建新的文件系统镜像(fsimage)和编辑日志(edit logs),并设置 NameNode 的存储目录。注意:格式化会删除所有现有的数据,因此只能在全新的安装或确定要清除所有数据时执行。注意:在 HA 设置中,通常需要在一个 NameNode 上格式化,然后将格式化产生的元数据复制到其他 NameNode,或者通过共享存储使得其他 NameNode 可以访问相同的元数据。

2025-12-08 16:33:05 719

原创 数据仓库建模

拉链表,记录每条信息的生命周期,一旦一条记录的生命周期结束,就重新开始一条新的记录,并把当前日期放入生效开始日期。如果房前信息至今有效,在生效日期中填入一个极大值(如 9999-12-31)。

2025-12-08 15:58:29 850

原创 Scala 泛型

Scala 和 Java 一样,类、特质、方法都支持泛型。泛型就是定义类、方法时不用指定具体数据类型,在使用时才传入具体适用类型,这样的好处就是支持多类型的复用。

2025-12-04 23:26:24 649

原创 Flink 状态一致性

简单来说,一致性其实就是结果的正确性。对于分布式系统而言,强调的是不同节点中相同数据的副本应该总是“一致的”,也就是从不同节点读取时总能得到相同的值;对于事务而言,是要求提交更新操作后,能够读取到新的数据。

2025-11-25 23:10:59 918

原创 MySQL 索引

索引是一种用于快速查询和检索数据的数据结构,其本质可以看成是一种排序号的数据结构。MySQL 使用 B+ 树作为索引结构。

2025-11-24 21:24:03 867

原创 Minor GC 和 Full GC

Minor GC(次要垃圾回收)是指 JVM 只对新生代进行垃圾回收的过程。它是 JVM 中最频繁发生的 GC 类型。

2025-11-24 17:30:29 48

原创 Java 垃圾回收

启动一个java程序时,一个虚拟机实例开始诞生,程序关闭的时候,虚拟机实例也随之消亡。

2025-11-24 17:29:11 33

原创 Spark 数据倾斜解决方案

Spark 中的数据倾斜问题主要指 shuffle 过程中出现的数据倾斜问题,是由于不同的 key 对应的数据量不同导致的不同 task 所处理的数据量不同的问题。

2025-11-24 11:32:59 271

原创 Flink Checkpoint 和 Spark Checkpoint 的区别

更像一个“它主要目的是,避免因链路过长导致的性能问题或 StackOverflowError。它是一个** coarse-grained(粗粒度)** 的、的、的容错机制。:是一个“它是 Flink,用于在发生故障时,将整个分布式数据流状态恢复到一致性的检查点,实现或 At-Least-Once 语义。它是一个的、的、的容错机制。简单来说,Spark Checkpoint 是为了解决 RDD 带来的内部问题,而 Flink Checkpoint 是对外提供容错保证的核心特性。

2025-11-23 22:46:25 1011

原创 Spark Streaming 简介

特性DStream (微批次)编程模型基于 RDD 的低级 API基于 DataFrame/Dataset 的高级声明式 APIAPI 级别较低级,需手动处理状态、窗口较高级,内置对事件时间、窗口、水位线的支持性能优化无自动优化利用 Spark SQL 的 Catalyst 优化器和 Tungsten 执行引擎延迟秒级(微批次)可达毫秒级(微批次),还有更低延迟的连续处理模式语义保证At-least-once 或 exactly-once(需精心设计)端到端的语义学习曲线。

2025-11-23 22:20:47 875

原创 Spark SQL 简介

Spark SQL 是 Spark 用于结构化数据处理的模块,对于开发人员来讲,Spark SQL 可以简化 RDD 的开发,提高开发效率,且执行效率非常快,所以实际工作中,基本上采用的就是 Spark SQL。Spark SQL 为了简化 RDD 的开发,提高开发效率,提供了两个编程抽象,类似 Spark Core 中的 RDD。即 DataFrame 和 DataSet。

2025-11-23 21:51:25 768

原创 使用机器学习检测 DGA 域名 — SVM

DGA 是 Domain Generation Algorithm(域名生成算法)的简称,是指使用主控端和被控端协商好的一种基于随机算法的域名生成协议,简单来说就是生成一个随机字符串来作为域名并进行注册,将其作为 C&C 服务器的域名并不定时经常性更换。由于具备强随机性,短时效性,通过 DGA 生成的域名往往在查杀上更具被难度。

2025-11-23 15:51:39 276

原创 Spark 部署模式

所谓 Local 模式,就是不需要其他任何节点资源就可以在本地执行 Spark 代码的环境,一般用于教学、调试、演示等。

2025-11-20 23:16:29 1094 1

原创 Kafka 生产问题——Flink 消费超时

控制台消费者的“成功”是表面现象,它只关心能不能读;Flink 是“分布式状态引擎”,启动时需要 Kafka 的 metadata + offset + 分区 leader + 可用副本全部健康,才能正常启动。所以,控制台能消费 ≠ Kafka 一切正常。Flink 报错才是系统级信号,说明 Kafka 某个组件或分区状态存在实际异常。

2025-11-18 16:39:39 778

原创 Hive 简介

Hive 一个基于 Hadoop 的数据仓库,适用于一些高延迟性的应用(离线开发),可以将存储在 Hadoop 文件中的结构化、半结构化数据文件映射为一张数据库表,并基于表提供类似 SQL 的查询模型,称为 Hive 查询语言(HQL),用于访问和分析存储在 Hadoop 文件中的大型数据集。Hive 的核心是将 HQL 转换为 MapReduce 程序,然后将程序提交到 Hadoop 集群执行;Hive 本身不存储和计算数据,它完全依赖于 HDFS 和 MapReduce,Hive 中的表是纯逻辑表。

2025-11-13 21:44:49 472

原创 Flink 多流转换

Flink 的多流转换可以分为“分流”和“合流”两大类。目前分流的操作一般是通过侧输出流来实现,而合流的算子比较丰富,根据不同的需求可以调用 union、connect、join 以及 coGroup 等接口进行合并操作。

2025-11-04 23:43:36 945

原创 JVM 垃圾收集器介绍

生产目的是为了替换 GMS,将内存化整为零,分成多个独立的 Region,每一个 Region 设计了两个名为 TAMS 的指针。

2025-11-04 17:23:22 1012

原创 kafka kraft 模式简介

Zookeeper 提供了配置服务、分布式同步、命名服务、Leader 选举和集群管理等功能,很多大数据组件都依赖 Zookeeper 来构建,Apache Kafka 也不例外。

2025-11-03 22:17:17 726

原创 Flink SQL 调优

LocalGlobal 优化将原先的 Aggregate 分成 Local + Global 两段聚合,即 MapReduce 中的 Combine + Reduce 处理模式。第一阶段在上游节点本地攒一批数据进行聚合(localAgg),并输出这次微批的增量值(Accumulator)。第二阶段再将收到的 Accumulator 合并(Merge),得到最终的结果(GlobalAgg)。

2025-11-03 17:21:06 658

原创 Flink 优化-数据倾斜

相同 Task 的多个 SubTask 中,个别 SubTask 接收到的数据量明显大于其他 SubTask 接收到的数据量,通过 Flink Web UI 可以精确地看到每个 SubTask 处理了多少数据,即可判断出 Flink 任务是否存在数据倾斜。通常数据倾斜也会引起反压。另外,有时 Checkpoint detail 里不同的 SubTask 的 State size 也是一个分析数据倾斜的有用指标。

2025-11-03 16:09:19 999

原创 Flink 优化-反压处理

简单来说,Flink 拓扑中每个节点(Task)间的数据都以阻塞队列的方式传输,下游来不及消费导致队列被占满后,上游的生产也会被阻塞,最终导致数据源的摄入被阻塞。反压通常产生于这样的场景:短时间的负载高峰导致系统接收数据的速率远高于它处理数据的速率。许多日常问腿都会导致反压,例如,垃圾回收停顿可能会导致流入的数据快速堆积;遇到大促、秒杀活动导致流量陡增。

2025-11-02 23:30:04 743

原创 Flink 优化-状态及 Checkpoint 调优

Flink 针对不同的设置为 RocksDB 提供了一些预定义的选项集合,当前支持的预定义选项有:DEFAULT:什么都不配;SPINGNING_DISK_OPTIMIZED:基于机械硬盘的优化;基于机械硬盘+内存的优化;基于固态硬盘的优化;

2025-10-31 21:32:30 1163

原创 Flink 优化-资源配置优化

可以看到容器的 vcore 变了:还是 4 个容器,但是 TaskManager 占用的 3 个容器,每个容器有 2 个 vcore,即 1 + 3 * 2 = 7。可以修改策略为 “DominantResourceCalculator” 该资源计算器在计算资源的时候会综合考虑 cpu 和内存的情况。2)执行开销:JVM 执行时自身所需要的内容,包括线程堆栈、IO、编译缓存等所使用的内存。,所以在 Yarn 的资源管理页面上看到每个容器的 vcore 个数还是 1。Yarn 的容量调度器默认情况下是使用。

2025-10-30 22:46:43 928

原创 ClickHouse 介绍

ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式数据库,使用 C++ 语言编写,主要用于在线分析处理(OLAP)。

2025-10-25 19:16:09 886

原创 Java 反射

Java 反射(Reflection)是一个强大的机制,它允许程序在运行时查询、访问和修改类、接口、字段和方法信息。反射提供了一种动态地操作类的能力,这在很多框架和库中被使用,例如 Spring 框架的依赖注入,Spring Boot、MyBatis 等等框架中也都使用了反射机制,主要是通过反射机制实现动态代理。

2025-09-10 22:29:20 710

原创 Java 线程池

线程池就是管理一系列线程的资源池。当有任务要处理时,直接从线程池中获取线程来处理,处理完之后线程并不会立即被销毁,而是等待下一个任务。

2025-08-27 16:23:03 788

原创 ThreadLocal

当访问共享的可变数据时,通常需要使用同步。一种避免使用同步的方式就是不共享数据。如果仅在单线程内访问数据,就不需要同步。这种技术被称为线程封闭(Thread Conflinement),这是实现线程安全性的最简单方式之一。当某个对象封闭在一个线程中时,这种用法将自动实现线程安全性,即使被封闭的对象本身不是线程安全的。

2025-08-21 16:00:45 729

原创 synchronized 、volatile 以及 ReentrantLock 的区别

synchronized 关键字和 volatile 关键字是两个互补的存在。

2025-08-11 17:06:18 419

原创 synchronized 关键字

synchronized 是 Java 的一个关键字,用于实现多个线程之间资源访问的同步性,可以保证被它修斯的方法或者代码块在任意时刻都只有一个线程执行。

2025-08-05 16:55:10 917

原创 Flink CDC 介绍

CDC 是 Change Data Capture(变更数据获取)的简称。核心思想是,监测数据库的bia'neng并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。

2025-08-04 22:10:30 1247

原创 乐观锁和悲观锁

乐观锁总是假设最好的情况,认为共享资源每次被访问时不会出现问题,线程可以不停地执行,无需加锁也无需等待,只是在提交修改的时候去验证对应的资源是否被其他线程修改。在高并发的场景下,乐观锁相比悲观锁,不存在锁竞争造成线程阻塞,也不会有死锁的问题,在性能上往往会更胜一筹。但是,如果冲突频繁发生(写占比多的情况),会频繁的失败和重试,这样同样会影响性能,导致 CPU 飙升。

2025-07-15 16:24:04 224

原创 volatile 关键字

volatile 关键字在多线程编程中起到关键作用,主要用于解决变量的和问题,但其。

2025-07-14 20:32:31 309

原创 kafka SASL/PLAIN 认证及 ACL 权限控制

1.1 在 zookeeper 的 conf 目录下,创建 zk_server_jaas.conf 文件,内容如下username="admin" 是 zookeeper 实例之间通信的用户;user_kafka="kafka" 是 kafka broker 与 zookeeper 连接的时候的认证用户,密码为=后面的值;1.2 修改 zoo.cfg ,添加以下内容。

2025-05-27 14:52:46 1846

原创 Scala 函数柯里化及闭包

闭包(Closure)是能够捕获并持有其外部作用域中的变量(自由变量)的函数,即使该外部作用域已经执行完毕。

2025-04-27 23:11:28 1025

原创 Flink 内部通信底层原理

远程过程调用协议,允许程序像调用本地方法一样调用远程服务,隐藏底层网络通信细节。

2025-04-17 17:24:38 1095

原创 基线合规整改指南

{jboss_server_home}/deploy/ROOT.war/WEB-INF/web.xml文件xpath路径配置:/*[name()='web-app']/*[name()='servlet']/*[name()='servlet-name'][text()='Status Servlet']/following-sibling::*[name()='servlet-class'][text()='org.jboss.web.tomcat.service.StatusServlet']的节点。

2025-04-16 16:41:37 1389

原创 Flink 任务调度机制

一、Graph 的概念Flink 中的执行图可以分为四层:StreamGraph -> JobGraph -> ExecutionGraph -> 物理执行图。用来代表 operator 的类,并具有所有的相关属性,如并行度、入边和出边等。表示连接两个 StreamEdge 的边。

2025-04-07 17:03:06 1296

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除