设为首页 加入收藏

TOP

Spark简介与功能
2018-12-06 01:32:40 】 浏览:78
Tags:Spark 简介 功能
版权声明: https://blog.csdn.net/u013063153/article/details/53117041

Spark是基于内存计算的大数据分布式计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。

1.提供分布式计算功能,将分布式存储的数据读入,同时将任务分发到各个节点进行计算;

2.基于内存计算,将磁盘数据读入内存,将计算的中间结果保存在内存,这样可以很好的进行迭代运算;

3.支持高容错;

4.提供多计算范式;


2009年:诞生于AMPLab

2010年:开源

2013年6月:Apache孵化器项目

2014年2月:Apache顶级项目

now:contributor >450人


BDAS生态系统


-Mesos(相当于Hadoop生态系统中的YARN),资源管理、任务调度;

-HDFS

-Tachyon:分布式内存文件系统,缓存数据并进行快速的读写;

-Spark:核心计算引擎,能够将任务并行化,在集群中进行大规模并行运算;

-Spark Streaming:流式计算引擎;

-Sprak SQL:SQL on Hadoop,能够提供交互式查询和报表查询,通过JDBC等接口调用;

-GraphX:图计算引擎;

-MLlib:机器学习库。


Spark优势:

1.多计算范式支持

打造全栈多计算范式的高效数据流水线

2.处理速度

轻量级快速处理

3.易用性

易于使用,分布式RDD抽象,Spark支持多种语言

4.兼容性

与HDFS等存储层兼容

5.社区活跃度


#### Spark
ad-hoc<br>
batch query<br>
Streaming<br>
Spark core批处理、Spark Streaming实时处理、Spark MLib机器学习、Spark GraphX图计算。<br>


**Spark与其他计算框架的对比**<br>
在公司的业务中,数据大于1T基本就不用Spark。<br>
MapReduce处理海量数据,无法取代!<br>
Storm实时流式处理,无法取代!(公司业务比如数据的第一步:数据清洗)<br>
Hive查询海量数据,无法取代!<br>


Spark快的原因:基于内存、DAG优化<br>


Spark的运行模式:
- local
- standalone(master-slave)
- yarn
- mesos


RDD: Resilient Distributed DataSet<br>


通常情况下partition大小等于split(公式)<br>


Spark五大特性:
- a list of partitions
- a function for computing each split
- a list of dependencies on other RDDs
- a partitioner for key-value RDDs
- a list of preferred locations to compute each split on


Driver:main SparkContext(DAGScheduler\TaskScheduler)<br>
WorkerNode: Executors<br>


Cluster -> WorkNode -> Executors -> Threads -> Task<br>
Application(Driver(main SparkContext (DAGScheduler、TaskScheduler)) -> Job -> Stage -> Task<br>


Transformation延迟执行:RDD->RDD<br>
Action立即执行:RDD->结果<br>


缓存RDD,对反复调用的RDD进行缓存,多次使用时可以提高速度。<br>
默认的缓存策略是MEMORY_ONLY
- MEMORY_ONLY
- MEMROY_AND_DISK
- _2
- _SER


容错<br>
Lineage重新计算,如果lineage很长,可以缓存RDD来提高效率。<br>
doCheckPoint("hdfs://"),之前需要setCheckPointDir<br>


Wide Dependence and Narrow Dependence<br>
Wide Dependence:父的RDD会去多个子RDD,切分Stage<br>
Narrow Dependence: 做DAG优化,一个partition会对应一个Task,会对应一个pipeline。<br>
Wide Dependence: 做Stage的切分,Shffle父RDD里面的partition会去向子RDD里面的多个partition。<br>


Spark程序代码会被转化为DAG,有向无环图 SparkContext.runJob(rdd) <br>
DAGScheduler会根据DAG切分Stage,并封装每个Stage为TaskSet,发送给下游的TaskScheduler submitTasks(TaskSet)。<br>
TaskScheduler会跟Yarn进行沟通,把Task打散发配到真正的某一个Executor里面去计算。<br>


配到Struggling的Task,可以配置一个speculation的选项,会去发送一个同样的Task和之前的挣扎的Task竞争。<br>


Spark作业调度
- Job Action操作
- Stage shuffle操作
- Application -> Jobs -> Stages -> Task
- runJob -> DAGScheduler ->(taskSubmit) TaskScheduler -> BackEnd

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇开源数据处理框架Spark - 从入门.. 下一篇eclipse配置spark开发环境

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目