Spark

Posted languid

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark相关的知识,希望对你有一定的参考价值。

大数据追求相关性,不追求因果性。

 

一、Spark目的

map reuce:先写入磁盘,再从网络读取磁盘数据,mapreduce只适合处理对速度不敏感的离线批量处理。

spark:在一个物理节点,用内存完成各种各样的计算。(有时也用磁盘)

storm:流式,纯粹实时计算框架,吞吐量不高,每条数据过来直接处理这样每次传输校验通信。

sparkstreaming :分布式,准实时框架,把例如秒里的数据都成绩,然后一次性作为batch计算,吞吐量远高于storm。

 

二、sprk基本工作原理

从hadoop里的hive等读取数据------分布式的放到多个节点上(内存上)----处理好的数据可能移动到其他节点的内存-----迭代式计算(计算操作多个节点并行计算操作)----放入hive,mysql

PS:mapreduce于spark最大不同在于迭代式计算,map+Reduce就结束了,sprak可以分为n个阶段,因为他是迭代式的。

 

三、RDD:核心抽象

一个RDD在抽象上代表一个hdfs文件,

分布式数据集:元素集合包含数据,实际上是被分区的,分为多个分区散落在spark集群中的不同节点(一批节点上的一批数据就是RDD)。

最重要特性:提供了容错性,节点失败中自动恢复。默认放在内存,内存不够,被写入磁盘。

 

四、架构

Spark核心编程:1)定义初始RDD,从哪里读取数据2)定义对RDD的计算操作(算子)

3)循环往复的过程

 

 

 

Spark架构

Driver:编写的spark程序就再driver上,节点之一(进程)

Master:资源调度和分配,集群监控

worker:用自己内存存储RDD的某个或某些partition

Executor:进程

task:线程,启动在executor上(e和t对partitioon进行并行计算,也执行我们定义的map,flatmap等算子操作)

 

 

SPRK基本运行架构:

1)driver进程启动,初始化操作,发送请求到master进行注册

2)master接受spark注册申请,发送请求给worker,进行executor调度分配

3)worker接收到请求,启动executor

4)master接受到申请向driver进行反注册,driver就知道哪些executor为它服务

5)注册executor后,正式执行spark程序(创建RDD,读取数据源)

6)hdfs文件被读取到多个worker,也就是初始rdd

6)driver根据rdd定义提交task去executor

7)executor接受task后,启动多个线程执行task

8)task 对rdd的partition数据进行算子操作 形成新的RDDpartition

 

以上是关于Spark的主要内容,如果未能解决你的问题,请参考以下文章

SparkSpark Streaming

SparkSpark ShuffleSpark SQL 及 Spark MLlib

SparkSpark之Transformation和Action

SparkSpark的Shuffle机制

sparkspark sql

SparkSpark一些面试题