自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

书山有路,学海无涯。记录成长,追逐梦想

专注于【大数据】、【云原生】、【云计算】、【测试技术】等领域

  • 博客(351)
  • 收藏
  • 关注

原创 【云计算】云数据中心网络(一):VPC

PC 初期主要解决两个核心问题:一是多租户网络隔离问题,二是随之带来的用户从 VPC 内访问众多云服务的问题。随着越来越多的企业用户上云,企业级网络的需求越来越多,VPC 要解决的问题也包括帮助企业更平滑地上云,让企业在线下 IDC(Internet Data Center,互联网数据中心)里的网络架构、运维管理体系能平滑地迁移到云上。

2024-04-06 13:55:12 1008

原创 【云计算】云网络产品体系概述

云网络的底层是全球网络基础设施,其上是飞天洛神云网络平台,再上一层是云数据中心网络、跨地域网络和混合云网络三大产品体系,之上是云网络的智能网络和开放网络,分别通过网络分析平台和网络开放平台承载。最上层是云网络解决方案,包括通用网络解决方案和行业网络解决方案。

2024-04-05 21:59:28 455

原创 【云计算】云网络是未来的网络基础设施

到底什么是云网络?它和传统的网络有什么不同?当云计算把分散在各企业的算力与存储资源集中起来,并向企业、分支、IoT终端、家庭、个人移动端传输数据时,基于云连接构建的云网络就是一个面向企业租户和应用的虚拟网络。云网络基于数字经济的云平台,建立面向计算、存储、终端、应用的连接。

2024-04-05 18:10:40 1162

原创 【Kubernetes】K8s 中的 Pod 驱逐

抢占是这样一个过程:如果一个新的 Pod 需要被调度,但是没有任何合适的节点拥有足够的资源,那么 kube-scheduler 将通过驱逐终止一些优先级较低的 Pod 来检查新的 Pod 是否可以成为那个节点的一部分。

2024-03-30 18:37:54 992

原创 【Java】打包:JAR、EAR、WAR

当你的项目在没有完全竣工的时候,不适合使用 war 文件,因为你的类会由于调试之类的经常改,这样来回删除、创建 war 文件很不爽,最好是你的项目已经完成了,不改了,那么就打个 war 包吧,这个时候一个 war 文件就相当于一个 web 应用程序了;而 jar 文件就是把类和一些相关的资源封装到一个包中,便于程序中引用。

2024-03-30 00:50:23 884

原创 【Flink】WaterMark 实战

WaterMark 只是决定了窗口的触发时机,并非可以改变元素归属的窗口(事件应归属的窗口是由事件本身的事件时间决定的),例如上方元素 C、G,虽然根据设置的延迟时间可能触发窗口 [12:00:00-12:00:10) 计算,但其本身时间不归属于窗口之内,因为窗口 [12:00:00-12:00:10) 中永远不会有 >= 12:00:10 的元素存在。

2024-03-24 15:31:14 717

原创 【Flink】窗口实战:TUMBLE、HOP、SESSION

在流式计算中,流通常是无穷无尽的,我们无法知道什么时候数据源会继续 / 停止发送数据,所以在流上处理聚合事件(count、sum 等)的处理方式与批处理中的处理方式会有所差异。在流上一般用窗口(Window)来限定聚合的范围,例如 “过去 2 分钟网站点击量的计数”、“在最近 100 个人中点赞这个视频的总人数”。窗口的概念相当于帮我们收集了一张有限数据的动态表,我们可以对表中的数据进行聚合计算。

2024-03-23 15:55:17 1181

原创 【Spring Boot】创建你的第一个 Spring Boot 应用

Spring Boot 目前已经成为了 Java 开发领域的框架范式。本篇博客,我将带领大家一起创建一个 Spring Boot 的 Demo 应用。

2024-03-16 19:45:10 1045 2

原创 【Flink SQL】Flink SQL 基础概念(五):SQL 时区问题

首先说一下这个问题的背景:大家想一下离线 Hive 环境中,有遇到过时区相关的问题吗?至少博主目前没有碰到过,因为这个问题在底层的数据集成系统都已经给解决了,小伙伴萌拿到手的 ODS 层表都是已经按照所在地区的时区给格式化好的了。举个例子:小伙伴萌看到日期分区为2022-01-01的 Hive 表时,可以默认认为该分区中的数据就对应到你所在地区的时区的2022-01-01日的数据。

2024-03-15 23:50:46 1446 1

原创 【Flink SQL】Flink SQL 基础概念(四):SQL 的时间属性

事件时间:指的是数据本身携带的时间,这个时间是在事件产生时的时间,而且在 Flink SQL 触发计算时,也使用数据本身携带的时间。这就叫做事件时间。目前生产环境中用的最多。

2024-03-14 20:59:28 1342

