搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 工云IT技术 > Spark简介和架构

Spark简介和架构

工云IT技术 2018-10-30

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

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《Spark简介和架构》的版权归原作者「工云IT技术」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注工云IT技术微信公众号

工云IT技术微信公众号:gongyunit

工云IT技术

手机扫描上方二维码即可关注工云IT技术微信公众号

工云IT技术最新文章

精品公众号随机推荐