赞
踩
一、大数据概论
三、HDFS操作
四、云数据库
1) 输入数据进行分片之后,分片的大小跟原始的文件大小、文件块的大小有关。每一个分片对应的一个map任务。
2) map任务在执行的过程中,会将结果存放到内存当中,当内存占用达到一定的阈值(这个阈值是可以设置的)时,map会将中间的结果写入到本地磁盘上,形成临时文件这个过程叫做溢写。
3) map在溢写的过程中,会根据指定reduce任务个数分别写到对应的分区当中,这就是partition过程。每一个分区对应的是一个reduce任务。并且在写的过程中,进行相应的排序。在溢写的过程中还可以设置conbiner过程,该过程跟reduce产生的结果应该是一致的,因此该过程应用存在一定的限制,需要慎用。
4) 每一个map端最后都只存在一个临时文件作为reduce的输入,因此会对中间溢写到磁盘的多个临时文件进行合并Merge操作。最后形成一个内部分区的一个临时文件。
Reduce端:
1) 首先要实现数据本地化,需要将远程节点上的map输出复制到本地。
2) Merge过程,这个合并过程主要是对不同的节点上的map输出结果进行合并。
3) 不断的复制和合并之后,最终形成一个输入文件。Reduce将最终的计算结果存放在HDFS上。
针对MR2是新一代的MR的API。其主要是运行在Yarn的资源管理框架上。
5. Shuffle过程是MapReduce的重要过程,试述该过程的作用。
按照partition、key对中间结果进行排序合并,输出给reduce线程。
6. 分别描述Map端和Reduce端的shuffle过程。
7. MapReduce模型的原则是移动计算比移动数据更经济。简述什么是本地计算,为何采用本地计算。
8. MapReduce程序在运行期间启动的Map任务数据和Reduce任务数据由什么因素决定。
Hadoop为每个split创建一个map任务,split的多少决定了map任务的数目;最优的reduce任务个数取决于集群中可用的reduce任务槽(slot)的数目。
9. 为什么采用Combiner可以减少传输量。是否所有的MapReduce程序都可以采用Combiner,为什么?
对于每个分区内的所有键值对,后台线程会根据key对它们进行内存排序(Sort),排序是MapReduce的默认操作。排序结束后,还包含一个可选的合并(Combine)操作。如果用户事先没有定义Combiner函数,就不用进行合并操作。如果用户事先定义了Combiner函数,则这个时候会执行合并操作,从而减少需要溢写到磁盘的数据量。
10. MapReduce程序的输入输出都存储在HDFS中,而Map任务完成时的中间结果存在本地磁盘,这样做有何优缺点。
在某些情况下,整个任务的完成时间会缩短;这种改动大大降低了 MapReduce 的容错性;在没有错误的情况下,有时任务完成时间也会延长。
11. 举例说明WordCount工作过程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。