Spark实战学习

1.什么是Spark?

 

2.为什么要使用Spark?

因为Hadoop在处理数据的时候有多次的IO和网络操作,Mapreduce都要转成map,shuffle和reduce等核心阶段,而且任务之间是串行执行的

Spark对比Hadoop MR的特点

内存计算比mr快100倍,磁盘计算快mr10倍

使用方便,安装部署简单,支持交互式

支持处理丰富

继承hadoop,能都读取hadoop上的数据,hdfs,hbase等

Spark运行模式

  1. local本地模式,多线程
  2. standalone集群模式可以使用zk解决单点故障问题
  3. on YARN,通过yarn调度资源,spark负责任务调度和计算
  4. On mesos
  5. on cloud

 

常见术语解释

Spark实战学习

什么是RDD?

RDD就是分布式弹性数据集,可以在定义app的时候指定,通常是加载外部资源数据或者是对象集合

RDD有两种操作,转换和动作

转换就是将原来的Rdd通过某种规则转换成新的RDD,转换是函数规则,例如map和Filter

动作就是求出结果

转换采用的是懒处理,只有当动作的时候,才会真真的计算

如果需要对一个RDD进行重用,可以通过rdd,persist()方法将其放入内存中

血统,也就是RDD之间的关系

RDDD本质上是一个只读的分区记录集合,每一个分区就是一个dataset(类似于mr中的文件 切片)

map会产生窄依赖,groupby产生宽依赖

RDD的特征

  • 有一个分片列表,可以将一个RDD分成多个分片,这样才能并行运算
  • 函数计算每一个分片
  • 对父RDD的依赖可以分为宽依赖和窄依赖(一个是窄,多个依赖就是宽依赖)
  • 对KV类型的RDD是根据hash分区的,每一个分片有预先计算位置,移动运算优于移动数据

通过RDD.toDebugString,可以看到当前RDD的血统

RDD算子及功能

Transformation

Spark实战学习

Spark实战学习

ACTION

Spark实战学习

Spark实战学习

 

 

 

 

 

Spark原理及流程

Standalone模式

Yarn-Cluster模式

Yarn-Client模式