Spark core

一、spark core运行框架

1.架构与组件:采用 master - slave 结构,Driver 为 master,负责作业调度;Executor 是 slave,执行任务。此外,独立部署有 Master(资源调度分配)和 Worker(数据处理计算),Yarn 环境有 ApplicationMaster(资源申请、任务监控)

2.核心概念:Executor 是工作节点的 JVM 进程,利用 Core 计算,可配置数量、内存和 CPU 核数。并行度指集群并行执行任务数量,受框架默认配置影响且可动态修改。有向无环图(DAG)是程序计算执行过程的抽象模型,用于表示程序拓扑结构。

3.提交流程:有 Client 和 Cluster 两种模式。Client 模式下 Driver 在本地机器运行,用于测试;Cluster 模式下 Driver 在 Yarn 集群资源中运行,适用于生产环境 。

二、RDD相关概念(弹性分布式数据集)

1.RDD 特性与核心属性:RDD 是 Spark 中基本的数据处理模型,具有弹性(存储、容错、计算、分片方面)、分布式、数据集、数据抽象、不可变、可分区并行计算等特性。其核心属性包括分区列表用于并行计算、分区计算函数对每个分区进行计算、RDD 之间的依赖关系用于组合计算模型、分区器(可选,用于 K - V 类型数据分区)和首选位置(可选,根据节点状态选择计算位置) 。

2.执行原理与序列化:

执行时,Spark 先申请资源,将数据处理逻辑分解为任务,分发到计算节点按指定模型计算。在序列化方面,需进行闭包检查,确保算子外数据可序列化,否则无法在 Executor 端执行。Spark2.0 开始支持 Kryo 序列化机制,比 Java 序列化速度快 10 倍,部分简单数据类型、数组和字符串类型已默认使用,但仍需继承 Serializable 接口 。

3.依赖关系、持久化与分区器:

RDD 依赖关系包括血缘关系(记录元数据和转换行为用于恢复丢失分区)、宽窄依赖(窄依赖指父 RDD 分区最多被子 RDD 一个分区使用,宽依赖指父 RDD 分区被多个子 RDD 分区依赖且会引起 Shuffle),基于此划分阶段和任务;阶段划分(有向无环图是由点和线组成的拓扑图形,该图形具有方向,不会闭环);任务划分(RDD 任务切分中间分为:Application、Job、Stage 和 Task)

持久化方式有 Cache 缓存(默认 JVM 堆内存,action 算子触发,缓存容错机制保证计算正确执行)和 CheckPoint 检查点(将中间结果写入磁盘,切断血缘依赖,可靠性高,建议搭配 Cache 使用)

Spark 支持 Hash 分区、Range 分区和自定义分区,分区器影响 RDD 分区个数、数据分区及 Reduce 个数,只有 Key - Value 类型的 RDD 才有分区器

4.文件读取与保存:Spark 可读取和保存多种文件格式,如 text、csv、sequence、object 文件,支持本地文件系统、HDFS、HBASE、数据库等文件系统。针对不同文件格式有相应的读取和保存方法, textFile 用于读取文本文件,saveAsTextFile 用于保存为文本文件。

三、Spark - Core 编程(一)

1.环境准备与配置:需要 Jdk1.8、Scala2.12 版本,在 Idea 集成开发环境中安装 Scala 插件。创建 Maven 项目时,在 pom.xml 中添加 Spark - core 和相关插件依赖,如 scala - maven - plugin 用于编译 Scala 代码,maven - assembly - plugin 用于打包。

2.WordCount 程序实现:创建 Spark - core 子模块,将 java 文件夹重命名为 scala,在其中编写 WordCount 程序。程序通过读取文件、分词、转换数据结构、分组聚合统计单词数量,最后采集结果并打印。运行程序前需在项目 resources 目录中创建 log4j.properties 文件配置日志,降低日志级别以减少干扰,更好查看程序执行结果。

