Spark——(Spark简介,Spark 与 Hadoop,Spark系统架构)

文章目录

    • Spark简介
    • Spark 与 Hadoop
    • Spark系统架构

Spark简介

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

Spark 与 Hadoop

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

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

MapReduce Spark
数据存储结构:磁盘HDFS文件系统的split 使用内存构建弹性分布式数据集RDD对数据进行运算和cache
编程范式:Map + Reduce,仅提供两个操作,表达力欠缺 提供了丰富的操作,使数据处理逻辑的代码非常简短
计算中间结果落到磁盘,IO及序列化、反序列化代价大 计算中间结果在内存中,维护存取速度比磁盘高几个数量级
Task以进程的方式维护,需要数秒时间才能启动任务 Task以线程的方式维护对于小数据集读取能够达到亚秒级的延迟
  1. Spark的生态系统同时支持批处理、交互式查询和流数据处理:
    1. Spark的设计遵循“一个软件栈满足不同应用场景”的理念(all in one),逐渐形成了一套完整的生态系统
    2. 既能够提供内存计算框架,也可以支持SQL即席查询、实时流式计算、机器学习和图计算等
    3. Spark可以部署在资源管理器YARN之上,提供一站式的大数据解决方案

Spark 为什么比 MapReduce 快?

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

Spark系统架构

  1. Spark运行架构包括:Cluster Manager,Worker Node,Driver,Executor
  2. Cluster Manager 是集群资源的管理者。
  3. Worker Node 工作节点,管理本地资源;
  4. Driver Program。运行应用的 main() 方法并且创建了 SparkContext。由ClusterManager分配资源,SparkContext 发送 Task 到 Executor 上执行;
  5. Executor:在工作节点上运行,执行 Driver 发送的 Task,并向 Driver 汇报计算结果;
    Spark——(Spark简介,Spark 与 Hadoop,Spark系统架构)_第2张图片

你可能感兴趣的:(Spark,java,开发语言,大数据,spark,系统架构)