原创 【Flink SQL】Flink SQL 基础概念(三):SQL 动态表 & 连续查询

物化视图其实就是一条 SQL 查询,就像常规的虚拟视图 VIEW 一样。但与虚拟视图不同的是,物化视图会缓存查询的结果,因此在请求访问视图时不需要对查询进行重新计算,可以直接获取物化视图的结果,小伙伴萌可以认为物化视图其实就是把结果缓存了下来。

2024-03-14 00:10:56 1294

原创 【Flink SQL】Flink SQL 基础概念(一):SQL & Table 运行环境、基本概念及常用 API

Table API 是一种集成在 Java、Scala 和 Python 语言中的查询 API,简单理解就是用 Java、Scala、Python 按照 SQL 的查询接口封装了一层 lambda 表达式的查询 API,它允许以强类型接口的方式组合各种关系运算符(如选择、筛选和联接)的查询操作,然后生成一个 Flink 任务运行。

2024-03-11 23:43:50 1003 2

原创 【Flink SQL】Flink SQL 基础概念(二):数据类型

Flink SQL 内置了很多常见的数据类型,并且也为用户提供了自定义数据类型的能力。

2024-03-11 22:01:32 1248

原创 【Flink】Flink 的八种分区策略(源码解读)

Flink 包含 8 种分区策略,这 8 种分区策略(分区器)分别如下面所示,本文将从源码的角度解读每个分区器的实现方式。

2024-03-09 23:52:26 1286

原创 【Flink】Apache Flink 常见问题定位指南

发生问题时,首先要做的是现象记录,即检查作业的运行状态。如果运行状态不是运行中,那肯定没有数据正常输出了,需要进一步从日志中查找问题根因。如果作业在运行中,但是存在近期的重启记录,也表明可能发生了较严重的问题。此时需要整理问题发生的时间线,便于后续定位参考。

2024-03-09 22:41:20 1239

原创 【LakeHouse】LakeHouse 架构指南

那么从数据湖到 LakeHouse 有什么区别呢?LakeHouse 是数据湖和数据仓库的组合(可能还有很多其他意见)。LakeHouse 具有开放的数据管理架构,结合了数据湖的灵活性、成本效益和规模。与数据湖一样,它还具有数据湖表格式(Delta Lake、Apache Iceberg和Apache Hudi)提供的数据库功能。与数据湖相比,LakeHouse 具有额外的数据治理。它包括集群计算框架和 SQL 查询引擎。更多功能丰富的 LakeHouse 还支持数据目录和最先进的编排。

2024-03-08 21:54:28 1103 1

原创 【Maven】Maven 基础教程(五): jar 包冲突问题

编订依赖列表的程序员,初次设定一组依赖,因为尚未经过验证,所以确实有可能存在各种问题,需要做有针对性的调整。那么谁来做这件事呢?我们最不希望看到的就是:团队中每个程序员都需要自己去找依赖,即使是做同一个项目,每个模块也各加各的依赖,没有统一管理。那前人踩过的坑,后人还要再踩一遍。而且大家用的依赖有很多细节都不一样,版本更是五花八门,这就让事情变得更加复杂。

2024-03-07 21:36:47 1198

原创 【YARN】详解 YARN 中的 ResourceManager

ClientRMService 本质是 RPC Server(实现 ApplicationClientProtocol),给客户端提供 RPC 服务。ClientRMService 中保留了 RM 上下文对象 RMContext,中央异步调度器(AsyncDispatcher)通过 RMContext 来获取节点列表、队列组织和应用列表等信息来响应客户端请求。

2024-03-06 23:31:25 1086

原创 【Flink】Flink on YARN:一张图轻松掌握基础架构与启动流程

Flink on YARN 集群部署模式涉及 YARN 和 Flink 两大开源框架,应用启动流程的很多环节交织在一起,为了便于大家理解,在一张图上画出了 Flink on YARN 基础架构和应用启动全流程,并对关键角色和流程进行了介绍说明,整个启动流程又被划分成客户端提交(流程标注为紫色)、Flink Cluster 启动和 Job 提交运行(流程标注为橙色)两个阶段分别阐述,由于分支和细节太多,本文会忽略掉一些,只介绍关键流程(基于 Flink 开源1.9版本源码整理)。

2024-03-05 23:51:54 1097

原创 【Maven】Maven 基础教程(四):搭建 Maven 私服 Nexus

代理仓库配置中,仓库 ID、仓库名称、Provider、Policy 以及 Default Local Storage Location 等配置的含义与宿主仓库相同,不再赘述。需要注意的是,代理仓库的 Repository Type 的取值是 proxy。

2024-03-04 22:22:38 969

原创 【Maven】Maven 基础教程(三):build、profile

