Spark大数据分析与实战
文章平均质量分 94
Spark大数据分析与实战笔记
想你依然心痛
这个作者很懒,什么都没留下…
展开
-
Spark大数据分析与实战笔记(第三章 Spark RDD 弹性分布式数据集-05)
Spark的任务调度是指Spark集群中的任务如何被调度和执行。Spark的任务调度主要基于两个概念:DAG和RDD。DAG是有向无环图(Directed Acyclic Graph)的简称,用来描述Spark作业中的任务依赖关系。在Spark中,作业被划分为多个阶段(Stage),每个阶段包含一组可以并行执行的任务。阶段之间的依赖关系由DAG表示。DAG的每个节点代表一个RDD(Resilient Distributed Dataset),而边代表RDD之间的依赖关系。原创 2024-02-25 11:16:40 · 24342 阅读 · 41 评论 -
Spark大数据分析与实战笔记(第三章 Spark RDD 弹性分布式数据集-04)
设置检查点(checkPoint)方式,本质上是将RDD写入磁盘进行存储。当RDD在进行宽依赖运算时,只需要在中间阶段设置一个检查点进行容错,即通过Spark中的sparkContext对象调用setCheckpoint()方法,设置一个容错文件系统目录(如HDFS)作为检查点checkpoint,将checkpoint的数据写入之前设置的容错文件系统中进行高可用的持久化存储,若是后面有节点出现宕机导致分区数据丢失,则可以从做检查点的RDD开始重新计算即可,不需要进行从头到尾的计算,这样就会减少开销。原创 2024-02-24 10:04:47 · 24661 阅读 · 27 评论 -
Spark大数据分析与实战笔记(第三章 Spark RDD 弹性分布式数据集-03)
依赖关系分为窄依赖和宽依赖,窄依赖表示每个父RDD的分区最多只被一个子RDD的分区使用,宽依赖表示每个父RDD的分区可以被多个子RDD的分区使用。需要注意的是,RDD的分区函数是针对(Key,Value)类型的RDD,分区函数根据Key对RDD元素进行分区。RDD是Spark提供的最重要的抽象概念,我们可以将RDD理解为一个分布式存储在集群中的大型数据集合,不同RDD之间可以通过转换操作形成依赖关系实现管道化,从而避免了中间结果的I/O操作,提高数据处理的速度和性能。接下来,本章将针对RDD进行详细讲解。原创 2024-02-22 12:31:05 · 24762 阅读 · 24 评论 -
Spark大数据分析与实战笔记(第三章 Spark RDD 弹性分布式数据集-02)
RDD经过一系列的“转换”操作,每一次转换都会产生不同的RDD,以供给下一次“转换”操作使用,直到最后一个RDD经过“行动”操作才会被真正计算处理,并输出到外部数据源中,若是中间的数据结果需要复用,则可以进行缓存处理,将数据缓存到内存中。需要注意的是,RDD采用了惰性调用,即在RDD的处理过程中,真正的计算发生在RDD的"行动”操作,对于"行动"之前的所有"转换"操作,Spark只是记录下“转换”操作应用的一些基础数据集以及RDD相互之间的依赖关系,而不会触发真正的计算处理。人生很长,不必慌张。原创 2024-02-21 10:52:04 · 25853 阅读 · 18 评论 -
Spark大数据分析与实战笔记(第三章 Spark RDD弹性分布式数据集-01)
RDD (Resilient Distributed Dataset),即弹性分布式数据集,是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并且还能控制数据的分区。对于迭代式计算和交互式数据挖掘,RDD可以将中间计算的数据结果保存在内存中,若是后面需要中间结果参与计算时,则可以直接从内存中读取,从而可以极大地提高计算速度。每个RDD都具有五大特征,具体如下:分区列表。原创 2024-02-06 16:36:59 · 25828 阅读 · 16 评论 -
Spark大数据分析与实战笔记(第二章 Spark基础-06)
Spark-Shell通常在测试和验证我们的程序时使用的较多,然而在生产环境中,通常会在IDEA开发工具中编写程序,然后打成Jar包,最后提交到集群中执行。下面讲解使用IDEA工具开发WordCount单词计数程序的相关步骤。Maven是一个项目管理工具,虽然我们刚才创建好了项目,但是却不能识别Spark类,因此,我们需要将Spark相关的依赖添加到Maven项目中。集群模式是指将Spark程序提交至Spark集群中执行任务,由Spark集群负责资源的调度,程序会被框架分发到集群中的节点上并发地执行。原创 2024-02-05 09:04:24 · 26297 阅读 · 18 评论 -
Spark大数据分析与实战笔记(第二章 Spark基础-04)
这句来自现代作家安妮宝贝的经典句子,它表达了对他人的赞美与崇拜。按回车键提交Spark作业后,观察Spark集群管理界面,其中“Running Applications”列表表示当前Spark集群正在计算的作业,执行几秒后,刷新界面,在Completed Applications表单下,可以看到当前应用执行完毕,返回控制台查看输出信息,出现了“无论是初学者还是有一定经验的开发者,通过深入学习Spark的运行架构与原理,都能够更好地利用Spark处理大数据任务,并开发出高效、可扩展的Spark应用程序。原创 2024-01-05 09:36:48 · 28209 阅读 · 22 评论 -
Spark大数据分析与实战笔记(第二章 Spark基础-03)
然后,我们将通过实际的运行架构实例分析,来具体了解Spark在不同的集群模式下的运行架构和工作流程。Spark应用在集群.上运行时,包括了多个独立的进程,这些进程之间通过驱动程序(Driver Program)中的SparkContext对象进行协调,SparkContext对象能够 与多种集群资源管理器(Cluster Manager)通信,一旦与集群资源管理器连接,Spark会为该应用在各个集群节点上申请执行器(Executor) ,用于执行计算任务和存储数据。原创 2024-01-04 08:06:53 · 31024 阅读 · 22 评论 -
Spark大数据分析与实战笔记(第二章 Spark基础-02)
Spark Standalone集群是主从架构的集群模式,由于存在单点故障问题,解决这个问题需要用到Zookeeper服务,其基本原理是将Standalone集群连接到同一个Zookeeper实例并启动多个Master节点,利用Zookeeper提供的选举和状态保存功能,可以使一台Master节点被选举,另一台Master节点处于Standby状态。当活跃的Master发生故障时,Standby状态的Master就会被激活,恢复集群调度,整个恢复的过程可能需要1-2分钟。或者看我之前的博客也行。原创 2024-01-02 08:03:45 · 32786 阅读 · 23 评论 -
Spark大数据分析与实战笔记(第二章 Spark基础-01)
Spark在2013年加入Apache孵化器项目,之后获得迅猛的发展,并于2014年正式成为Apache软件基金会的顶级项目。Spark生态系统已经发展成为一个可应用于大规模数据处理的统一分析引擎,它是基于内存计算的大数据并行计算框架,适用于各种各样的分布式平台的系统。在Spark生态圈中包含了Spark SQL、Spark Streaming、GraphX、MLlib等组件。如下图所示:Spark Core。原创 2024-01-01 08:28:43 · 33576 阅读 · 26 评论 -
Spark大数据分析与实战笔记(第一章 Scala语言基础-5)
下面,定义一个方法matchTest(),方法的参数是一个整形字段,而方法的调用则是对参数进行模式匹配,若参数匹配的是1,则打印输出“one”;被包在花括号内没有match的一组case语句是一个偏函数,它是PartialFunction[A, B]的一个实例,A代表输入参数类型,B代表返回结果类型,常用作输入模式匹配,偏函数最大的特点就是它只接受和处理其参数定义域的一个子集。注意::: 操作符是右结合的,如9 :: 5 :: 2 :: Nil相当于 9 :: (5 :: (2 :: Nil))原创 2023-10-22 20:06:34 · 40431 阅读 · 68 评论 -
Spark大数据分析与实战笔记(第一章 Scala语言基础-4)
在Scala中,Trait(特质)的功能类似于Java中的接口,但Trait的功能却比Java中的接口强大。在一个源文件中有一个类和一个单例对象,若单例对象名与类名相同,则把这个单例对象称作伴生对象(companion object),这个类则被称为是单例对象的伴生类(companion class)。在Scala中,没有静态方法或静态字段,所以不能用类名直接访问类中的方法和字段,而是创建类的实例和实例对象对访问类中的方法和字段。当类创建好之后,若是想要访问类中的方法和字段,就需要创建一个对象。原创 2023-10-18 21:25:11 · 41650 阅读 · 131 评论 -
Spark大数据分析与实战笔记(第一章 Scala语言基础-3)
Scala中的数组分为定长数组和变长数组,定义定长数组,需要使用new关键字,而定义变长数组时,则需要导包import scala.collection.mutable.ArrayBuffer。不可变集合类,相比之下,初始化后就永远不会改变。注:定义定长数组,需要使用new关键字,而定义变长数组时,则需要导包import scala.collection.mutable.ArrayBuffer。Scala的元组是对多个不同类型对象的一种简单封装,它将不同的值用小括号括起来,并用逗号作分隔,即表示元组。原创 2023-09-04 08:09:35 · 41771 阅读 · 91 评论 -
Spark大数据分析与实战笔记(第一章 Scala语言基础-2)
Spark是专为大规模数据处理而设计的快速通用的计算引擎,它是由Scala语言开发实现的,关于大数据技术,本身就是计算数据,而Scala既有面向对象组织项目工程的能力,又具备计算数据的功能,同时Spark和Scala的紧密集成,本书将采用Scala语言开发Spark程序,所以学好Scala将有助于我们更好的掌握Spark框架。另一种是使用关键字val声明的变量,也叫常量,值是不可变的。声明变量时,我们可以不给出变量的类型,因为在初始化的时候,Scala的类型推断机制能够根据变量的初始化的值自动推算出来。原创 2023-08-26 07:36:25 · 42650 阅读 · 114 评论 -
Spark大数据分析与实战笔记(第一章 Scala语言基础-1)
Scala于2001年由洛桑联邦理工学院(EPFL)的编程方法实验室研发,它由Martin Odersky(马丁•奥德斯基)创建。目前,许多公司依靠Java进行的关键性业务应用转向或正在转向Scala,以提高其开发效率、应用程序的可扩展性和整体的可靠性。Scala是Scalable Language的简称,它是一门多范式的编程语言,其设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。具体如下:Scala是面向对象的Scala是一种纯粹的面向对象语言,每一个值都是一个对象。原创 2023-08-24 07:28:32 · 41907 阅读 · 86 评论 -
Hadoop HA集群两个NameNode都是standby或者主NameNode是standby,从NameNode是active的情况集锦
这里说一下配置Hadoop HA集群可能出现的两种情况,第一种就是两个NameNode都是standby,第二种就是主Master是standby,从Master是active。原创 2023-08-17 21:54:11 · 50218 阅读 · 140 评论