10.1 spark core — spark内核

spark是开源的分布式计算框架(源码是scala编写的) http://spark.apache.org/

计算速度加快

编写加快

hadoop:在hdfs读取-->计算结果存到hdfs-->二次计算依然在hdfs上读取-->输出

spark:在hdfs上读取-->计算结果存在内存中-->二次计算在内存中读取-->输出结果可以保存到hdfs上

spark有四种运行模式:

local:多用在本地eclipse上进行测试,所有的Spark进程均运行于同一个JVM中,并行处理则通过多线程来实现

standalone:集群单机模式,Spark集群由两类程序构成:一个驱动程序和多个执行程序。本地模式时所有的处理都运行在同一个JVM内,在集群模式时通常运行在多个不同的节点上。

集群单机模式通常包括:

1.一个运行Spark单机主进程和启动程序的主节点;

2.各自运行一个执行程序的进程的工作节点。

yarn:资源和任务管理框架

mesos:Mesos是一个开源集群计算框架

spark内核RDD:

弹性分布式数据集

spark中的RDDs让用户可以直接控制数据的共享。RDD具有可容错和并行数据结构特征,可以指定数据存储到硬盘还是内存、控制数据的分区方法并在数据集上进行种类丰富的操作

RDD是一个弹性的分布式数据集

1,RDD是由一系列的partition组成

2,每一个算子实际上作用在每个partition上

3,RDD有一系列的依赖关系

4,分区器是作用在key,value格式的RDD上

分区器是在shuffle阶段起作用

GroupByKey,reduceByKey,join,sortByKey等这些算子会产生shuffle-->这些算子必须作用在KV格式RDD上

5,每一个RDD都会提供一批最佳计算位置

sc.textFile("path")

读取HDFS上的文件,但是spark没有提供读取HDFS文件的方法,所有底层还是使用MapReduce读取HDFS方法

spark在读取文件时,实际上先将文件进行划分切片splits,splits默认和block块一样大小

一个block对应一个partition


Driver:分发task到Worker节点执行 ,Driver是一个JVM进程进程,这个进程有SparkContext对象

Driver分发策略:数据本地化

Driver会有大量的网络通信: --Driver会跟集群进行频繁的通信

1,分发task

2,收集task计算结果

3,收集task执行结果

4,心跳信息 --worker想Master发送心跳只发送workerId

map算子特点:输入一条数据,输出一条数据,关系是一对一

flatMap:输入一条数据,输出多条数据

猜你喜欢

转载自blog.csdn.net/u011418530/article/details/81092176