spark封神之路(1)-spark简介

1 Spark简介

      Spark是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache的顶级项目,2014年5月发布spark1.0,2016年7月发布spark2.0,2020年6月18日发布spark3.0.0

  • 快如闪电的统一分析引擎
  • 分析处理海量的数据

MapReduce: 运算模型单一[ map(落地)  shuffle  reduce],和磁盘频繁的交互 !

Spark:  读取-->数据-处理-数据-处理-数据-处理-数据-->保存      运算内存中传递和处理

1.1 Speed:快速高效

Hadoop的MapReduce作为第一代分布式大数据计算引擎,在设计之初,受当时计算机硬件条件所限(内存、磁盘、cpu等),为了能够计算海量数据,需要将中间结果保存到HDFS中,那么就要频繁读写HDFS从而使得网络IO和磁盘IO成为性能瓶颈。Spark可以将中间结果写到本地磁盘或将中间cache到内存中,节省了大量的网络IO和磁盘IO开销。并且Spark使用更先进的DAG任务调度思想,可以将多个计算逻辑构建成一个有向无环图,并且还会将DAG先进行优化后再生成物理执行计划,同时 Spark也支持数据缓存在内存中的计算。性能比Hadoop MapReduce快100倍。即便是不将数据cache到内存中,其速度也是MapReduce10 倍以上。 

1.2 简洁易用

Spark支持 Java、Scala、Python和R等编程语言编写应用程序,大大降低了使用者的门槛。自带了80多个高等级操作算子,并且允许在Scala,Python,R 的使用命令进行交互式运行,可以非常方便的在Spark Shell中地编写spark程序。 

1.3 全栈式数据处理

*Spark提供了统一的大数据处理解决方案*,非常具有吸引力,毕竟任何公司都想用统一的平台去处理遇到的问题,减少开发和维护的人力成本和部署平台的物力成本。 同时Spark还支持SQL,大大降低了大数据开发者的使用门槛,同时提供了SparkStream和Structed Streaming可以处理实时流数据;MLlib机器学习库,提供机器学习相关的统计、分类、回归等领域的多种算法实现。其高度封装的API 接口大大降低了用户的学习成本;Spark GraghX提供分布式图计算处理能力;PySpark支持Python编写Spark程序;SparkR支持R语言编写Spark程序。

1.4 兼容性良好

Spark支持的多种部署方案:Standalone是Spark自带的资源调度模式;Spark可以运行在Hadoop的YARN上面;Spark 可以运行在Mesos上(Mesos是一个类似于YARN的资源调度框架);Spark还可以Kubernetes实现容器化的资源调度 

1 单机运行  测试

2 Yarn 资源调度平台

3 自带集群模式

4 第三方调度平台

丰富的数据源支持: Spark除了可以访问操作系统自身的本地文件系统和HDFS之外,还可以访问 Cassandra、HBase、Hive、Alluxio(Tachyon)以及任何 Hadoop兼容的数据源。这极大地方便了已经 的大数据系统进行顺利迁移到Spark。  

1.5 对比MapReduce

框架

优点

缺点

MapReduce

历史悠久、稳定

编程API不灵活、速度慢、只能做离线计算

Spark

通用、编程API简洁、快

有的时候没有MR程序稳定

面试题:MapReduce和Spark的本质区别

1.MR只能做离线计算,如果实现复杂计算逻辑,一个MR搞不定,就需要将多个MR按照先后顺序连成一串,一个MR计算完成后会将计算结果写入到HDFS中,下一个MR将上一个MR的输出作为输入,这样就要频繁读写HDFS,网络IO和磁盘IO会成为性能瓶颈。从而导致效率低下。

2.既可以做离线计算,有可以做实时计算,提供了抽象的数据集(RDD、Dataset、DataFrame、DStream)

有高度封装的API,算子丰富,并且使用了更先进的DAG有向无环图调度思想,可以对执行计划优化后在执行,并且可以数据可以cache到内存中进行复用。

注意:MR和Spark在Shuffle时数据都落本地磁盘

猜你喜欢

转载自blog.csdn.net/qq_37933018/article/details/117698526
今日推荐