文章目录

Spark简介Spark 与 HadoopSpark系统架构

Spark简介

Spark是一个开源集群计算框架。其主要目的是处理实时生成的数据。Spark实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流;与 MapReduce 相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上。Spark支持 Scala、Java、Python、R的API,支持交互式的Python和Scala的shellSpark提供了统一的解决方案。Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)

Spark 与 Hadoop

从狭义的角度上看:Hadoop是一个分布式框架,由存储、资源调度、计算三部分组成;Spark是一个分布式计算引擎,由 Scala 语言编写的计算框架,基于内存的快速、通用、可扩展的大数据分析引擎;MapReduce的不足:表达能力有限,磁盘IO开销大,延迟高,任务之间的衔接有IO开销,并且在前一个任务执行完成之前,后一个任务无法开始,不能胜任复杂的,多阶段计算任务

Spark 与 Hadoop:Spark的计算模式也属于MapReduce;Spark框架是对MR框架的优化;

MapReduceSpark数据存储结构:磁盘HDFS文件系统的split使用内存构建弹性分布式数据集RDD对数据进行运算和cache编程范式:Map + Reduce,仅提供两个操作,表达力欠缺提供了丰富的操作,使数据处理逻辑的代码非常简短计算中间结果落到磁盘,IO及序列化、反序列化代价大计算中间结果在内存中,维护存取速度比磁盘高几个数量级Task以进程的方式维护,需要数秒时间才能启动任务Task以线程的方式维护对于小数据集读取能够达到亚秒级的延迟

Spark的生态系统同时支持批处理、交互式查询和流数据处理:

Spark的设计遵循“一个软件栈满足不同应用场景”的理念(all in one),逐渐形成了一套完整的生态系统既能够提供内存计算框架,也可以支持SQL即席查询、实时流式计算、机器学习和图计算等Spark可以部署在资源管理器YARN之上,提供一站式的大数据解决方案

Spark 为什么比 MapReduce 快?

Spark积极使用内存。MR框架中一个Job 包括一个 map 阶段(一个或多个maptask) 和一个 reduce 阶段(一个或多个 reduce Task)。如果业务处理逻辑复杂,此时需要将多个 job 组合起来;然而前一个job的计算结果必须写到HDFS,才能交给后一个job。这样一个复杂的运算,在MR框架中会发生很多次写入、读取操作;Spark框架可以把多个map reduce task组合在一起连续执行,中间的计算结果不需要落地;多进程模型(MR) vs 多线程模型(Spark)。MR框架中的的Map Task和ReduceTask是进程级别的,而Spark Task是基于线程模型的。MR框架中的 map task、reduce task都是 jvm 进程,每次启动都需要重新申请资源,消耗了不必要的时间。Spark则是通过复用线程池中的线程来减少启动、关闭task所需要的系统开销

Spark系统架构

Spark运行架构包括:Cluster Manager,Worker Node,Driver,ExecutorCluster Manager 是集群资源的管理者。Worker Node 工作节点,管理本地资源;Driver Program。运行应用的 main() 方法并且创建了 SparkContext。由ClusterManager分配资源,SparkContext 发送 Task 到 Executor 上执行;Executor:在工作节点上运行,执行 Driver 发送的 Task,并向 Driver 汇报计算结果;

相关文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。