前言1. Spark core2. Spark sql3. Spark streaming
前言为什么要学习Spark?
1. Spark比MapReduce快
spark可以将数据缓存在内存中进行计算 (cache)spark是粗粒度资源调度,MR是细粒度资源调度DAG有向无环图 (spark两个shuffle中间结果不需要落地,MR需要数据落地)
2. Spark简单
1. Spark core- spark比MR快的三个原因RDD五大特性:
RDD由一组分区组成,默认一个block对应一个分区算子实际上是作用在每一个分区上的,每一个分区都会由一个task处理RDD之间有一系列的依赖关系,宽依赖和窄依赖,宽窄依赖用于切分stage, stage是一组可以并行计算的task分区类的算子只能作用在KV格式的RDD上,reducebyKey、groupBykey、sortBykeyspark为task的执行提供了最佳计算位置,移动计算而不是移动数据
- 常用算子
map mapPartition mapValuesflatMapfilterunionjoinsamplereduceBykey 会在map端进行预聚合groupBykey groupBysortBykey sortByforeach foreachPartitiontakecollectsave
- 环境搭建
local(一般用于测试)独立集群yarn
yarn-client
Driver在本地(执行spark-submit的服务器)启动如果在本地提交了大量的任务,会导致本地网卡流量剧增
yarn-cluster
driver在随机一台nodemanger中启动在本地看不到详细执行日志,一班用于上线使用有一个高可用模式,如果driver挂了,会自动重启一个
5. 任务调度和资源调度
6. 缓存
对同一个rdd多次使用的时候可以将rdd缓存起来缓存级别(常用两个)
MEMORY_ONLYMEMORY_AND_DISK_SER
checkpoint: 将rdd的数据缓存到hdfs中, 会切断rdd的依赖关系
- 广播变量
当在算子内使用了算子外的一个变量的时候可以将这个变量广播出去如果不使用广播变量每一个task中会有一个变量副本如果使用广播变量是每一个executor中一个变量副本
- 累加器
在算子内不能修改算子外的一个普通变量累加器是在Executor端进行累加,在Driver端读取累加结果 2. Spark sql
3. Spark streaming详情点击该篇博文:spark streaming概述及原理
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)