Spark简介

Spark简介

Spark是基于内存计算的大数据并行计算框架。Spark于2009年诞生于加州大学伯克利分校AMPLab。目前,已经成为Apache软件基金
会旗下的顶级开源项目。Spark是相对于MapReduce上的批量计算、迭代型计算以及基于Hive的SQL查询的上百倍。

spark发展

·2009年:在加州大学伯克利分校AMPLab诞生。
·2010年:开始开源。
·2013年6月:成为Apache孵化器项目。
·2014年2月:Apache顶级项目。
·2014年2月:大数据公司Cloudera宣称加大Spark框架的投入来取代MapReduce。
·2014年4月:大数据公司MapR投入Spark阵营,Apache Mahout放弃MapReduce,将使用Spark作为计算引擎。
·2014年5月:Pivotal Hadoop集成Spark全栈。
·2014年5月30日:Spark 1.0.0发布。
·2014年6月:Spark 2014峰会在旧金山召开。
·2014年7月:Hive on Spark项目启动。

Spark生态

在这里插入图片描述

Spark Core

包含任务调度、内存管理、错误恢复、与存储系统交互等模块,实现了Spark 的基本功能。还包含了对弹性分布式数据集(resilient distributed dataset,简称RDD)的API 定义。

Spark SQL

Spark SQL 是Spark 用来操作结构化数据的程序包。Spark SQL 支持多种数据源:Hive 表、Parquet 以及JSON 等。Spark SQL 还支
持开发者将SQL 和传统的RDD 编程的数据操作方式相结合。

Spark Streaming

Spark Streaming 是Spark 提供的对实时数据进行流式计算的组件。Spark Streaming 提供了用来操作数据流的API,并且与Spark Core 中的RDD API 高度对应

MLlib

MLlib是spark中一个提供常见的机器学习(ML)功能的程序库,MLlib 提供了很多种机器学习算法。

GraphX

GraphX 是用来操作图(比如社交网络的朋友关系图)的程序库,可以进行并行的图计算。

Spark优势
支持计算场景多

Spark支持复杂的计算,除了‘map’和reduce简单算子之外还有其他多种复杂的算子,更是支持sql查询,机器学习,流计算,以及图计算。

容易上手,支持多种语言

可发人员可以通过java,scala,python语言环境下来开发,Spark支持这些语言的开发,同时可以在shall中进行交互计算,查看自己想要的结果。

社区活跃度高

因其优秀的性能,已经被各个大公司所广泛应用,Yahoo、Twitter、阿里巴巴、百度、网易、英特尔等公司的生产环境中均使用了Spark。

支持多种文件系统的计算

与hadoop框架高度结合,可以读取已有的任何Hadoop数据,可以运行在hadoop数据源上,比如Hive、HBase、HDFS等等。还可以支持本地文本文件系统,以及内存中自定义的数据。Hadoop 并非Spark 的必要条件,Spark 支持任何实现了Hadoop 接口的存储系统。

可融合性强

spark可以非常方便的与其他大数据产品进行融合,可以使用hadoop的yarn或者apache mesos来进行任务调度。并且可以支持hadoop支持的所有的数据。

相对于mapreduce的优势
速度快

与Hadoop的MapReduce相比,spark基于内存上的速度要快100倍以上,基于磁盘上的速度也要快10倍以上。

中间输出结果优势

MapReduce的计算引擎通常会将中间结果的数据存入到磁盘中,Hive sql翻译成的MapReduce任务时候会有多个stage,而这些相互依赖的关联的stage之间的数据会存在所依赖的底层存储系统HDFS上。Spark会将对应的任务模型抽象为通用的有向无环图(DAG),对应的中间输出结果会直接存在内存中,而不是HDFS上,以此来加快运算的速度。 Map中间结果写磁盘,Reduce写HDFS,多个MR之间通过HDFS交换数据; 任务调度和启动开销大;而Spark内存计算引擎,提供Cache机制来支持需要反复迭代计算或者多次数据共享,减少数据读取的IO开销

执行方式策略

MapReduce在数据Shuffle之前花费了大量的时间来排序,这个排序在许多场景下是不必要的,Spark可以避免这个排序带来的额外的开销。MapReduce不适合迭代计算(如机器学习、图计算等),交互式处理(数据挖掘) 和流式处理(点击日志分析),而Spark使用多线程池模型来减少task启动开稍,shuffle过程中避免 不必要的sort操作以及减少磁盘IO操作。

开发效率

MapReduce仅支持Map和Reduce两种操作而Spark有丰富的算子提供。而且MapReduce编程不够灵活,而Spark提供丰富的API,支持Java,Scala,Python和R四种语言且代码量比MapReduce少2~5倍。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值