Spark
文章平均质量分 84
Spark
cpuCode
站在巨人的肩上行走 https://github.com/CPU-Code
展开
-
Spark 导航
RDD DataFrame 概述 Standalone 部署 配置项, 进程模型 开发原则 特征工程 Spark UI DAG Join 模型训练 调度系统 SQL优化机制 [Pipeline] Shuffle Catalyst 内存管理 Tungsten 内存运用 AQE 广播/累加 DPP 存储系统 Join大小表 CPU Join大大表 磁盘 应用调优 网络 Spark_Hive原创 2023-03-02 18:22:07 · 309 阅读 · 0 评论 -
Spark Standalone 部署
为了解决单点故障问题,需要在集群中配置多个Master节点,一旦处于活动状态的 Master 发生故障时,由备用 Master 提供服务,保证作业可以继续执行。查看 cpucode102 的Master 资源监控 Web UI,稍等一段时间后,cpucode102 节点的 Master 状态。7077端口,相当于 Hadoop3 内部通信的 8020 端口,此处的端口需要确认自己的 Hadoop 配置。执行任务时,默认采用服务器集群节点的总核数,每个节点内存 1024M。确保 Zookeeper 关闭。原创 2023-03-07 18:09:55 · 1116 阅读 · 0 评论 -
Spark UI
展示 Spark UI ,需要设置配置项并启动 History Server打开 Spark UI 先见默认 Jobs 页面。原创 2023-03-07 18:11:53 · 963 阅读 · 2 评论 -
Spark 配置项
读取配置项顺序 :SparkConf 对象 -> 命令行参数 -> 配置文件。原创 2023-03-07 18:10:23 · 990 阅读 · 0 评论 -
Spark MLlib 模型训练
Spark MLlib 开发框架下 :例子分类 :算法分类 :决策树 (Decision Trees) : 根据样本特征向量而构建的树形结构决策树示意图 :随机森林 (Random Forest)GBDT : 用多棵决策树来拟合数据样本,但树与树之间是有依赖关系的,每棵树的构建,都基于前棵树的训练结果GBDT示意图 :拟合残差 :原创 2023-03-09 18:13:05 · 244 阅读 · 0 评论 -
Spark MLlib 特征工程
归一化 (Normalization) 作用 : 把一组数值,统一映射到同一个值域,该值域通常是 [0, 1]离散化作用 : 把原本连续的数值打散,降低原始数据的多样性(Cardinality)StringIndexer 作用 : 以数据列为单位,把字段中的字符串转为数值索引。Embedding 过程 : 把数据集合映射到向量空间,进而把数据进行向量化的过程。离散化的意义 : 提升特征数据的区分度与内聚性,实现与预测标的产生更强的关联。特征选择 : 根据一定的标准,对特征字段进行选择。原创 2023-03-07 18:13:19 · 373 阅读 · 0 评论 -
Spark MLlib概述
房价预测的预测标的(Label)是房价,而房价是连续的数值型字段,所以用回归模型(Regression Model)来拟合数据。房价的值域在(34,900,755,000)之间,而预测是 45,798.86。这说明该模型是欠拟合的状态。把训练样本按比例分成两份 : 一份用于模型训练,一份用于初步验证模型效果。模型训练 (Model Training) : 调整模型参数的过程。在线性回归模型的评估中,有很多的指标,用来量化模型的预测误差。选择对房价影响大的特征,要计算每个特征与房价之间的相关性。原创 2023-03-09 18:14:04 · 514 阅读 · 0 评论 -
Spark/Hive
Hive Server 2 (Hive Thrift Server 2) 采用 Thrift RPC 协议框架。用 Beeline 客户端,连接 Spark Thrift Server,从而完成 Hive 表的访问与处理。Spark Thrift Server 启动后,在任意节点上通过 Beeline 就能访问该服务。spark-sql CLI 与 Hive Metastore 要在同个节点。Hive on Spark :Hive 用 Spark 作为分布式执行引擎。启动 Hive Metastore。原创 2023-03-07 18:13:07 · 366 阅读 · 2 评论 -
Spark 应用调优
表信息 :运行环境 :配置项设置 :优化点 :统计至今,参与摇号的总人次和幸运的中签者人数SQL 实现 :去重计数,得到实际摇号数 :SQL 实现 :优化分析 : 共有 3 个 Actions,会触发 3 个 Spark Jobs用 Cache 原则:优化 :不同人群摇号次数的分布 :统计所有申请者的分布情况SQL 实现 :分析 : 共两次 Shuffle。以 carNum 做分组计数, 以 x_axis 列再次做分组计数Shuffle 的本质 : 数据的重新分发,凡是有 Shuffle原创 2023-03-07 18:11:12 · 534 阅读 · 0 评论 -
Spark Join大大表
把倾斜的 orderId 保存在数组 skewOrderIds 中,把均匀的 orderId 保持在数组 evenOrderIds 中。负隅顽抗 : 当内表没法均匀拆分,或外表没有分区键,不能利用 DPP,只能依赖 Shuffle Join,来完成 Join 大大表。orders 和 transactions 都 TB 级别的事实表,计算上个季度所有订单的交易额。分而治之的调优思路:把复杂任务拆解成多个简单任务,再合并多个简单任务的计算结果。内表拆分后,外表与所有子表做关联,把全部子关联的结果合并。原创 2023-03-07 18:12:35 · 2037 阅读 · 3 评论 -
Spark Join大小表
大小表 : 大小表尺寸相差 3 倍以上。原创 2023-03-07 18:10:42 · 784 阅读 · 2 评论 -
Spark DPP
DPP (Dynamic Partition Pruning,动态分区剪裁) : 过滤维度表后,能削减事实表的数据扫描量,提升关联计算的执行性能。原创 2023-03-06 18:55:28 · 227 阅读 · 2 评论 -
Spark AQE
Spark 3.0 添加了自适应查询执行(AQE)、动态分区剪裁(DPP)、扩展的 Join Hints。原创 2023-03-06 18:50:33 · 859 阅读 · 2 评论 -
Spark Tungsten
Tungsten 地址 : 统一 128 位内存地址 , 为了统一管理 Off Heap 和 On Heap 内存空间。迭代器嵌套 :同个 Stage 内部,把多个 RDD 的 compute 函数合成一个函数,再一次性输出数据。WSCG 工作过程 : 基于性能较差的代码,在运行时动态地 (On The Fly) 重构出性能更好的代码。WSCG :基于同一 Stage 内操作符的调用关系,把所有计算进行手写,并合成一个函数。Tungsten 引入 WSCG 机制,消除了 VI 模型引入的计算开销。原创 2023-03-06 18:41:25 · 501 阅读 · 2 评论 -
Spark Catalyst
EnsureRequirements (满足前提条件) : 对执行计划中的每个操作符节点,都有 4 个属性用来描述数据输入/ 输出的分布状态。逻辑计划解析 : 结合 DataFrame 的 Schema ,确认计划中的表名、字段名、字段类型和实际数据是否一致。从 Spark Plan 到 Physical Plan 的转换,需要 Preparation Rules 规则。指令型信息: Join Hints,允许个人选择 Join 策略。Spark Plan :Join 策略是 SMJ。原创 2023-03-06 18:31:53 · 538 阅读 · 2 评论 -
Spark SQL优化机制
RDD 缺点 : RDD的算子都是高阶函数 ,Spark Core 不知函数内的操作,只能闭包形式发给 Executors, 无法优化Spark 能用 DataFrame ,基于启发式的规则或策略,动态的运行时信息,去优化 DataFrame 的计算过程。原创 2023-03-06 18:28:15 · 654 阅读 · 2 评论 -
Spark Join
Join 按照关联形式(Join Types)划分 : 内关联、外关联、左关联、右关联。原创 2023-03-06 18:24:06 · 787 阅读 · 2 评论 -
Spark 开发原则
在右表用 map ,在 map 内实例化 Util 类获取哈希算法,拼接 Join keys 进行哈希运算。设置好配置项,享受 Spark SQL 的性能优势,如钨丝计划、AQE、SQL functions。原创 2023-03-06 18:23:09 · 250 阅读 · 2 评论 -
Spark DataFrame
RDD : 不带 Schema 的分布式数据集- 能封装结构化,半结构化,非结构化数据 - RDD 开发, Spark Core 把高阶函数用闭包形式打发到 Executors ,无优化空间- PySpark 与 Java 或 Scala,实现性能相差悬殊不同语言的运行时计算过程 : - 用 Java/Scala 开发,所有的计算都在 JVM 进程内完成- 用 Python 开发 , 每个 Python 进程对应一个 Task , 开销大原创 2021-03-18 17:04:42 · 74 阅读 · 2 评论 -
Spark 网络
Spark 支持的数据源种类:存储格式/存储系统 :原创 2023-01-09 13:48:49 · 72 阅读 · 2 评论 -
Spark 磁盘作用
临时文件、中间文件、缓存数据,都会存储到 `spark.local.dir` 中 - 在 Shuffle Map 时, 当内存空间不足,就会溢出临时文件存储到磁盘上 - 溢出的临时文件一起做归并计算,得到 Shuffle 中间文件存储到磁盘上 - 缓存分布式数据集 : DISK 的存储模式,会把内存中放不下的数据缓存到磁盘原创 2023-03-06 18:13:45 · 529 阅读 · 2 评论 -
Spark 平衡 CPU
平衡 CPU/内存的 3 类配置参数 : 并行度、集群的并行计算能力、执行内存大小。执行内存抢占规则 : 在同个 Executor 有 N 个线程尝试抢占执行内存。Executor 线程池:线程可以复用,但同一时间中,每个线程只能计算一个任务。并发度 : 同一时间内,一个 Executor 能同时运行的最大任务数量。并行度设到最大,每个数据分片足够小,小到每个 CPU 线程都能申请到内存。数据分片的数据量决定了任务要申请多少内存。并行度 :分布式数据集的划分数。原创 2023-03-06 18:14:11 · 352 阅读 · 2 评论 -
Spark 存储系统
Spark 存储系统架构:BlockManagerMaster/BlockManager 之间交换的信息 (Executors 的数据状态) :BlockManager 负责:管理数据块的元数据(Meta data),这些元数据记录并维护数据块的地址、位置、尺寸以及状态。原创 2023-03-06 18:13:00 · 474 阅读 · 1 评论 -
Spark 广播/累加
Spark 提供了两类共享变量:广播变量(Broadcast variables)/累加器(Accumulators)原创 2023-03-02 22:16:48 · 518 阅读 · 2 评论 -
Spark 内存运用
当同一个 RDD 被引用多次时,就可以考虑进行 Cache,从而提升作业的执行效率。原创 2023-03-02 21:01:46 · 1077 阅读 · 2 评论 -
Spark 内存管理
根据 #User、#Storage、#Execution 预估大小 ,调整相关的内存配置项。区分 Execution Memory/Storage Memory 的初始大小。优化:把创建好的 Map 字典封装成广播变量,分发到各个 Executors。广播变量消耗 Storage Memory。原创 2023-03-02 21:00:35 · 705 阅读 · 2 评论 -
Spark Shuffle
Shuffle : 集群范围内跨节点、跨进程的数据分发Spark 2.0 后,将 Shuffle 操作统一交由 Sort shuffle Manager 来管理Spark/公司人物对比 :Shuffle类比 :reduceByKey 会引入 ShufflereduceByKey计算过程 :Shuffle 是跨节点、跨进程的数据分发Shuffle 中间文件有两类实体文件 :data 文件 : 记录(Key,Value)键值对的index 文件 : 记录键值对所属 Reduce Task 的Map 阶段生产原创 2023-03-02 20:56:19 · 363 阅读 · 2 评论 -
Spark 调度系统
调度系统的任务:先将 DAG 转为分布式任务,根据分布式集群资源的可用性,基于调度规则依序把分布式任务分发到执行器调度系统/工坊流程:角色/组件对比SparkContext / SparkSession 初始化中,TaskScheduler 和 SchedulerBackend 会最早且同时被创建的调度系统组件。原创 2023-03-02 20:51:58 · 386 阅读 · 2 评论 -
Spark DAG
DAG (Direct Acyclic Graph) : 有向无环图 : 顶点是一个个RDD,边是 RDD 之间通过 dependencies 构成的父子关系。原创 2023-03-02 18:49:43 · 222 阅读 · 2 评论 -
Spark 进程模型
分布式计算的精髓:把抽象的计算流图,转成分布式计算任务,然后并行计算执行。原创 2023-03-02 18:26:20 · 190 阅读 · 2 评论 -
Spark RDD
RDD 是构建 Spark 分布式内存计算引擎的基石,如 :DAG/调度系统都衍生自 RDD。原创 2023-03-02 18:18:03 · 149 阅读 · 1 评论 -
ClassNotFoundException: org.apache.spark.AccumulatorParam 解决方案
ClassNotFoundException: org.apache.spark.AccumulatorParam 解决方案错误现象 :解决方案 :错误现象 :Job failed with java.lang.ClassNotFoundException: org.apache.spark.AccumulatorParamFAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTas原创 2022-03-13 21:52:51 · 6220 阅读 · 8 评论 -
SparkCore 之旅
SparkCore 之旅Spark概述Spark是什么Spark and HadoopSpark or HadoopSpark 核心模块Spark快速上手增加Scala插件增加依赖关系WordCountSpark运行环境Local模式解压缩文件启动Local环境命令行工具退出本地模式提交应用Standalone模式Yarn模式K8S & Mesos模式Windows模式部署模式对比端口号Spark运行架构Spark核心编程Spark案例实操Spark概述Spark是什么Spark是一种基于内存原创 2022-01-04 21:58:22 · 664 阅读 · 0 评论 -
Spark Core 编程之旅
Spark Core 编程之旅RDD核心属性执行原理RDD创建RDD并行度与分区RDD转换算子案例实操RDD行动算子RDD序列化RDD依赖关系RDD持久化RDD分区器RDD文件读取与保存累加器广播变量Spark案例实操Spark计算框架为了能够进行高并发和高吞吐的数据处理,封装了三大数据结构,用于处理不同的应用场景三大数据结构 :RDD : 弹性分布式数据集累加器:分布式共享只写变量广播变量:分布式共享只读变量RDDRDD(Resilient Distributed Dataset)叫做弹原创 2022-01-14 20:09:17 · 1370 阅读 · 0 评论 -
Spark内核之旅
Spark内核之旅内核概述DriverExecutor通用运行流程概述部署模式YARN模式运行机制YARN Cluster模式YARN Client模式Standalone模式运行机制Standalone Cluster模式Standalone Client模式通讯架构概述通讯架构解析任务调度机制任务调度概述Stage级调度Shuffle解析Shuffle的核心要点HashShuffle解析SortShuffle解析内存管理内核概述Spark 内核泛指 Spark 的核心运行机制 :Spark 核心原创 2022-01-19 22:50:04 · 557 阅读 · 0 评论 -
SparkStreaming 之旅
SparkStreaming 之旅概述架构背压机制DStream入门WordCount案例实操WordCount解析DStream创建RDD队列自定义数据源Kafka数据源DStream转换DStream输出优雅关闭案例实操概述Spark 流使得构建可扩展的容错流应用程序变得更加容易Spark Streaming 用于流式数据的处理Spark Streaming 支持的数据输入源很多,如:Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等数据输入后可以用 Spark 的高原创 2022-01-19 17:27:38 · 1018 阅读 · 0 评论 -
SparkSQL 之旅
SparkSQL 之旅概述Hive and SparkSQL特点DataFrameDataSet核心编程项目实战概述Spark SQL 是 Spark 用于结构化数据 ( structured data ) 处理的 Spark 模块Hive and SparkSQLSparkSQL 的前身是 Shark ,给熟悉 RDBMS 但又不理解 MapReduce 的技术人员提供快速上手的工具Hive 是早期唯一运行在 Hadoop 上的 SQL-on-Hadoop 工具但 MapReduce 计算过原创 2022-01-18 23:28:00 · 1541 阅读 · 2 评论