在实际使用 Maven 的过程中,我们会发现 build 标签有时候有,有时候没,这是怎么回事呢?其实通过有效 POM 我们能够看到,build 标签的相关配置其实一直都在,只是在我们需要定制构建过程的时候才会通过配置 build 标签覆盖默认值或补充配置。这一点我们可以通过打印有效 POM 来看到。

2024-03-01 23:19:38 931

原创 【Maven】Maven 基础教程(二):Maven 的使用

POM 表示将工程抽象为一个模型,再用程序中的对象来描述这个模型。这样我们就可以用程序来管理项目了。我们在开发过程中,最基本的做法就是将现实生活中的事物抽象为模型,然后封装模型相关的数据作为一个对象,这样就可以在程序中计算与现实事物相关的数据。

2024-02-29 22:58:05 613

原创 【大数据】Flink SQL 语法篇(十):EXPLAIN、USE、LOAD、SET、SQL Hints

如果熟悉 MySQL 的同学会非常熟悉这个子句,在 MySQL 中,USE 子句通常被用于切换库,那么在 Flink SQL 体系中,它的作用也是和 MySQL 中 USE 子句的功能基本一致,用于切换 Catalog,DataBase,使用 Module。

2024-02-29 21:19:37 1668

原创 【大数据】Flink SQL 语法篇(九):Window TopN、Deduplication

小伙伴萌会问了,我有了 TopN 为啥还需要 Window TopN 呢?还记得上一篇博客介绍 TopN 说道的 TopN 时会出现中间结果,从而出现回撤数据的嘛?Window TopN 不会出现回撤数据,因为 Window TopN 实现是在窗口结束时输出最终结果,不会产生中间结果。而且注意,因为是窗口上面的操作,Window TopN 在窗口结束时,会自动把 State 给清除。

2024-02-28 23:21:21 1328

原创 【大数据】Flink SQL 语法篇(八):集合、Order By、Limit、TopN

上述 SQL 在流式任务中,如果一条左流数据先来了,没有从右流集合数据中找到对应的数据时会直接输出,当右流对应数据后续来了之后,会下发回撤流将之前的数据给撤回。这也是一个回撤流。

2024-02-28 22:17:55 961

原创 【Maven】Maven 基础教程(一):基础介绍、开发环境配置

一个 Maven 工程有约定的目录结构,约定的目录结构对于 Maven 实现自动化构建而言是必不可少的一环,就拿自动编译来说,Maven 必须能找到 Java 源文件,下一步才能编译,而编译之后也必须有一个准确的位置保持编译得到的字节码文件。我们在开发中如果需要让第三方工具或框架知道我们自己创建的资源在哪。

2024-02-27 22:46:50 969

原创 【大数据】Flink SQL 语法篇(七):Lookup Join、Array Expansion、Table Function

小伙伴萌会问,我们既然已经有了上面介绍的 Regular Join,Interval Join 等,为啥还需要一种 Lookup Join?因为上面说的这几种 Join 都是流与流之间的 Join,而 Lookup Join 是流与 Redis,MySQL,HBase 这种存储介质的 Join。Lookup 的意思就是实时查找,而实时的画像数据一般都是存储在 Redis,MySQL,HBase 中,这就是 Lookup Join 的由来。

2024-02-27 21:30:30 1226

原创 【大数据】Flink SQL 语法篇(六):Temporal Join

Temporal Join 在离线的概念中其实是没有类似的 Join 概念的,但是离线中常常会维护一种表叫做拉链快照表,使用一个明细表去 Join 这个拉链快照表的 Join 方式就叫做 Temporal Join。而 Flink SQL 中也有对应的概念,表叫做Versioned Table,使用一个明细表去 Join 这个Versioned Table的 Join 操作就叫做 Temporal Join。

2024-02-26 23:04:23 943

原创 【大数据】Flink SQL 语法篇(五):Regular Join、Interval Join

Join 其实在我们的数仓建设过程中应用是非常广泛的。离线数仓可以说基本上是离不开 Join 的。那么实时数仓的建设也必然离不开 Join,比如日志关联扩充维度数据,构建宽表;日志通过 ID 关联计算 CTR。

2024-02-26 22:30:24 1429

原创 【大数据】Flink SQL 语法篇(四):Group 聚合、Over 聚合

Group 聚合定义(支持 Batch / Streaming 任务):Flink 也支持 Group 聚合。Group 聚合和上面介绍到的窗口聚合的不同之处,就在于 Group 聚合是按照数据的类别进行分组,比如年龄、性别,是横向的;而窗口聚合是在时间粒度上对数据进行分组,是纵向的。如下图所示,就展示出了其区别。其中按颜色分 key(横向)就是Group 聚合,按窗口划分(纵向)就是窗口聚合。

2024-02-25 23:48:12 1591 1

原创 【大数据】Flink 内存管理(四):TaskManager 内存分配(实战篇)

