大数据学习之Spark
文章平均质量分 81
介绍大数据学习中的Spark部分
Faith_xzc
PowerData联合创始人,某数据库在职,对Java和大数据感兴趣,欢迎大家交流学习!
展开
-
搞懂 Spark 系列之深入理解Spark内存管理
本文详细介绍了Spark内存管理,包括Spark内存概述、内存管理机制及底层源码,欢迎交流讨论!原创 2023-02-09 07:58:55 · 3857 阅读 · 1 评论 -
搞懂 Spark 系列之 Spark Shuffle 的前世今生
本文详细介绍了Spark Shuffle的发展历程、为什么会产生Spark Shuffle以及Shuffle包括什么,并举例说明了Shuffle的使用。欢迎交流讨论!原创 2022-12-27 06:30:00 · 3716 阅读 · 10 评论 -
大数据基准测试工具HiBench部署与测试
本文介绍了大数据基准测试工具HiBench的部署,并进行了测试。欢迎大家交流讨论!原创 2022-03-17 05:30:00 · 5359 阅读 · 89 评论 -
Spark源码阅读04-Spark运行架构之Standalone运行模式
本文介绍了Spark运行结构中Standalone运行模式的运行流程及代码实现原理,同时介绍了环境搭建及具体分析。欢迎大家交流讨论!原创 2021-12-23 09:52:49 · 721 阅读 · 42 评论 -
Spark源码阅读04-Spark运行架构之Local运行模式
本文介绍了Spark的本地运行模式,根据其运行流程图分析了源码及运行模式的类调用。欢迎交流讨论!原创 2021-12-13 06:00:00 · 1978 阅读 · 24 评论 -
Spark源码阅读03-Spark存储原理之共享变量
本文介绍了Spark的共享变量(广播变量和累加器)概念及使用。欢迎交流学习!原创 2021-12-08 19:58:25 · 1973 阅读 · 15 评论 -
Spark源码阅读03-Spark存储原理之序列化和压缩
本文介绍了Spark中用于提升性能的两个重要手段序列化和压缩。欢迎讨论学习!原创 2021-12-07 10:28:04 · 967 阅读 · 11 评论 -
Spark源码阅读03-Spark存储原理之存储分析
Spark存储分析Spark的存储采取了主从模式,即Master / Slave模式,整个存储模块使用RPC的消息通信方式。其中:Master负责整个应用程序运行期间的数据块元数据的管理和维护Slave一方面负责将本地数据块的状态信息上报给Master,另一方面接受从Master传过来的执行命令。如获取数据块状态、删除RDD/数据块等命令。每个Slave存在数据传输通道,根据需要在Slave之间进行远程数据的读取和写入。Spark的存储整体框架图如下:根据Spark存储整体框架图,下面将根据原创 2021-11-25 08:53:06 · 1022 阅读 · 0 评论 -
Spark源码阅读02-Spark核心原理之监控管理
监控管理监控管理UI监控实时UI监控历史UI监控Metrics输入源(Metrics Source)介绍输出方式(Metrics Sink)介绍TEST监控管理Spark提供了UI监控、Spark Metrics和REST 3种方式监控应用程序运行状态。其中:UI 监控以网页方式提供用户监控调度阶段、存储、运行环境和Executor参数等信息Spark Metrics通过定制的方式,将应用程序的运行情况以多种方式展现出来,REST则提供API给用户,根据API开发监控应用程序运行的各阶段消息原创 2021-11-20 11:26:57 · 2002 阅读 · 0 评论 -
Spark源码阅读02-Spark核心原理之容错及HA(高可用)
容错及HA(高可用)概念介绍Executor异常Worker异常Master异常概念介绍容错指的是一个系统在部分模块出现故障时还能否持续的对外提供服务,一个高可用(HA)的系统应该具有很高的容错性,系统不会因为一点小的错误导致系统性能严重下降或者造成系统瘫痪。对于一个大的集群系统来说,机器故障、网络异常等都是很常见的,其不能因为这些原因造成集群系统不能提供服务。所以像Spark这样的大型分布式计算集群提供了很多的容错机制来提高整个系统的可用性,Spark的容错机制可以通过Executor、Worker原创 2021-11-16 20:09:35 · 2001 阅读 · 0 评论 -
Spark源码阅读02-Spark核心原理之调度算法
Spark核心原理之调度算法Spark核心原理之调度算法应用程序之间作业及调度阶段之间1.创建调度池2.调度池加入调度内容3.提供已排序的任务集管理器任务之间1.数据本地性2.延迟执行3.任务执行调度算法Spark核心原理之调度算法在Spark的调度算法中,有三种粒度的调度算法。在应用程序之间可以任务执行的是有条件的FIFO策略,在作业及调度阶段提供了FIFO模式和FAIR模式,而任务之间是 由数据本地性和延迟执行等因素共同决定的。下面根据源码对这三种调度算法分别介绍。应用程序之间在独立运行模式下中原创 2021-11-14 01:24:17 · 1166 阅读 · 4 评论 -
Spark源码阅读02-Spark核心原理之作业执行原理
概述Spark的作业调度主要是指基于RDD的一系列操作构成的一个作业,在Executor中执行的过程。其中,在Spark作业调度中最主要的是DAGScheduler和TaskScheduler两个调度器的执行。这两个调度器的主要任务如下:DAGScheduler负责任务逻辑调度,将作业拆分成不同阶段的具有依赖关系的任务集TaskScheduler负责具体任务的调度执行下图是Spark的作业和任务调度系统:上图的具体过程详细介绍如下:(1)Spark应用程序进行各种各样转换操作,通过行动操原创 2021-11-08 19:54:10 · 1811 阅读 · 0 评论 -
Spark源码阅读02-Spark核心原理之消息通信原理
Spark消息通信架构在Spark中定义了通信框架接口,这些接口实现中调用了Netty的具体方法。通信框架使用了工厂设计模式,这种模式实现了对Netty的解耦,能够根据需要引入其他的消息通信工具。Spark消息通信类图如下:通信框架在上图中虚线的部分。其具体实现步骤为:①定义RpcEnv和RpcEnvFactory两个抽象类,其中在RpcEnv中定义了RPC通信框架启动、停止和关闭等抽象方法;在RpcEnvFactory中定义了创建抽象方法②在NettyRpcEnv和NettyRpcEnvFa原创 2021-11-06 09:30:26 · 1696 阅读 · 4 评论 -
Spark源码阅读01-SparkConf
SparkConfSparkConf的介绍SparkConf类的定义介绍SparkConf配置项的设置SparkConf配置项的获取SparkConf配置项的校验SparkConf的介绍SparkConf用于管理Spark所有的配置项,不论是使用旧的SparkContext作为访问Spark的入口,还是使用新提供的SparkSession统一访问入口,我们会使用SparkConf设置各类参数,并传递给SparkContext或SparkSession。/** * Configuration for原创 2021-10-19 22:20:10 · 669 阅读 · 0 评论 -
Spark源码学习之IDEA源码阅读环境搭建
软件准备(1)Java 1.8(2)Scala 2.11.12(需要在IDEA中安装)(3)Maven 3.8.2(需要在IDEA中配置)(4)Git 2.33以上软件需要安装好,并进行环境配置。(5)spark 2.4.3 源码(官网可下载)编译源码(1)修改MAVEN_OPTS,增加Maven编译时内存的大小:在Maven安装目录下找到bin/mvn.cmd文件,打开在文件中添加MAVEN_OPTS="-Xmx2g -XX:MetaspaceSize=2G -XX:Reserve原创 2021-10-06 21:46:57 · 1051 阅读 · 3 评论 -
SparkSQL在IDEA中的使用
IDEA开发SparkSQL上一篇博客SparkSQL核心编程所有举的例子都是在虚拟机的命令行实现的,但是实际开发中,都是使用 IDEA 进行开发的,所以下面介绍下SparkSQL在IDEA中的使用。准备工作添加所需要的依赖(包括spark-core依赖,spark-sql依赖,mysql-connector-java依赖) <dependency> <groupId>org.apache.spark</groupId> <artifactId原创 2021-08-27 23:00:27 · 1588 阅读 · 1 评论 -
SparkSQL核心编程
目录基本介绍DataFrame创建 DataFrameDataSet创建 DataSetRDD 转换为 DataSetDataSet 转换为 RDDDataFrame 和 DataSet 转换RDD、DataFrame、DataSet 三者的关系三者的共性三者的区别三者的互相转换基本介绍DataFrame 和 DataSet 模型是Spark SQL 所提供的两个编程抽象,SparkSQL核心编程主要是关于使用DataFrame 和 DataSet 模型进行编程以及它们之间的关系和转换。Spark C原创 2021-08-26 22:48:11 · 661 阅读 · 2 评论 -
SparkSQL介绍
基本概念Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块。 其前身是 Shark,给熟悉 RDBMS ,但又不理解 MapReduce 的技术人员提供快速上手的工具。 Shark 是伯克利实验室 Spark 生态环境的组件之一,是基于 Hive 所开发的工具,其能运行在 Spark 引擎上, SparkSQL无论在数据兼容、性能优化、组件扩展方面都得到了极大的方便。数据兼容方面 SparkSQL 不但兼容 Hive,还可以从 RDD、pa原创 2021-08-23 23:46:52 · 1358 阅读 · 2 评论 -
Spark 案例(依据电商网站的真实需求)
目录数据说明需求1:Top10 热门品类需求说明实现方案一需求分析需求实现实现方案二需求分析需求实现实现方案三需求分析需求实现需求 2:Top10 热门品类中每个品类的 Top10 活跃Session 统计需求说明需求分析需求实现数据说明在前面的博客中已经介绍了了 Spark 的基础编程方式,接下来,再看下在实际的工作中如何使用这些 API 实现具体的需求。这些需求是电商网站的真实需求,所以在实现功能前,先将数据准备好。数据文档链接提取码:xzc6上面的数据图是从数据文件中截取的一部分内容,表示原创 2021-08-21 22:49:02 · 1771 阅读 · 1 评论 -
Spark的RDD 文件读取与保存
RDD 文件读取与保存Spark 的数据读取及数据保存可以从两个维度来作区分:文件格式以及文件系统。其中:(1)文件格式分为:text 文件、csv 文件、sequence 文件以及Object 文件;(2)文件系统分为:本地文件系统、HDFS、HBASE 以及数据库。(这里只介绍常见的text 文件、sequence 文件以及Object 文件)文件介绍text文件: text文件是文本文件。sequence 文件: SequenceFile 文件是Hadoop 用来存储二进制形式的key-原创 2021-08-20 22:21:30 · 2406 阅读 · 2 评论 -
Spark的RDD分区器
RDD 分区器基本介绍Spark 目前支持Hash 分区、Range 分区和用户自定义分区。Hash 分区为当前的默认分区。分区器直接决定了RDD 中分区的个数、RDD 中每条数据经过Shuffle 后进入哪个分区,进而决定了Reduce 的个数。(1)只有Key-Value 类型的RDD 才有分区器,非 Key-Value 类型的RDD 分区的值是 None。(2)每个RDD 的分区 ID 范围:0 ~ (numPartitions - 1),决定这个值是属于那个分区的。1. Hash 分区说原创 2021-08-19 21:48:11 · 640 阅读 · 1 评论 -
Spark的RDD持久化
RDD持久化1. RDD Cache 缓存说明RDD 通过Cache 或者Persist 方法将前面的计算结果缓存,默认情况下会把数据以缓存在JVM 的堆内存中。但是并不是这两个方法被调用时立即缓存,而是触发后面的 action 算子时,该RDD 将会被缓存在计算节点的内存中,并供后面重用。// cache 操作会增加血缘关系,不改变原有的血缘关系 println(wordToOneRdd.toDebugString) // 数据缓存。 wordToOneRdd.cache() //原创 2021-08-19 21:35:12 · 939 阅读 · 1 评论 -
Spark的RDD依赖关系
RDD依赖关系RDD 血缘关系RDD 只支持粗粒度转换,即在大量记录上执行的单个操作。将创建 RDD 的一系列Lineage(血统)记录下来,以便恢复丢失的分区。RDD 的Lineage 会记录RDD 的元数据信息和转换行为,当该RDD 的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。package com.atguigu.bigdata.spark.core.rdd.depimport org.apache.spark.{SparkConf, SparkContext}原创 2021-08-18 21:50:07 · 604 阅读 · 1 评论 -
Spark的RDD序列化
RDD序列化1. 闭包检查从计算的角度, 算子以外的代码都是在Driver 端执行, 算子里面的代码都是在 Executor端执行。那么在 scala 的函数式编程中,就会导致算子内经常会用到算子外的数据,这样就形成了闭包的效果,如果使用的算子外的数据无法序列化,就意味着无法传值给Executor端执行,就会发生错误,所以需要在执行任务计算前,检测闭包内的对象是否可以进行序列化,这个操作我们称之为闭包检测。注:Scala2.12 版本后闭包编译方式发生了改变 。2. 序列化方法和属性从计算的角度,原创 2021-08-18 21:34:57 · 682 阅读 · 1 评论 -
Spark的RDD行动算子
目录基本概念算子介绍1. reduce2. collect3. count4. first5. take6. takeOrdered案例实操1-67. aggregate8. fold案例实操7-89. countByKey案例实操10. save相关算子案例实操11. foreach案例实操基本概念行动算子主要是将在数据集上运行计算后的数值返回到驱动程序,从而触发触发作业(Job)的执行。其底层代码调用的就是runJob的方法,底层会创建ActiveJob,并提交执行。算子介绍1. reduce原创 2021-08-17 21:49:58 · 1077 阅读 · 2 评论 -
Spark的RDD转换算子
目录RDD转换算子Value 类型1. map函数定义案例实操2. mapPartitions函数定义案例实操map 和mapPartitions 的区别3. mapPartitionsWithIndex函数定义案例实操4. flatMap函数定义案例实操5. glom函数定义案例实操6. groupBy函数定义案例实操7. filter函数定义案例实操8. sample函数定义案例实操9. distinct函数定义案例实操10. coalesce函数定义案例实操11. repartition函数定义案例实原创 2021-08-16 23:41:57 · 612 阅读 · 1 评论 -
Spark核心编程
基本介绍Spark 计算框架为了能够进行高并发和高吞吐的数据处理,封装了三大数据结构,用于处理不同的应用场景。三大数据结构分别是:RDD : 弹性分布式数据集累加器:分布式共享只写变量广播变量:分布式共享只读变量...原创 2021-08-14 22:51:22 · 764 阅读 · 1 评论 -
Spark运行架构
运行架构Spark 框架的核心是一个计算引擎,整体来说,它采用了标准 master-slave 的结构。 如下图所示,它展示了一个 Spark 执行时的基本结构。图形中的Driver 表示master,负责管理整个集群中的作业任务调度。图形中的Executor 则是 slave,负责实际执行任务。核心组件Driver介绍Spark 驱动器节点,用于执行 Spark 任务中的 main 方法,负责实际代码的执行工作。Driver 在Spark 作业执行时主要负责:将用户程序转化为作业(job)原创 2021-08-12 23:00:24 · 1015 阅读 · 1 评论 -
Spark的Yarn模式及其案例
目录基本概念Yarn模式搭建1. 解压缩文件2.修改配置文件启动集群测试Spark中examples案例1. 提交应用2.Web 页面查看日志配置历史服务器1.具体步骤2.重新提交应用3.Web 页面查看日志基本概念独立部署(Standalone)模式由Spark 自身提供计算资源,无需其他框架提供资源。这种方式降低了和其他第三方资源框架的耦合性,独立性非常强。但是也要记住,Spark 主要是计算框架,而不是资源调度框架,所以本身提供的资源调度并不是它的强项,所以还是和其他专业的资源调度框架集成会更靠谱原创 2021-08-11 12:37:02 · 2894 阅读 · 1 评论 -
Spark配置高可用(HA)
基本介绍所谓的高可用是因为当前集群中的 Master 节点只有一个,所以会存在单点故障问题。所以为了解决单点故障问题,需要在集群中配置多个 Master 节点,一旦处于活动状态的 Master发生故障时,由备用 Master 提供服务,保证作业可以继续执行。这里的高可用一般采用Zookeeper 设置。集群规划步骤停止集群[root@hadoop102 spark-standalone]# sbin/stop-all.sh启动Zookeeper[root@hadoop102原创 2021-08-10 23:01:37 · 2667 阅读 · 2 评论 -
Spark配置历史服务
由于spark-shell 停止掉后,集群监控页面就看不到历史任务的运行情况,所以开发时都配置历史服务器记录任务运行情况。步骤修改 spark-defaults.conf.template 文件名为spark-defaults.conf[root@hadoop102 spark-standalone]# mv spark-defaults.conf.template spark-defaults.conf 修改 spark-default.conf 文件,配置日志存储路径spark.e原创 2021-08-10 21:56:14 · 801 阅读 · 1 评论 -
Call From hadoop102/192.168.121.102 to hadoop102:9000 failed on connection exception
问题截图问题描述在测试Spark中examples案例时,出现Call From hadoop102/192.168.121.102 to hadoop102:9000 failed on connection exception: java.net.ConnectException: 拒绝连接的错误。问题原因hadoop集群没有开启解决办法打开hadoop集群[root@hadoop102 hadoop-2.7.2]# sbin/start-all.sh结果截图...原创 2021-08-10 17:24:15 · 1411 阅读 · 0 评论 -
Spark的Standalone模式及案例
文章目录基本概念Standalone模式搭建1.解压缩文件2.修改配置文件启动集群1. 执行脚本命令2. 查看服务运行的进程3. 查看 UI 界面测试Spark中examples案例1. 提交应用2. 结果截图基本概念Spark的local 本地模式毕竟只是用来进行练习演示的,真实工作中还是要将应用提交到对应的集群中去执行,首先先学习只使用Spark 自身节点运行的集群模式,也就是所谓的独立部署(Standalone)模式。Spark 的Standalone 模式体现了经典的master-slave 模原创 2021-08-10 17:09:28 · 804 阅读 · 0 评论 -
Spark的Local模式及案例
Spark的Local模式及案例基本概念Local环境搭建1. 解压缩文件2.修改文件名启动 Local 环境WordCount案例1.添加文件2.执行命令3.结果截图测试Spark中examples案例1.退出本地模式2.提交应用3.结果截图基本概念Spark的Local 模式,就是不需要其他任何节点资源就可以在本地执行Spark 代码的环境,一般用于教学,调试,演示等。Local环境搭建1. 解压缩文件将 spark-3.0.0-bin-hadoop3.2.tgz 文件上传到Linux 并解压原创 2021-08-09 11:48:08 · 807 阅读 · 0 评论 -
Spark快速上手-WordCount案例
在此之前,我已经用MapReduce 框架实现了WordCount案例,接下来,我开始学习数据处理的另外一个非常重要的方法:Spark。首先,使用WordCount案例实现Spark快速上手。创建Maven项目1. 增加Scala插件使用的Spark 版本为 3.0.0,默认采用的Scala 编译版本为 2.12操作步骤2. 增加依赖关系修改 Maven 项目中的POM 文件,增加Spark 框架的依赖关系(请注意对应版本) <dependencies>原创 2021-08-09 10:56:19 · 419 阅读 · 1 评论