Spark
Spark Core:最低层的组件
Spark Streaming:进行流计算
MLlib:机器学习算法库
GraphX:编写图计算算法
Hadoop表达能力有限,磁盘开销大
spark+Hadoop大数据框架
Spark概述
运行速度快,内存计算
有向无环图的计算
容易使用Java,Scala,python,R语言
完整的软件栈,独立的集群模式
1.Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供多种数据集操作类型,编程模型比Hadoop MapReduce更灵活。 2.Spark提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高 3.Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce的迭代执行机制。
基本概念:
-
Application:用户编写的Spark应用程序。
-
Driver:Spark中的Driver即运行上述Application的main函数并创建
-
SparkContext,创建SparkContext的目的是为了准备Spark应用程序的运行环境,在Spark中有SparkContext负责与ClusterManager通信,进行资源申请、任务的分配和监控等,当Executor部分运行完毕后,Driver同时负责将SparkContext关闭。
-
Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行Task。
-
RDD:弹性分布式数据集,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。
-
DAG:有向无环图,反映RDD之间的依赖关系。
-
Task:运行在Executor上的工作单元。
-
Job:一个Job包含多个RDD及作用于相应RDD上的各种操作。
-
Stage:是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为Stage,或者也被称为TaskSet,代表一组关联的,相互之间没有Shuffle依赖关系的任务组成的任务集。
-
Cluter Manager:指的是在集群上获取资源的外部服务。目前有三种类型 1) Standalon : spark原生的资源管理,由Master负责资源的分配 2) Apache Mesos:与hadoop MR兼容性良好的一种资源调度框架 3) Hadoop Yarn: 主要是指Yarn中的ResourceManager
应用场景
复杂的批量数据处理
基于历史数据的交互式查询
基于时实数据流的数据处理
spark运行架构
RDD:弹性,数据可大可小,分区可以变化,最核心的数据抽象
DAG:有向无环图,反应RDD之间的依赖关系
Executor:进程》工作节点,每个工作节点运行一个Executor,派生出线程
Application:程序
一组多重架构
集群资源管理器
应用--》分成多个作业--》每个作业又被分成多个任务
spark运行基本流程
Spark运行架构特点:
每个Application都有自己专属的Executor进程,并且该进程在Application运行期间一直驻留。Executor进程以多线程的方式运行Task。 Spark运行过程与资源管理器无关,只要能够获取Executor进程并保存通信即可。 Task采用数据本地性和推测执行等优化机制。
流程
-
为应用构建起基本的运行环境,即由Driver创建一个SparkContext进行资源的申请、任务的分配和监控
-
资源管理器为Executor分配资源,并启动Executor进程
-
SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理。 Executor向SparkContext申请Task,TaskScheduler将Task发放给Executor运行并提供应用程序代码。
-
Task在Executor上运行把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。