Spark-Core文档是本人经三年总结笔记汇总而来,对于自我学习Spark核心基础知识非常方便,资料中例举完善,内容丰富。具体目录如下: 目录 第一章 Spark简介与计算模型 3 1 What is Spark 3 2 Spark简介 3 3 Spark历史 4 4 BDAS生态系统 4 5 Spark与Hadoop的差异 5 6 Spark的适用场景 6 7 Spark成功案例 6 第二章 Spark开发环境搭建 8 1 Spark运行模式 8 2 Spark环境搭建 8 2.1Scala的安装 8 2.2Spark的单节点配置 9 2.3Spark-Standalone集群配置 9 2.4Spark-on-Yarn模式配置 12 2.5Spark-on-Mesos模式配置 13 2.6Hive-on-Spark配置 13 第三章 Spark计算模型 15 1 RDD编程 15 1.1弹性分布式数据集RDD 15 1.2构建RDD对象 15 2RDD操作 15 2.1将函数传递给Spark 16 2.2了解闭包 16 2.3Pair RDD模型 17 2.4Spark常见转换操作 18 2.5Spark常见行动操作 20 2.6RDD持久化操作 21 2.7注意事项 23 2.7并行度调优 24 2.8分区方式 25 3Examle:PageRank 27 第四章 Spark编程进阶 29 1共享变量 29 1.1累加器 30 1.2广播变量 31 2基于分区进行操作 32 3与外部程序间的管道 33 4数值RDD的操作 34 5 Spark Shuffle机制 34 第五章 Spark调优与调试 39 1开发调优: 40 1.1调优概述 40 1.2原则一:避免创建重复的RDD 40 1.3原则二:尽可能复用同一个RDD 41 1.4原则三:对多次使用的RDD进行持久化 42 1.5原则四:尽量避免使用shuffle类算子 43 1.6原则五:使用map-side预聚合的shuffle操作 44 1.7原则六:使用高性能的算子 45 1.8原则七:广播大变量 46 1.9原则八:使用Kryo优化序列化性能 47 1.10原则九:优化数据结构 48 2资源调优 48 2.1调优概述 48 2.2 Spark作业基本运行原理 49 2.3资源参数调优 50 第六章 Spark架构和工作机制 52 1 Spark架构 52 1.1 Spark架构组件简介 52 1.2 Spark架构图 54 2 Spark工作机制 54 2.1 Spark作业基本概念 54 2.2 Spark程序与作业概念映射 55 2.3 Spark作业运行流程 55 3 Spark工作原理 55 3.1 作业调度简介 55 3.2 Application调度 56 3.3 Job调度 56 3.4 Tasks延时调度 56 第七章 Spark运行原理 57 1 Spark运行基本流程 57 2 Spark在不同集群中的运行架构 58 2.1 Spark on Standalone运行过程 59 2.2 Spark on YARN运行过程 60
### 关于 Apache Spark Core #### 概述 Apache Spark Core 是整个 Spark 生态系统的基石,提供了基本的功能支持和其他高级库的基础。它实现了任务调度、内存管理、错误恢复以及与存储系统接口等功能[^3]。 #### 功能 Spark Core 提供了一系列丰富的API用于执行并行操作,主要包括: - **弹性分布式数据集 (RDD)**:这是 Spark 中最基本的数据抽象,表示不可变的、分区记录集合,可以在多个节点上进行高效的操作。 - **转换(Transformation)** 和 **动作(Action)** :通过定义一系列懒加载式的转换来构建 RDD 血缘关系链,在最终触发行动算子时才真正启动计算过程[^1]。 ```java // 创建一个简单的 JavaRDD<String> List<Integer> data = Arrays.asList(1, 2, 3, 4); JavaRDD<Integer> distData = sparkContext.parallelize(data); // 对 RDD 进行 map 转换 JavaRDD<Integer> result = distData.map(x -> x * 2).collect(); ``` - **持久化机制**:允许用户将中间结果缓存在内存中以便后续重复使用,从而减少磁盘 I/O 开销提高性能。 #### 使用场景 由于其强大的功能特性,Spark Core 广泛应用于各种大数据处理场合: - 大规模日志分析:能够快速解析海量的日志文件,并从中提取有价值的信息。 - 实时流式处理:尽管主要由 Spark Streaming 组件负责,但是底层依然依赖于 Spark Core 来完成实际的任务分配和执行逻辑。 - 图形算法运算:借助 GraphX 扩展包,可以方便地实施社交网络分析等复杂图形结构上的计算工作。 - 机器学习模型训练:配合 MLlib 库一起使用时,可加速迭代优化过程中的参数调整环节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值