Spark 知识点

**一 spark **

Spark是一个分布式计算框架 ,你对 RDD 进行 map 操作,其实是对它里面的每一个分区进行 map 进行操作

你对 RDD 里面的数据进行操作,其实 RDD 里面 不装数据, RDD里面有多个分区 ,每个分区会生成 多个 task

你对 RDD 操作,本质上是对 RDD 里面的每个分区进行操作 ,分区会记录你的操作信息(调哪个方法,传哪个函数)
以后会根据这个分区信息 生成task

spark程序的流程 :
读取或者转化数据创建一系列 RDD ,然后使用转化操作生成新的 RDD ,最后使用 行动操作得到结果 或或者将数据存储到文件存储系统中,
spark 程序 其实就是 隐式的创建杵了一个由上述操作组成的逻辑上的有向无环图,当Drive 程序运行时 ,它会把这个逻辑图转为物理执行计划

二 shuffle

概念 : 需要通过网络将数据传输到多台机器,数据被打散,但是有网络传输,不一定就有shuffle

1) 上游 RDD 的 一个分区将数据给了下游的 RDD 的多个分区,就是 shuffle
需要注意的是 ,shuffle 过程是下游的 Task 到 上游拉取数据,不是上游的 Task 发送给下游的

2) shuffle 的功能是将 具有一定规律的数据按照 指定的分区器的分区规则 ,通过网络传输到指定的一台机器的 一个分区中 即 Task 中

3) 下游的一个分区 来自上游的多个分区 ,上游的一个 RDD 分区给到下游的多个分区,只要存在这种可能性就是shuffle

三 map 和 mapPartitions 有啥区别,哪个效率更高

答: 在一般的场景下效率是一样的,如果有特殊的场景 :
比如想访问一下数据库,关联一些维度的数据
1) 如果在 map 方法里用到数据库的连接,每拿一条数据创建一个连接
2)如果用 mapPartitons 事先可以把这个连接创建好,以后可以将每个分区里面的多条数据迭代出来,用你事先创建好的链接 会更加高效一些

四 什么是 DAG

概念: 有向无环图:代表有方向的,无闭合的
是对多个 RDD 转换过程和依赖关系的描述
触发 Action 就会形成 一个完整的 DAG,一个 DAG 就是一个 job

五 什么是 Aplication

使用 SparkSubmit 向集群里面提交的一个计算机应用
一个 Application 中可以触发 一到 多次的 Action ,触发一次Action,形成一个DAG,对应一个 job
一个 Appliction 中可以有 一到多个 job

六 --executor-memory 512m

512m 的意思 :
如果你想要的内存不够 ,它不会立即退出,它会等一会

七 master
负责资源的调度

八 Drive 和 Executor

Drive
(1) 把用户程序转为任务

程序负责把用户程序转换为多个物理执行单元,这些单元也被 称为任务(task)

(2)跟踪 Executor 的运行状况

有了物理执行计划之后,Driver 程序必须再各个 Executor 进程间协调任务的调度,Exector 进程启动后,会向 Driver 进程注册自己,因此 Driver进程就可以跟踪应用中所有的 Executor节点的信息

(3)为 Ececutor 节点调度任务

Drive 程序会根据当前的 Executor 节点集合 ,尝试把所有 Task 基于数据所在位置分配给合适的 Executor 进程 ,当 Task 执行时, Executor进程会把缓存数据村粗起来,而 Driver 进程同样会跟踪这些缓存数据 的位置,并且利用这些位置信息来调度以后的任务,以尽量减少数据的网络传输

4)UI展示应用运行状况

Executor(执行器节点)

Spark Executor节点是一个工作进程,负责在Spark 作业中运行任务,任务间相互独立。Spark 应用启动时,Executor 节点被同事启动,并且始终伴随着整个Spark 应用的生命周期而存在,如果有 Executor 系欸但发生了故障或崩溃,Spark 应用也可以继续执行,会将出错的节点上的任务调度到其他Executor节点上继续运行

执行器进程有两大作用 :

1 它们负责运行组成 Spark 应用的任务,并将结果返回给驱动器进程

2 它们通过自身的块管理器(Block Manager)为用户程序要求缓存的RDD提供内存式存储
RDD 是直接缓存在 Executor 进程内的 ,因此任务可以运行时充分利用缓存数据加速运算

执行器程序通常都运行在专用的进程中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop和Spark是大数据处理领域中最流行的两个框架。以下是它们的知识点整理汇总: Hadoop: 1. Hadoop是一个开源的分布式计算框架,用于存储和处理大规模数据集。 2. Hadoop包括两个核心组件:HDFS(Hadoop分布式文件系统)和MapReduce(分布式计算框架)。 3. HDFS是一个分布式文件系统,用于存储大规模数据集。它将数据分成块并存储在不同的节点上,以实现数据的高可靠性和可扩展性。 4. MapReduce是一种分布式计算框架,用于处理大规模数据集。它将数据分成小块并在不同的节点上并行处理,以实现高效的数据处理。 5. Hadoop还包括其他组件,如YARN(资源管理器)和HBase(分布式NoSQL数据库)。 Spark: 1. Spark一个快速、通用、可扩展的分布式计算框架,用于处理大规模数据集。 2. Spark的核心组件是Spark Core,它提供了分布式任务调度、内存计算和数据处理功能。 3. Spark还包括其他组件,如Spark SQL(用于结构化数据处理)、Spark Streaming(用于实时数据处理)和MLlib(用于机器学习)。 4. Spark使用RDD(弹性分布式数据集)作为其基本数据结构,它是一个可分区、可并行计算和可恢复的数据集合。 5. Spark支持多种编程语言,如Scala、Java、Python和R。 总结: Hadoop和Spark都是用于处理大规模数据集的分布式计算框架,它们有不同的核心组件和特点。Hadoop主要用于存储和处理大规模数据集,而Spark则更加注重数据处理的速度和效率。在实际应用中,可以根据具体需求选择合适的框架。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值