一、什么是Spark
Spark是一个用于大规模数据处理的统一计算引擎。 Spark是一种快速、通用、可扩展的大数据分析引擎。
注意:Spark不仅仅可以做类似于MapReduce的离线数据计算,还可以做实时数据计算,并且它还可以实现类似于Hive的SQL计算,等等,所以说它是一个统一的计算引擎。
Spark官网:Apache Spark™ - Unified Engine for large-scale data analytics
二、Spark的特点
Spark的特点:快速、易用、通用、随处运行、代码简洁
Spark的最大特点:基于内存
1.快速:一般情况下,对于迭代次数较多的应用程序,Spark程序在内存中的运行速度是Hadoop MapReduce运行速度的100多倍,在磁盘上的运行速度是Hadoop MapReduce运行速度的10多倍。
2.易用性:Spark支持使用Scala、Python、Java及R语言快速编写应用。同时Spark提供超过80个高阶算子,使得编写并行应用程序变得容易,并且可以在Scala、Python或R的交互模式下使用Spark。
3.通用性:Spark可以与SQL、Streaming及复杂的分析良好结合。Spark还有一系列的高级工具,包括Spark SQL、MLlib(机器学习库)、GraphX(图计算)和Spark Streaming(流计算),并且支持在一个应用中同时使用这些组件。
4.随处运行:用户可以使用Spark的独立集群模式运行Spark,也可以在EC2(亚马逊弹性计算云)、Hadoop YARN或者Apache Mesos上运行Spark。并且可以从HDFS、Cassandra、HBase、Hive、Tachyon和任何分布式文件系统读取数据。
5. 代码简洁:
三、Spark和Hadoop MapReduce有什么区别?
Spark VS Hadoop MapReduce:
1、Spark的速度比MapReduce快,Spark把运算的中间数据存放在内存,迭代计算效率更高;mapreduce的中间结果需要落地,需要保存到磁盘,比较影响性能;
2、spark容错性高,它通过弹性分布式数据集RDD来实现高效容错;mapreduce容错可能只能重新计算了,成本较高;
3、spark更加通用,spark提供了transformation和action这两大类的多个功能API,另外还有流式处理sparkstreaming模块、图计算GraphX等;mapreduce只提供了map和reduce两种操作,流计算以及其他模块的支持比较缺乏,计算框架(API)比较局限;
4、spark框架和生态更为复杂,很多时候spark作业都需要根据不同业务场景的需要进行调优已达到性能要求;mapreduce框架及其生态相对较为简单,对性能的要求也相对较弱,但是运行较为稳定,适合长期后台运行;
5、Spark API方面- Scala: Scalable Language, 是进行并行计算的最好的语言. 与Java相比,极大的减少代码量(Hadoop框架的很多部分是用Java编写的)。
Spark 和 Hadoop MapReduce 的重点应用场合有所不同。
Spark会取代Hadoop吗?
Spark与Hadoop MapReduce在业界有两种说法 :
一是 Spark 将代替 Hadoop MapReduce,成为未来大数据处理发展的方向 ;
二是 Spark 将会和 Hadoop 结合,形成更大的生态圈。
Hadoop和Spark两者都是大数据框架,Hadoop实质上更多是一个分布式数据基础设施:它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,意味着不需要购买和维护昂贵的服务器硬件,还会索引和跟踪这些数据,让大数据处理和分析效率达到前所未有的高度。
Spark是借鉴了mapreduce并在其基础上发展起来的,继承了其分布式计算的优点并改进了mapreduce明显的缺陷,但是二者也有不少的差异。Spark,则是那么一个专门用来对那些分布式存储的大数据进行处理的工具,它并不会进行分布式数据的存储。Spark的限制:内存。
四、结构化数据与非结构化数据
结构化数据:指关系模型数据,即以关系数据库表形式管理的数据,二维形式的数据,有规律性,有行有列。
非结构化数据:指数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。如word、pdf、ppt及各种格式的图片、视频等。
五、Spark集群的三种部署模式
1.Standalone 模式:standalone模式也叫作独立模式,自带完整的服务,可单独部署到一个集群中,无序依赖任何其他资源管理系统。
Standalone模式运行流程
2.YARN运行模式:Spark使用Hadoop的YARN组件进行资源与任务调度,真正意义上spark与外部对接协作。
yarn-cluster运行流程
yarn-client运行流程
3.Local模式:在本地部署单个Spark服务,比较适合简单了解spark目录结构,熟悉配置文件,简单跑一下demo示例等调试场景。
六、MapReduce的工作流程
MapReduce编程模型开发简单且功能强大,专门为并行处理大规模数据量而设计,接下来,我们通过一张图来描述MapReduce的工作过程,如下图所示。
七、Spark核心数据集RDD
RDD(Resilient Distributed Datasets弹性分布式数据集),可以简单的把RDD理解成一个提供了许多操作接口的数据集合,和一般数据集不同的是,其实际数据分布存储于一批机器中(内存或磁盘中)。转换算子和行动算子
Spark RDD转换和操作示例
宽依赖与窄依赖
窄依赖:表现为一个父RDD的分区对应于一个子RDD的分区或者多个父RDD的分区对应于一个子RDD的分区。
宽依赖:表现为存在一个父RDD的一个分区对应一个子RDD的多个分区。
RDD Stage划分文章来源:https://www.toymoban.com/news/detail-840263.html
文章来源地址https://www.toymoban.com/news/detail-840263.html
到了这里,关于干货丨“看过这篇文章的人都学会Spark了”的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!