1.2 MapReduce
特别说明:“红色字体”标题均为高频面试题
- 1.2.1 *MR的执行流程?
- 1.2.2 *MapReduce写过吗?有哪些关键类? mapper 的方法有哪些? setup方法是干嘛的?它是每读取一行数据就调用一次这个方法吗?
- 1.2.3 有个需求,要求-条指令可以把所有文件都shuffle到同一partition 中,用MapReduce的话,你怎么写?
- 1.2.4 *Hadoop Shuffle原理(越详细越好)?
- 1.2.5 *combine函数的作用?
- 1.2.6 *简列几条MapReduce的调优方法?
- 1.2.7 *Hadoop中有哪几个进程,各自的作用是什么?
- 1.2.8 *Yarn的job提交流程?
- 1.2.9 现块的大小为128M,现在有一文件大小为260M,进行spilt的时候,会被分成几片?
- 1.2.10 *列举MR中可干预的组件(详细说明各组件的原理,ps: combine) ?
- 1.2.11 *分片与分块的区别?
- 1.2.12 *resourceManager的工作职责?
- 1.2.13 *NodeManager的工作职责?
- 1.2.14 *简述Hadoop的调度器
- 1.2.14.3 Fair Scheduler (公平调度器)
- 1.2.15 *我们开发job时,是否可以去掉reduce阶段。
1.2.1 *MR的执行流程?
MR的整体执行流程: (Yarn 模式)
1. 在MapReduce程序读取文件的输入目录上存放相应的文件。
2.客户端程序在submit()方法执行前,获取待处理的数据信息,然后根据集群中的参数的配置形成一个任务分配规划。
3.客 户端提交切片信息给Yarn, Yarn 中的resourcemanager启动MRAPPmaster。
4.MrAPPmaster启动后根据本次job的描述信息,计算出需要的maptask实例对象,然后向集群申请机器启动相应数量的maptask进程。
5. Maptask 利用客户端指定的inputformat来读取数据,形成输出的KV键值对。
6. Maptask 将输入KV键值对传递给客户定义的map ()方法,做逻辑运算。
7. Map ()方法运算完毕后将KV对收集到maptask缓存。
8. shuffle阶段:
(1) maptask 收集我们的map ()方法输出的KV对,放到环形缓存区中。
(2) maptask 中的KV对按照K分区排序,并不断溢写到本地磁盘文件,可能会溢出多个文件。
(3)多个文件会被合并成大的溢出文件。
(4)在溢写过程中,及合并过程中,都会不停的进行分区和针对key的排序操作。
(5) Reducetask 根据自己的分区号,去各个maptask机器上获取相应的结果分区数据。
(6) Reducetask会取到同-一个分区的来自不同maptask 的结果文件,reducetask 会将这些文件再进行归并排序。
(7)合并成大文件后,shuffle的过程也就结束的,后面进入reducetask的逻辑运算过程(从文件中取出一一个一个的键值对group,调用用户自定义的reduce ()方法)。
9. MrAPPmaster 监控到所有的maptask进程任务完成后,会根据客户指定的参数启动相应数量的reducetask进程,并告知reducetask进程要处理的数据分区。
10. reducetask 进程启动后,根据MrAPPmaster告知的待处理数据所在位置,从若干台maptask运行所在机器上获取若干个maptask输出结果文件,并在本地进行重新归并排序,然后按照相同key的KV为-一个组,调用客户定义的reduce)方法进行逻辑运算。
11. reducetask 运算完毕后,调用客户指定的outputformat将结果数据输出到外部。
【面试指导&技巧】
MR的执行流程基本上是-一个必问的问题。所以该问题必须掌握。
建议通过画图的方式,进行理解记忆。
需要能够回答出整体流程以及其中的细节,回答出其中的关键步骤、Shuffle机制等。
1.2.2 *MapReduce写过吗?有哪些关键类? mapper 的方法有哪些? setup方法是干嘛的?它是每读取一行数据就调用一次这个方法吗?
1.关