Spark的介绍

目录

一、Spark是什么?

二、Hadoop与Spark关系及区别

2.1框架⽐较

2.2处理流程⽐较

三、Spark 组件

 Spark Core

Spark SQL 

 Spark Streaming

Spark MLlib 

Spark GraphX 

Structured Streaming(2.X版本)

四、Spark特点

 快

易⽤

通⽤

兼容性


一、Spark是什么?

官⽹地址 http://spark.apache.org/

        Spark是⼀种快速、通⽤、可扩展的⼤数据分析引擎, 2009 年诞⽣于加州⼤学伯克利分校 AMPLab 2010 年开源、2013年 6 ⽉成为 Apache 孵化项⽬, 2014 2 ⽉成为 Apache 顶级项⽬。项⽬是⽤ Scala 进⾏编写。
        Spark 官⽹将 Spark 定义为⼀个⼤型可扩展数据的快速和通⽤处理引擎。
        ⾸先,Spark 采⽤了先进的 DAG 执⾏引擎,⽀持循环数据流和内存计算,使得 Spark 速度更快,在内存中的速度
Hadoop MR 的百倍,在磁盘上的速度是 Hadoop MR 的⼗倍 ( 官⽹数据 )
        其次,Spark 是⼀个通⽤的处理引擎, 被设计⽤来做批处理、迭代运算、交互式查询、流处理、机器学习等。 另外,Spark 易⽤,可以⽤ Scala Java Python R 等开发分布式应⽤, Spark 提供了⼤量⾼级 API ,⽅便开发。
        
        最后,Spark 集成了多种数据源,并且可以通过 local Yarn Mesos Standalone Spark 提供的部署⽅ 式)等各种模式运⾏。

二、HadoopSpark关系及区别

2.1框架⽐较

hadoop
spark
起源
2005
起源地
MapReduce (Google) Hadoop (Yahoo)
University of California, Berkeley
数据处理引擎
Batch
Batch
处理
Slower than Spark and Flink
100x Faster than Hadoop
编程语⾔
Java, C, C++, Ruby, Groovy, Perl, Python
Java, Scala, python and R
编程模型
MapReduce
Resilient distributed Datasets (RDD)
Data Transfer
Batch
Batch
内存管理
Disk Based
Disk Based
延迟
HIgh
Medium
吞吐量
Medium
High
优化机制
Manual
Manual
API
Low-level
High-level
流处理⽀持
NA
Spark Streaming
SQL ⽀持
Hive, Impala
SparkSQL
Graph ⽀持
NA
GraphX
机器学习⽀持
NA
SparkML

2.2处理流程⽐较

MR 中的迭代 :

 Spark中的迭代:

 总结

1 Spark 把运算的中间数据存放在内存,迭代计算效率更⾼; mapreduce 的中间结果需要落地,需要保存到磁盘,这样必然会有磁盘io 操做,影响性能。
2 Spark 容错性⾼,它通过弹性分布式数据集 RDD 来实现⾼效容错, RDD 是⼀组分布式的存储在节点内存中的只读性质的数据集,这些集合是弹性的,某⼀部分丢失或者出错,可以通过整个数据集的计算流程的⾎缘关系来实现重建;mapreduce 的话容错可能只能重新计算了,成本较⾼。
3 Spark 更加通⽤, spark 提供了 transformation action 这两⼤类的多个功能 api ,另外还有流式处理sparkstreaming模块、图计算 GraphX 等等; mapreduce 只提供了 map reduce 两种操作,流计算以及其他模块的⽀持⽐较缺乏。
4 Spark 框架和⽣态更为复杂,⾸先有 RDD 、⾎缘 lineage 、执⾏时的有向⽆环图 DAG stage 划分等等,很多时候 spark作业都需要根据不同业务场景的需要进⾏调优已达到性能要求; mapreduce 框架及其⽣态相对较为简单,对性能的要求也相对较弱,但是运⾏较为稳定,适合⻓期后台运⾏。

三、Spark 组件

 Spark Core

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

Spark SQL 

Spark ⽤来操作结构化数据的程序包。通过 Spark SQL ,我们可以使⽤ SQL 或者 Apache Hive 版本的 SQL ⽅⾔ (HQL)来查询数据。 Spark SQL ⽀持多种数据源,⽐ 如 Hive 表、 Parquet 以及 JSON 等。

 Spark Streaming

Spark 提供的对实时数据进⾏流式计算的组件。提供了⽤来操作数据流的 API ,并且与 Spark Core 中的 RDD API ⾼度对应。

Spark MLlib 

提供常⻅的机器学习 (ML) 功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据 导⼊等额外的⽀持功能。
        

Spark GraphX 

GraphX Spark 基础上提供了⼀站式的数据解决⽅案,可以⾼效地完成图计算的完整流⽔作业。 GraphX 是⽤于图计算和并⾏图计算的新的(alpha Spark API 。通过引⼊弹性分布式属性图( Resilient Distributed Property Graph),⼀种顶点和边都带有属性的有向多重图,扩展了 Spark RDD

Structured Streaming2.X版本)

结构化流是构建在 sparksql 引擎上的可伸缩且容错的流处理引擎。在内部,默认情况下,结构化流式处理查询使⽤微批处理引擎进⾏处理,该引擎将数据流作为⼀系列⼩批处理作业进⾏处理,从⽽实现低⾄100 毫秒的端到端延迟,并且只保证⼀次容错。

 

四、Spark特点

 

Hadoop MapReduce 相⽐, Spark 基于内存的运算要快 100 倍以上,基于硬盘的运算也要快 10 倍以上。 Spark 实现了⾼效的DAG 执⾏引擎,可以通过基于内存来⾼效处理数据流。

易⽤

Spark ⽀持 Java Python Scala API ,还⽀持超过 80 种⾼级算法,使⽤户可以快速构建不同的应⽤。⽽且 Spark ⽀持交互式的Python Scala shell ,可以⾮常⽅便地在这些 shell 中使⽤ Spark 集群来验证解决问题的⽅法。

通⽤

Spark 提供了统⼀的解决⽅案。 Spark 可以⽤于批处理、交互式查询( Spark SQL )、实时流处理( Spark Streaming)、机器学习( Spark MLlib )和图计算( GraphX )。这些不同类型的处理都可以在同⼀个应⽤中⽆缝使⽤。Spark 统⼀的解决⽅案⾮常具有吸引⼒,毕竟任何公司都想⽤统⼀的平台去处理遇到的问题,减少开发和维护的⼈⼒成本和部署平台的物⼒成本。

 

 

兼容性

Spark 可以⾮常⽅便地与其他的开源产品进⾏融合。⽐如, Spark 可以使⽤ Hadoop YARN Apache Mesos 作为它的资源管理和调度器,器,并且可以处理所有Hadoop ⽀持的数据,包括 HDFS HBase Cassandra 等。这对于已经部署Hadoop 集群的⽤户特别重要,因为不需要做任何数据迁移就可以使⽤ Spark 的强⼤处理能⼒。 Spark 也可以不依赖于第三⽅的资源管理和调度器,它实现了Standalone 作为其内置的资源管理和调度框架,这样进⼀步降低了Spark 的使⽤⻔槛,使得所有⼈都可以⾮常容易地部署和使⽤ Spark 。此外, Spark 还提供了在 EC2 上部署Standalone的 Spark 集群的⼯具。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值