Spark实战学习
1.什么是Spark?
2.为什么要使用Spark?
因为Hadoop在处理数据的时候有多次的IO和网络操作,Mapreduce都要转成map,shuffle和reduce等核心阶段,而且任务之间是串行执行的
Spark对比Hadoop MR的特点
内存计算比mr快100倍,磁盘计算快mr10倍
使用方便,安装部署简单,支持交互式
支持处理丰富
继承hadoop,能都读取hadoop上的数据,hdfs,hbase等
Spark运行模式
- local本地模式,多线程
- standalone集群模式可以使用zk解决单点故障问题
- on YARN,通过yarn调度资源,spark负责任务调度和计算
- On mesos
- on cloud
常见术语解释
什么是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
ACTION
Spark原理及流程
Standalone模式
Yarn-Cluster模式
Yarn-Client模式