Spark简介和架构

1. Spark的简介

Spark是UC Berkeley AMPLab开发的是一种计算框架,分布式资源工作交由集群管理软件(Mesos、YARN),底层是用scala语言实现的。 Spark的目的是让数据分析更加快速, Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越。换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。

2. Spark和Hadoop的关系

从概念上:

Hadoop是包含计算框架MapReducehe分布式文件系统HDFS。

SparkSpark是一个计算框架,是MapReduce的替代方案,而且兼容HDFS、Hive等分布式存储系统,可融入Hadoop生态。

Spark与Hadoop MapReduce优势如下:

1 中间结果输出的处理上:

MapReduce的计算引擎将中间结果存储在磁盘上,进行存储和容错。

Spark将执行模型抽象为有向无环图执行计划(DAG),这可以将多个Stage的任务串联或者并行执行,而无须将Stage中间结果输出到HDFS中。

2 数据格式和内存使用上:

MapReduce Schema on Read处理方式会引起较大的处理开销。

Spark抽象出分布式内存存储结构弹性分布式数据集RDD,进行数据的存储。也就是说spark是基于内存处理的。

3 执行策略

MapReduce在数据Shuffle之前花费了大量的时间来排序。

Spark任务在Shuffle中则不是所有情景都需要排序,而且每一轮次的输出结果在内存缓存。

4 任务调度开销

MapReduce ,是为了运行长达数小时的批量作业而设计的,在某些极端情况下,提交一个任务的延迟非常高。

Spark采用了事件驱动的类库AKKA来启动任务,通过线程池复用线程来避免进程或线程启动和切换开销。

3. Spark的特点

1先进架构:

•Spark采用Scala语言编写,底层采用了actor model的akka作为通讯框架,代码十分简洁高效。

•基于DAG图的执行引擎,减少多次计算之间中间结果写到Hdfs的开销。

•建立在统一抽象的RDD(分布式内存抽象)之上,使得它可以以基本一致的方式应对不同的大数据处理场景。

2高效

•提供Cache机制来支持需要反复迭代的计算或者多次数据共享,减少数据读取的IO开销。

•与Hadoop的MapReduce相比,Spark基于内存的运算比MR要快100倍;而基于硬盘的运算也要快10倍!

3易用

•Spark提供广泛的数据集操作类型(20+种),不像Hadoop只提供了Map和Reduce两种操作。

•Spark支持Java,Python和Scala API,支持交互式的Python和Scala的shell。

4提供整体解决方案:

•以其RDD模型的强大表现能力,逐渐形成了一套自己的生态圈,提供了full-stack的解决方案。

•主要包括Spark内存中批处理,Spark SQL交互式查询,Spark Streaming流式计算, GraphX和MLlib提供的常用图计算和机器学习算法。

5与Hadoop无缝衔接

•Spark可以使用YARN作为它的集群管理器

•读取HDFS,HBase等一切Hadoop的数据

4. Spark应用场景

适用的场景:

1)Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。

2)需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小

不适用的场景:

1)由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用。

2)对于增量修改的应用模型不适合。

Spark具体的业务应用场景:

1)目前大数据在互联网公司主要把Spark应用在广告、报表、推荐系统等业务上。

2)在广告业务方面需要大数据做应用分析、效果分析、定向优化等

3)在推荐系统方面则需要大数据优化相关排名、个性化推荐以及热点点击分析等。

这些应用场景的普遍特点是计算量大、效率要求高。Spark恰恰满足了这些要求。

总的来说Spark的适用面比较广泛且比较通用。

5. Spark的架构

(1)架构图:

(2)核心概念解释:

Spark提供了多种高级工具: Shark SQL应用于即席查询(Ad-hoc query)、Spark Streaming应用于流式计算、 MLlib应用于机器学习、GraphX应用于图处理。

Spark可以基于自带的standalone集群管理器独立运行,也可以部署在Apache Mesos 和 Hadoop YARN 等集群管理器上运行。

Spark可以访问存储在HDFS、 Hbase、Cassandra、Amazon S3、本地文件系统等等上的数据,Spark支持文本文件,序列文件,以及任何Hadoop的InputFormat

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180912G00C3P00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券