博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark基础
阅读量:3958 次
发布时间:2019-05-24

本文共 3736 字,大约阅读时间需要 12 分钟。

​​​​​Spark概念

spark 是基于内存的(优先使用内存),分布式的大数据计算框架

spark和hadoop-mapreduce的区别

Spark 在 MapReduce 之上发展而来,继承了分布式并行计算的优点并改进了缺陷

mapreduce  读 -- 处理  -- 写磁盘  --  读  -- 处理  -- 写

spark           读 -- 处理  -- 处理   --  (需要的时候)写磁盘 

1、高效率:Spark把中间数据放到内存中,MapReduce计算结果需要保存到磁盘上,Spark支持DAG(有向无环)图的分布式并行计算,减少了迭代过程中数据的磁盘IO,提高了处理效率

 2、高容错:Spark 引进了弹性分布式数据集 RDD ,某个节点如果数据集一部分丢失,则可以根据“血统”对它们进行重建,另外还可以通过CheckPoint实现容错

3、高通用:MapReduce 只有 Map 和 Reduce 两种操作,Spark 的数据集操作类型有很多,大致分为:Transformations和Actions两大类 。Transformations 常用包括 Map、Filter、FlatMap、Sample、GroupByKey、ReduceByKey、Union、Join、MapValues、Sort,Actions 常用包括 Collect、Reduce、Count、Lookup和Save等操作

4、支持的开发语言更多,Spark 支持 4 种开发语言:scala,java,python,R

总结:Spark是MapReduce的替代方案,兼容HDFS、Hive,可融入Hadoop的生态

Spark部署模式

运行环境

模式

描述

Local

本地模式

常用于本地开发测试,如在eclipse,idea中写程序测试等。本地还分为local单线程和local-cluster多线程

Standalone

集群模式

Spark自带的一个资源调度框架,支持完全分布式。存在的Master单点故障可由ZooKeeper来实现HA

Yarn

集群模式

运行在yarn资源管理器框架之上,由yarn负责资源管理,Spark负责任务调度和计算

yarn-client

以client模式连接到YARN cluster. 集群的位置基于HADOOP_CONF_DIR 变量找到

yarn-cluster

以cluster模式连接到YARN cluster. 集群的位置基于HADOOP_CONF_DIR 变量找到

Mesos

集群模式

运行在mesos资源管理器框架之上,由mesos负责资源管理,Spark负责任务调度和计算

Kubernetes

集群模式

运行在Kubernetes资源管理的集群上,目前Kubernetes调度程序是实验性的

spark4种部署模式,都通过master 参数指定

1、local  

本地模式 

不指定master 

或者  

--master  local  local[N]  local[*]

local: 只是用一个cores

local[N]  : 使用N个cores

local[*] : 使用当前机器的所有的可以用的cores

2、standalone

spark本身提供的集群模式

--master spark://host:port

3、yarn

运行在yarn资源管理器框架之上,由yarn负责资源管理,Spark负责任务调度和计算

--master yarn

4、mesos

运行在mesos资源管理器框架之上,由mesos负责资源管理,Spark负责任务调度和计算

--master  mesos://host:port

提交任务两个命令

spark-submit 程序执行之后,application就会退出

spark-shell 会一直占有一个application,手动退出,ctrl + c

1、spark-shell  

是一个交互式的命令行,主要用于测试。

spark-shell脚本,实际调用的是spark-submit脚本:spark-shell --master spark://hdp-01:7077

在spark-shell中,已经初始化了一个名称是sc 的 SparkContext,写spark程序之前,必须创建SparkContext实例对象

2、spark-submit

常用于提交spark任务的命令,需要有jar包。

sparkSubmit的使用:spark-submit 选项  jar包  参数列表

spark-submit –master  xx –class 程序运行的主类  xxx.jar  input  output

 

当我们提交spark-submit或者spark-shell时,就会生成一个Application​​​​​​​

​​​​​​​利用spark-shell来编程

# spark-shell  --master  spark://hdp-01:7077

初始化了SparkContext  sc

local模式/集群模式,集群模式需要所有worker节点都有处理文件

Spark中的RDD上的方法都称之为算子,分为两类:

