一、 Spark概述(引用百度百科)
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。
总而言之:Spark是一种快速、通用、可扩展的大数据分析引擎
二、Spark的框架体系
三、Spark和MapReduce对比
MR中数据处理,需要多个MR程序反复读取磁盘中的文件。中间结果需要多次落地磁盘,这样势必会出现磁盘IO操作影响性能,如果计算过程中出现错误就需要重新计算
Spark中数据处理,是使用多个Job在内存中连续执行,spark把运算中间数据存放在内存中,迭代计算效率高,spark容错性高,它通过弹性分布式数据集RDD来实现高容错。RDD分布式存储数据集存在内存中,若其中某一个部分丢失或计算错误,根据RDD提供的血缘关系来进行RDD重构。而且Spark框架更复杂,既可以进行离线(SparkCore/SparkSQL)也可以进行实时(SparkStreaming)。
四. Spark运行模式
Local 多用于本地测试,都是编译器中完成
Standalone 是Spark自带的资源调度框架,支持完全分布式
Yarn Hadoop生态圈自带调度框架,Spark是基于Yarn进行计算的
Messos资源调用框架第三方需要独立安
PS:只讲解最常用的运行模式Standalone,并且该模式也是面试时最常问到的
4.1 Spark Standalone模式运行流程
相关文章:
Spark 弹性分布数据集RDD的介绍
Spark 的内存模型以及Spark Shuffle的原理
常见的Spark的调优方法
有收获?希望烙铁们来个三连击,让更多的同学看到这篇文章
1、烙铁们,关注我看完保证有所收获,不信你打我。
2、点个赞呗,可以让更多的人看到这篇文章,后续还会有很哇塞的产出。
本文章仅供学习及个人复习使用,如需转载请标明转载出处,如有错漏欢迎指出
务必注明来源(注明: 来源:csdn , 作者:-马什么梅-)