从零开始搞大数据
文章平均质量分 88
大数据系列,Flink、Spark持续更新
周润发的弟弟
5年JAVA开发,目前就职于京东,感慨于技术栈之窄,奋力扩充中,希望大家多多支持
展开
-
【Spark系列5】Dataframe下常用算子API
udf(): 定义一个新的用户定义函数。原创 2024-01-30 13:11:38 · 621 阅读 · 0 评论 -
【Spark系列4】Task的执行
TaskScheduler根据调度的顺序,依次调度TaskSetManager中的TaskSet,对于每个TaskSet遍历所有本地化级别,从小到大尝试在Executor分配Task,根据每个WorkerOffer的executorId和hostname,使用TaskSetManager判断在当前本地化级别中,是否可以在该Executor或Host上分配任务,直到该本地化级别无法分配Task,再将本地化级别提高一级再次尝分配Task。这些映射关系的建立,时根据生成Task时Task运行的最佳位置确定的。原创 2024-01-29 15:27:28 · 1455 阅读 · 0 评论 -
【Spark系列2】Spark编程模型RDD
RDD最初的概述来源于一片论文-伯克利实验室的Resilient Distributed Datasets:A Fault-Tolerant Abstraction for In-Memory Cluster Computing。这篇论文奠定了RDD基本功能的思想RDD实际为Resilient Distribution Datasets的简称,意为弹性分布式数据集。原创 2024-01-28 18:01:37 · 1597 阅读 · 0 评论 -
【Spark系列3】RDD源码解析实战
RDD:弹性分布式数据集,Resillient Distributed Dataset的缩写。个人理解:RDD是一个容错的、并行的数据结构,可以让用户显式的将数据存储到磁盘和内存中,并能控制数据的分区。同时RDD还提供一组丰富的API来操作它。本质上,RDD是一个只读的分区集合,一个RDD可以包含多个分区,每个分区就是一个dataset片段。RDD可以互相依赖。原创 2024-01-28 18:05:27 · 1082 阅读 · 0 评论 -
【Spark系列1】DAG中Stage和Task的划分全流程
上面已经介绍,在一个Stage中,RDD的依赖关系是窄依赖,所以最后一个RDD的分区数量取决于其依赖的RDD的分区数量,一直依赖到该阶段的开始的RDD的分区。原创 2024-01-28 17:55:49 · 1618 阅读 · 0 评论 -
【Flink系列七】TableAPI和FlinkSQL初体验
Apache Flink 有两种关系型 API 来做流批统一处理:Table API 和 SQL。原创 2023-12-12 23:43:00 · 1210 阅读 · 1 评论 -
【Flink名称解释一】什么是cataLog
元数据可以是临时的,例如临时表、或者通过 TableEnvironment 注册的 UDF。元数据也可以是持久化的,例如 Hive Metastore 中的元数据。Catalog 提供了一个统一的API,用于管理元数据,并使其可以从 Table API 和 SQL 查询语句中来访问。有两个用途:作为原生 Flink 元数据的持久化存储,以及作为读写现有 Hive 元数据的接口。Catalog 提供了元数据信息,例如数据库、表、分区、视图以及数据库或其他外部系统中存储的函数和信息。原创 2023-12-12 23:10:24 · 637 阅读 · 0 评论 -
【Flink系列六】Flink里面的状态一致性
目前我们看到的一致性保证都是由流处理实现的,也就是说都是在Flink流处理内部保证的;有状态的流处理,内部每个算子任务都可以有自己的状态,对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准确。当一个任务在运行过程中出现故障时,可以根据 Checkpoint 的信息恢复到故障之前的某一状态,然后从该状态恢复任务的运行。(比如上篇文章说的,处理到数据6,7的时候任务挂了,从checkpoint=5恢复,会重新消费6、7的数据,端到端的状态一致性保证,并不意味着不重复处理数据)原创 2023-12-07 22:49:15 · 1275 阅读 · 0 评论 -
【Flink系列五】Checkpoint及Barrier原理
本章内容本文先设置一个前提,流处理的数据都是可回放的(可以理解成消费的kafka的数据)原创 2023-12-07 00:03:22 · 1583 阅读 · 0 评论 -
【Flink系列二】如何计算Job并行度及slots数量
接上文的问题首先明确一下概念slot:TM上分配资源的最小单元,它代表的是资源(比如1G内存,而非线程的概念,好多人把slot类比成线程,是不恰当的)任务(task):线程调度的最小单元,和java中的类似。为更好的去理解后面如何计算并行度及需要的slots数量,先介绍一下几个概念。原创 2023-12-03 11:41:50 · 1474 阅读 · 0 评论 -
【Flink系列三】数据流图和任务链计算方式
上文介绍了如何计算并行度和slot的数量,本文介绍Flink代码提交后,如何生成计算的DAG数据流图及task计算方式。原创 2023-12-03 21:14:55 · 991 阅读 · 0 评论 -
【Flink系列四】Window及Watermark
上面的 watermark 让我们能够应对乱序的数据,但是真实世界中我们没法得到一个完美的 watermark 数值 — 要么没法获取到,要么耗费太大,因此实际工作中我们会使用近似 watermark — 生成 watermark(t) 之后,还有较小的概率接受到时间戳 t 之前的数据,在 Flink 中将这些数据定义为 “late elements”, 同样我们可以在 window 中指定是允许延迟的最大时间(默认为 0),可以使用下面的代码进行设置。滚动窗口的大小是固定的,且各自范围之间不重叠。原创 2023-12-05 22:16:45 · 2492 阅读 · 0 评论 -
【Flink系列一】Flink运行时四大组件
Flink运行时数据结构,JobManager、TaskManager原创 2023-12-02 23:39:33 · 1108 阅读 · 0 评论