transformation类算子,lazy执行,会生成新的rdd 。遇action算子时,才真正运行

spark中的基本机制

Spark角色

Master: 管理worker,接收提交任务,进行任务分配调度

Worker:工作节点,管理自己节点上的executor

​​​​​​​

执行流程

1、client模式提交任务后,会在客户端启动Driver进程

2、Driver会向Master申请启动Application启动资源

3、资源申请成功,Driver端将task发送到worker端执行

4、worker将task执行结果返回到Driver端

总结

Driver端可看到task执行情况,生产中不能使用client模式,因为:提交大量application到集群运行,Driver每次都会在client端启动,导致客户端网卡流量暴增问题

 

执行流程

1、cluster模式提交应用程序后,会向Master请求启动Driver

2、Master接受请求,随机在集群一台节点启动Driver进程

3、Driver启动后为当前的应用程序申请资源

4、Driver端发送task到worker节点上执行

5、worker将执行情况和执行结果返回给Driver端

总结

Driver进程在集群某一台Worker上启动,客户端是无法查看task执行情况。提交大量application到集群运行,那么流量暴增问题散布在集群上

Driver任务

负责应用程序资源的申请

任务的分发

结果的回收

监控task执行情况

Spark角色介绍

1、Application:Spark应用程序

Spark应用程序,包含了Driver功能代码和分布在集群中多个节点上运行的Executor代码

Spark应用程序,由一个或多个作业JOB组成

2、Driver:驱动程序

Driver即Application的Main()函数并且创建SparkContext,SparkContext是Spark应用程序的运行环境,通常SparkContext代表Driver

3、Cluster Manager:资源管理器

集群获取资源的外部服务,常用的有:Standalone,Spark原生的资源管理器,由Master负责资源的分配; Yarn,由Yarn中的ResearchManager负责资源的分配;Messos,由Messos中的Messos Master负责资源管理

4、Executor:执行器

Application运行在Worker节点上的一个进程,该进程负责运行Task,负责将数据存在内存或者磁盘上,每个Application都有各自独立的一批Executor

5、RDD:弹性分布式数据集

Spark的基本计算单元,可以通过一系列算子进行操作(主要有Transformation和Action操作)

6、窄依赖

父RDD每个分区被一个子RDD的分区所用

7、宽依赖

父RDD的每个分区被多个子RDD分区使用

8、DAG:有向无环图

RDD之间的依赖关系

9、TaskScheduler:任务调度器

将TaskSet提交给worker(集群)运行并回报结果;负责每个具体任务的实际物理调度

10、Job:作业

由一个或多个调度阶段所组成的一次计算作业;包含多个Task组成的并行计算

11、Stage:调度阶段

一个作业分为多个阶段;Stage分成两种类型ShuffleMapStage、ResultStage

12、TaskSet:任务集

由一组关联的,但相互之间没有Shuffle依赖关系的任务所组成的任务集

1)一个Stage创建一个TaskSet

2)为Stage的每个Rdd分区创建一个Task,多个Task封装成TaskSet

13、Task:任务

被送到某个Executor上的工作任务;单个分区数据集上的最小处理流程单元

转载地址:http://xvazi.baihongyu.com/

你可能感兴趣的文章
表情包数据挖掘 | Mix群聊
查看>>
如何阅读科研论文
查看>>
理解本真的REST架构风格
查看>>
10款免费且开源的项目管理工具
查看>>
java调用javascript :js引擎rhino
查看>>
asp 中常用的文件处理函数
查看>>
ADO中sqlserver存储过程使用
查看>>
Linux KernelTech版FAQ 1.0
查看>>
ntfs分区iis故障的解决
查看>>
个人创业“六大死穴”
查看>>
最重要的 12个 J2EE 最佳实践
查看>>
通过Java Swing看透MVC设计模式
查看>>
Java 理论与实践: 关于异常的争论
查看>>
编写高效的线程安全类
查看>>
提高Java代码可重用性的三个措施
查看>>
编写跨平台Java程序注意事项
查看>>
富人和穷人的12个经典差异
查看>>
java 注意事项[教学]
查看>>
MetaWeblogAPI测试
查看>>
软件配置管理概念-1,介绍
查看>>