今天学习下来,感觉最难理解的还是main函数的部分,Hadoop的执行顺序要从理论到实践来理解,Hadoop入门特别推荐这个博客,真的是良心之作:Hadoop学习笔记—4.初识MapReduce,我也链接在这里,方便日后复习观摩

接下来就是我认为主函数最难理解的部分了

map端执行的主要过程:

首先会对block进行split,每个split上启动一个map task,map方法执行完之后,最终会把输出写到磁盘上。如果没有热的侧阶段,则直接输出到hdfs上,如果有有reduce作业,则每个map方法的输出在写磁盘前线在内存中缓存。每个map task都有一个环状的内存缓冲区,存储着map的输出结果,在每次当缓冲区快满(默认是达到80%)的时候由一个独立的线程spillThread将缓冲区的数据以一个溢出文件的方式存放到磁盘,当整个map task结束后再对磁盘中这个map task产生的所有溢出文件做合并,被合并成已分区且已排序的输出文件。然后等待reduce task来拉数据

所以要注意的是,这里的主函数并不是我们通常理解的顺序执行,而只是去设置一些状态,最后运行的时候是根据这个状态来进行执行原本已经规划好的操作

Last modification:November 17th, 2020 at 03:09 pm