在 《Flink 内存管理(一):设置 Flink 进程内存》中我们提到,必须使用下述三种方法之一配置 Flink 的内存(本地执行除外),否则 Flink 启动将失败。这意味着必须明确配置以下选项子集之一,这些子集没有默认值。

2024-02-25 12:04:03 1427 1

原创 【大数据】Flink 内存管理(三):TaskManager 内存分配(理论篇)

Flink JVM 进程的总内存(Total Process Memory)由 Flink 应用程序(Total Flink Memory,Flink 总内存)和 JVM 运行进程所消耗的内存组成。Flink 总内存( Total Flink Memory)包括 JVM Heap、Managed Memory(托管内存,由 Flink 管理)和其他 Direct Memory(或 Native Memory)的使用量。

2024-02-24 15:22:01 1411

原创 【大数据】Flink 内存管理(二):JobManager 内存分配(含实际计算案例)

以上 Total Process Memory 的模型图可以分为以下的 4 个内存组件,如果在分配内存的时候,显示的指定了组件其中的1个或者多个,那么JVM Overhead的值就是在其它组件确定的情况下,用Total Process Size- 其它获取的值,必须在min-max之间,如果没有指定组件的值,那么就按照0.1 的比例进行计算得到,如果计算出的值小于min取min,如果大于max取max,如果min、max指定的相等,那么这个JVM Overhead就

2024-02-24 12:32:05 1414

原创 【大数据】Flink 内存管理(一):设置 Flink 进程内存

Apache Flink 通过严格控制各种组件的内存使用,在 JVM 上提供高效的工作负载。虽然社区努力为所有配置提供合理的默认值,但用户在 Flink 上部署的应用程序种类繁多,这意味着这并非总是可行。为了向用户提供最大的生产价值,Flink 允许对集群内的内存分配进行高级和精细调整。

2024-02-23 23:19:57 1541 4

原创 【大数据】Flink 之部署篇

在所有其他模式下,应用程序的 main() 方法都在客户端执行。这一过程包括在本地下载应用程序的依赖项,执行 main() 以提取 Flink 运行时可以理解的应用程序表示(即 JobGraph),并将依赖项和 JobGraph 发送到集群。这就使客户端成为资源消耗大户,因为它可能需要大量网络带宽来下载依赖项并将二进制文件发送到集群,还需要 CPU 周期来执行 main()。当客户端被多个用户共享时,这一问题会更加突出。

2024-02-22 22:18:34 1310

原创 【Java】图解 JVM 垃圾回收(二):垃圾收集器、Full GC

串行指的是垃圾收集器与用户程序交替执行,这意味着在执行垃圾收集的时候需要停顿用户程序;并行指的是垃圾收集器和用户程序同时执行。除了 CMS 和 G1 之外,其它垃圾收集器都是以串行的方式执行。

2024-02-19 23:26:21 1164

原创 【Java】图解 JVM 垃圾回收(一):GC 判断策略、引用类型、垃圾回收算法

垃圾回收(Garbage Collection,简称 GC)是内存管理的核心组成部分,它负责自动回收不再使用的内存空间。在 Java 中,程序员不需要手动释放对象占用的内存,一旦对象不再被引用,垃圾回收器就会在适当的时机回收它们所占用的内存。这样可以避免内存泄漏和野指针,从而大大减轻了程序员的负担,也使得 Java 成为一个相对安全、易于开发的编程语言。

2024-02-18 22:56:25 1047

原创 【大数据】Flink on Kubernetes 原理剖析

Node 为集群的一个操作单元,是 Pod 运行的宿主机。Node 节点里包含一个 Agent 进程,能够维护和管理该 Node 上的所有容器的创建、启停等。Node 还含有一个服务端 kube-proxy,用于服务发现、反向代理和负载均衡。Node 底层含有 docker engine,docker 引擎主要负责本机容器的创建和管理工作。

2024-02-12 11:44:23 1917 2

原创 【大数据】Flink on YARN,如何确定 TaskManager 数

Flink 程序中设定并行度有 4 种级别,从低到高分别为:算子级别、执行环境级别(ExecutionEnvironment)、客户端(命令行)级别、配置文件级别(flink-conf.yaml)。实际执行时,优先级则是反过来的,算子级别最高。

2024-02-07 00:29:01 1660

原创 【大数据】Flink 中的 Slot、Task、Subtask、并行度

通过调整 task slot 的数量,用户可以定义 subtask 如何互相隔离。每个 TaskManager 有一个 slot,这意味着每个 task 组都在单独的 JVM 中运行(例如,可以在单独的容器中启动)。具有多个 slot 意味着更多 subtask 共享同一 JVM。同一 JVM 中的 task 共享 TCP 连接(通过多路复用)和心跳信息。它们还可以共享数据集和数据结构,从而减少了每个 task 的开销。

2024-02-06 00:24:47 1597

空空如也

空空如也

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

TA关注的人

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