MapReduce简写MR
本文主要概述了hadoop1.x与hadoop2.x区别
HDFS区别 federation
MR区别 yarn
MR的shuffle过程
hadoop1.x
hadoop.2.x
split 128m
block 128m
因为如果split 256m,就占了2个block
一个split 对应 一个task , 那这个task 不管放在哪个datanode,都需要另一个block网络传输,应该做到本地化
;
block是严格按大小分,128m
但split 不是,若一个数据被切断,影响测试结果,这就是split 的意义之一
map一条一条处理完写入buffer(默认100m),达到阈值0.8,就益写,益写前分区,排序等,
spark vs mapreduce
spark 内存读写,DAG
mapreduce 磁盘
RDD 弹性分布式数据集
第4点:partitioner分区器作用在kv格式的RDDs
第5点:数据本地化,计算的task-由partition位置决定在哪个节点执行
说明,sc.textFile(),这是mr的方法
spark没有读取hdfs的文件的方法,采用mr的,mr读的时候会split,
所以partition 与 split 也是一对一
Driver分发task至work节点执行,
分发策略:本地化
Drvier会有大量网络通信;
1、 分发任务
2、 收集task计算结果
3、 收集task执行情况
OOM风险
collect 算子会将worker上计算结果回收到Driver端,慎用
伪代码是一个application,
代码中有多少个action算子,就有多少个job,count,2个
transformation
map(f)算子, 一对一
flatmap(f) 算子, 一对多
sample(float)算子, 随机抽取
groupbykey(k,v)算子,按k分组,有shuffle,就有分区器,分区器必须作用在k,v格式的RDD
reducebykey(f) 自动调用groupbykey(),f作用在seq(v)上
union()
join() k相同,
mapvalues(f) 只遍历v
sort(c) 传排序器
partitionby(p)传排序器
action
count()算子
collect()算子
reduce(f)算子
lookup(k)算子 返回seq(v)
save(str)算子