spark知识点总结

本文深入探讨Spark的历史、特点以及运行模式,重点解析RDD的概念、算子及其内存管理策略。此外,还详细阐述了Spark在集群中的运行流程、任务调度的详细步骤和资源分配策略,包括任务调度的前置知识、流程和资源监控机制。
摘要由CSDN通过智能技术生成

**

1、Spark简介

**
 1)、Spark的历史:2012年发布初始版本0.6版本,已经有6年的历史了。
 2)、Spark的创始人:美国加州大学的伯克利分校的AMP实验室。
 3)、Spark比MR快的原因:
   ①Spark是粗粒度的资源调度,资源复用。
   ②Spark支持基于内存迭代,MR不支持。
   ③Spark支持DAG有向无环图 task pipleline。
   ④Spark可以根据不同场景选择不同shuffle,spark shuffle 比MR性能高(sortShuffle)
5)、spark的运行模式:local、standalone、yarn、mesos。
6)、开发Spark的语言:scala、java、python、R。(Scala和Java兼容性和效率都是一样的)

2、RDD(弹性分布式数据集)(重点)

1)、RDD五大特性:(重点)

     1. RDD是由一系列的Paratition组成的。(partition个数=split切片数 约等于 block数;Spark没有读文件的方法,依赖MR读文件的方法)
     2. RDD提供的每一个算子实际上是作用在每一个Paratition上的。
     3. RDD实际上是有一系列的依赖关系的,依赖于其他的RDD。(计算的容错性;体现了RDD的弹性;父RDD不一定知道子RDD是谁,子RDD一定知道父RDD是谁)
     4. 可选:分区器作用在内部计算逻辑的返回值是kv格式的RDD上。
     5. 可选:RDD会提供一系列的最佳计算位置。(计算找数据)

2)、算子

     1. taransformation类算子
        	map(一对一)、flatMap(一对多)、filter(一对N(0、1))、join、leftouterJoin、rightouterJoin、fullouterJoin、sortBy、sortByKey、gorupBy、groupByKey、reduceBy、reduceByKey、sample、union、mappatition、mappatitionwithindex、zip、zipWithIndex。
     2. action类算子
        count、collect(将task的计算结果拉回到Driver端)、foreach(不会回收所有task计算结果,原理:将用户传入的参数推送到各个节点上去执行,只能去计算节点找结果)、saveAsTextFile(path)、reduce、foreachPatition、take、first。

(查看计算结果的方式:WEBUI、去各个节点的Worker工作目录查看)
3. 控制类算子
cache(相当于MEMOORY_ONLY)、
persist(MEMORY_ONLY、DISK_ONLY、MEMORY_AND_DISK)
控制类算子注意点:
1)、控制类算子后不能紧跟action类算子
2)、缓存单元是partition
3)、懒执行、需要action类算子触发执行。(如果application中只有一个job,没必要使用控制类算子)

3、Spark在集群中大概运行流程

 1. Driver分发task到节点运行(计算找数据)。
 2. task执行结果拉回到Driver(有可能发生OOM)。
 Driver的作用:
     1)、分发任务到计算节点运行。
     2)、监控task(thread)的运行情况。
     3)、如果task失败,会重新发送(有限制)。
     4)、可以拉回结果到Driver进程。
 结论:Driver进程会和集群频繁通信。

4、提交Application的方式

1、Client
    提交方式:spark-submit --deploy-mode client --class jarPath args
    特点:Driver进程在客户端节点启动
    适用场景:测试环境
    大概运行流程:
        1)、在Client本地启动Driver进程。
        2)、Driver会向Master为当前Application申请资源。
        3)、Master接收到请求后,会在资源充足的节点上启动Executor进程。
        4)、Driver分发task到Executor执行。
2、Cluster
    提交方式:spark-submit --depl
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值