Hadoop-组件-Yarn-发展-大厂分享系列
Hadoop-组件-Yarn-发展-大厂分享系列主要有 4 篇,按顺序看哦😯~~~
Redis 缓存穿透
缓存穿透是指要访问的数据既不在 Redis 缓存中,也不在数据库中,导致请求在访问缓存时,发生缓存缺失,再去访问数据库时,发现数据库中也没有要访问的数据。此时,应用也无法从数据库中读取数据再写入缓存,来服务后续请求,这样一来,缓存也就成了摆设,如果应用持续有大量请求访问数据,就会同时给缓存和数据库带来巨大压力。
Redis 缓存雪崩
缓存雪崩是指大量的应用请求无法在 Redis 缓存中进行处理,紧接着,应用将大量请求发送到数据库层,导致数据库层的压力激增。
Redis 缓存数据不一致
一致性包含了两种情况: 缓存中有数据缓存的数据值需要和数据库中的值相同,缓存中本身没有数据,那么,数据库中的值必须是最新值。
Redis 缓存击穿
缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力
Hadoop-组件-Yarn-发展-社区系列
Hadoop-组件-Yarn-发展-社区系列主要有 4 篇,按顺序看哦😯~~~
Redis 缓存穿透
缓存穿透是指要访问的数据既不在 Redis 缓存中,也不在数据库中,导致请求在访问缓存时,发生缓存缺失,再去访问数据库时,发现数据库中也没有要访问的数据。此时,应用也无法从数据库中读取数据再写入缓存,来服务后续请求,这样一来,缓存也就成了摆设,如果应用持续有大量请求访问数据,就会同时给缓存和数据库带来巨大压力。
Redis 缓存雪崩
缓存雪崩是指大量的应用请求无法在 Redis 缓存中进行处理,紧接着,应用将大量请求发送到数据库层,导致数据库层的压力激增。
Redis 缓存数据不一致
一致性包含了两种情况: 缓存中有数据缓存的数据值需要和数据库中的值相同,缓存中本身没有数据,那么,数据库中的值必须是最新值。
Redis 缓存击穿
缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力
Hadoop-组件-Yarn-理论笔记系列
一、概述Hadoop-组件-Yarn-理论笔记系列-概述只有 1 篇哦😯~~~
Yarn 概述
Yarn 作为 Hadoop 的资源管理系统,负责 Hadoop 集群上计算资源的管理和作业调度。
二、调度器
Spark-源码学习-SparkSQL-聚合体系-执行-HashAggregateExec
一、概述聚合执行本质上是将 RDD 的每个 Partition 中的数据进行处理。对于每个 Partition 中的输入数据即 Input(通过 InputIterator 进行读取),经过聚合执行计算之后,得到相应的结果数据即 Result(通过 AggregationIterator 来访问)。
二、执行框架 AggregationIterator聚合执行框架指的是聚合过程中抽象出来的通用功能,包括聚合函数的初始化、聚合缓冲区更新合并函数和聚合结果生成函数等。这些功能都在聚合迭代器(Aggregationlterator)中得到了实现。
三、SortAggregateExecSortAggregateExec 是一种基于排序的聚合实现,在进行聚合之前,会根据 grouping key 进行分区并在分区内排序,将具有相同grouping key 的记录分布在同一个 partition 内且前后相邻。聚合时只需要顺序遍历整个分区内的数据,即可得到聚合结果。
四、HashAggregateExecHashAggregateExec 构建一个 Map 类型的数据结构,以分组的属性作为 ...
Spark-源码学习-SparkSQL-聚合体系-执行-ObjectHashAggregateExec
一、概述聚合执行本质上是将 RDD 的每个 Partition 中的数据进行处理。对于每个 Partition 中的输入数据即 Input(通过 InputIterator 进行读取),经过聚合执行计算之后,得到相应的结果数据即 Result(通过 AggregationIterator 来访问)。
二、执行框架 AggregationIterator聚合执行框架指的是聚合过程中抽象出来的通用功能,包括聚合函数的初始化、聚合缓冲区更新合并函数和聚合结果生成函数等。这些功能都在聚合迭代器(Aggregationlterator)中得到了实现。
三、SortAggregateExecSortAggregateExec 是一种基于排序的聚合实现,在进行聚合之前,会根据 grouping key 进行分区并在分区内排序,将具有相同grouping key 的记录分布在同一个 partition 内且前后相邻。聚合时只需要顺序遍历整个分区内的数据,即可得到聚合结果。
四、HashAggregateExecHashAggregateExec 构建一个 Map 类型的数据结构,以分组的属性作为 ...
Spark-源码学习-SparkSQL-聚合体系-执行-SortAggregateExec
一、概述聚合执行本质上是将 RDD 的每个 Partition 中的数据进行处理。对于每个 Partition 中的输入数据即 Input(通过 InputIterator 进行读取),经过聚合执行计算之后,得到相应的结果数据即 Result(通过 AggregationIterator 来访问)。
二、执行框架 AggregationIterator聚合执行框架指的是聚合过程中抽象出来的通用功能,包括聚合函数的初始化、聚合缓冲区更新合并函数和聚合结果生成函数等。这些功能都在聚合迭代器(Aggregationlterator)中得到了实现。
三、SortAggregateExecSortAggregateExec 是一种基于排序的聚合实现,在进行聚合之前,会根据 grouping key 进行分区并在分区内排序,将具有相同grouping key 的记录分布在同一个 partition 内且前后相邻。聚合时只需要顺序遍历整个分区内的数据,即可得到聚合结果。
四、HashAggregateExecHashAggregateExec 构建一个 Map 类型的数据结构,以分组的属性作为 ...
Spark-源码学习-SparkSQL-聚合体系-执行
一、概述聚合执行本质上是将 RDD 的每个 Partition 中的数据进行处理。对于每个 Partition 中的输入数据即 Input(通过 InputIterator 进行读取),经过聚合执行计算之后,得到相应的结果数据即 Result(通过 AggregationIterator 来访问)。
二、执行框架 AggregationIterator聚合执行框架指的是聚合过程中抽象出来的通用功能,包括聚合函数的初始化、聚合缓冲区更新合并函数和聚合结果生成函数等。这些功能都在聚合迭代器(Aggregationlterator)中得到了实现。
三、SortAggregateExecSortAggregateExec 是一种基于排序的聚合实现,在进行聚合之前,会根据 grouping key 进行分区并在分区内排序,将具有相同grouping key 的记录分布在同一个 partition 内且前后相邻。聚合时只需要顺序遍历整个分区内的数据,即可得到聚合结果。
四、HashAggregateExecHashAggregateExec 构建一个 Map 类型的数据结构,以分组的属性作为 ...
Spark-源码学习-SparkSQL-聚合体系
一、概述聚合操作(Aggregation)指的是在原始数据的基础上按照一定的逻辑进行整合,从而得到新的数据,一般通过聚合函数(如 count、 max 和 sum 等)汇总多行的信息。聚合查询一直以来都是数据分析应用中必不可少的部分,在各种 SQL 算子中占据着重要地位。
在 Catalyst 的 SqlBase.g4 文法文件中,聚合语句 aggregation 定义如下:在常见的聚合查询 中,通常包括分组语句(group by)和聚合函数( aggregate function );聚合函数出现在 Select 语 句中的情形较多,定义在 functionCall 标签的 prim缸yExpression 表达式文法中, qualifiedName 对 应函数名,括号内部是该函数的参数列表。
二、普通聚合2.1. 聚合缓冲区与聚合模式(AggregateMode)聚合查询在计算聚合值的过程中,通常都需要保存相关的中间计算结果,例如 $max$ 函数需要保存当前最大值,$count$ 函数需要保存当前的数据总数,求平均值的 $avg$ 函数需要同时保存 count 和 sum 的 ...
Spark-理论笔记-本地化执行引擎-Gluten-Backend-Arrow
一、概述1.1. 什么是 Arrow?Apache Arrow 是 Apache 基金会近几年最活跃的项目之一,它基于内存列式格式彷生出了完善的内存计算生态,是当前内存列式数据格式事实上的标准。Arrow 的内存模型可以帮助编译器自动地实现向量化,且在传输时没有序列化/反序列化成本,实现了 CPU 和 IO 的效率提升。
在 Arrow 之前,任何应用程序或库之间交换数据的标准方式是以一种或另一种方式将其存储到磁盘。
如果 NET Core 库想要将数据传递给 Python 进行数据分析,很可能有人会将数据写入文件(例如 csv、json、Parquet 等),然后用 Python 再次读取它。写入(序列化)和读取(反序列化)这两个步骡都是昂贵且缓慢的,数据集越大,完成每个步骤所需的时间就越长。
是否存在一种通过握手和零复制直接交换数据的方式呢?🤔️
举个栗子: NET 将开始与 Python 聊天,指向内存中的一堆数据,然后就像:嘿,伙计,这堆东西现在是你的了。然后Python 就可以直接访问这个数据,而不用把宅从二个地方拖到另一个地方(例如先写入再读出)。那岂不是很棒 ...