MapReduce

MapReduce简写MR
本文主要概述了hadoop1.x与hadoop2.x区别
  HDFS区别 federation
  MR区别 yarn

MR的shuffle过程

MapReduce_第1张图片
image.png

hadoop1.x

MapReduce_第2张图片
image.png

hadoop.2.x

MapReduce_第3张图片
image.png

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 弹性分布式数据集


MapReduce_第4张图片
image.png

第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端,慎用

MapReduce_第5张图片
image.png

伪代码是一个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)算子

你可能感兴趣的:(MapReduce)