第七次课
mapTask的处理流程:
1.确定要进行计算的数据在DataNode的哪个目录下
2.遍历该目录下的每一个文件
3.遍历第一个文件,获取文件大小(300M)
4.根据文件大小计算切片数量,每个切片的最大大小是128M,300M的数据需要三个切片
5.根据切片数量开启mapTask进程,需要3个切片,会开启3个mapTask进程
6.将切片信息写入到MRAppMaster中
Shuffle:描述数据从mapTask到reduceTask之间的过程。
Shuffle的Map端的工作:
在内存缓冲区的数据写入到本地磁盘文件之间,对数据按key进行排序。
将数据划分到不同的Reduce中去,达到负载均衡。
MapReduce程序的编写分为3部分:
Mapper:Mapper中输入的数据是Text类的对象,在map()方法中要将Text转换成String,对String中的数据,通过map()方法的Context对象,将数据转换成kv的格式,方式是 context.write(new Text(word), new IntWritable(1));
Reducer:将map中输出的key,value进行计算,调用reduce()方法,继承Reducer类
Driver:相当于客户端,入口类,描述任务的信息