第7章 MapReduce作业
单选题
- (单选题, 2分)下列传统并行计算框架,说法错误的是哪一项?
A 刀片服务器、高速网、SAN,价格贵,扩展性差上
B 共享式(共享内存/共享存储),容错性好
C 编程难度高
D 实时、细粒度计算、计算密集型
正确答案: B
- (单选题, 2分)下列关于MapReduce模型的描述,错误的是哪一项?
A MapReduce采用“ 分而治之”策略
B MapReduce设计的一个理念就是“ 计算向数据靠拢”
C MapReduce框架采用了Master/Slave架构
D MapReduce应用程序只能用Java来写
正确答案: D
- (单选题, 2分)MapReduce1.0的体系结构中,JobTracker的主要任务是什么
A 负责资源监控和作业调度,监控所有TaskTracker与Job的健康状况
B 使用“slot”等量划分本节点上的资源量(CPU、内存等)
C 会周期性地通过“心跳”将本节点上资源的使用情况和任务的运行进度汇报给TaskTracker
D 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务(Task)
正确答案: A
- (单选题, 2分)下列关于MapReduce工作流程,哪个描述是正确的?
A 所有的数据交换都是通过MapReduce框架自身去实现的
B 不同的Map任务之间会进行通信
C 不同的Reduce任务之间可以发生信息交换
D 用户可以显式地从一台机器向另一台机器发送消息
正确答案: A
- (单选题, 2分)下列关于MapReduce的说法,哪个描述是错误的?
A MapReduce具有广泛的应用,比如关系代数运算、分组与聚合运算等
B MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数
C 编程人员在不会分布式并行编程的情况下,也可以很容易将自己的程序运行在分布式系统上,完成海量数据集的计算
D 不同的Map任务之间可以进行通信
正确答案: D
- (单选题, 2分)下列关于Map和Reduce函数的描述,哪个是错误的?
A Map将小数据集进一步解析成一批<key,value>对,输入Map函数中进行处理
B Map每一个输入的<k 1 ,v 1 >会输出一批<k 2 ,v 2 >。<k 2 ,v 2 >是计算的中间结果
C Reduce输入的中间结果<k 2 ,List(v 2 )>中的List(v 2 )表示是一批属于不同k 2 的value
D Reduce输入的中间结果<k 2 ,List(v 2 )>中的List(v 2 )表示是一批属于同一个k 2 的value
正确答案: C
- (单选题, 2分)下面哪一项不是MapReduce体系结构主要部分?
A Client
B JobTracker
C TaskTracker以及Task
D Job
正确答案: A
- (单选题, 2分)关于MapReduce11.0的体系结构的描述,下列说法错误的是?
A Task 分为Map Task 和Reduce Task 两种,分别由JobTracker 和TaskTracker 启动
B slot 分为Map slot 和Reduce slot 两种,分别供MapTask 和Reduce Task 使用
C TaskTracker 使用“slot”等量划分本节点上的资源量(CPU、内存等)
D TaskTracker 会周期性接收JobTracker 发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)
正确答案: A
- (单选题, 2分)下列说法错误的是?
A Hadoop MapReduce是MapReduce的开源实现,后者比前者使用门槛低很多
B MapReduce采用非共享式架构,容错性好
C MapReduce主要用于批处理、实时、计算密集型应用
D MapReduce采用“ 分而治之”策略
正确答案: C
简答题
- (简答题, 16分)MapReduce 是处理大数据的有力工具,但不是每个任务都可以使用MapReduce 来进行处理。试述适合用MapReduce来处理的任务或者数据集需满足怎样的要求。
正确答案:适合用MapReduce来处理的数据集,需要满足一个前提条件: 待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。
- (简答题, 16分)MapReduce模型采用Master(JobTracker)-Slave(TaskTracker)结构,试描述JobTracker和TasKTracker的功能。
正确答案:MapReduce 框架采用了Master/Slave 架构,包括一个Master 和若干个Slave。Master 上运行JobTracker,Slave 上运行TaskTracker。用户提交的每个计算作业,会被划分成若千个任务。JobTracker 负责作业和任务的调度,监控它们的执行,并重新调度已经失败的任务。TaskTracker负责执行由JobTracker指派的任务。
- (简答题, 20分)MapReduce计算模型的核心是Map函数和Reduce函数,试述这两个函数各自的输入、输出以及处理过程。
正确答案:
函数 | 输入 | 输出 | 说明 |
Map | <k1,v1> | List(<k2,v2>) | (1)将小数据集进一步解析成一批<key,value>对,输入Map函数中进行处理;(2)每一个输入的<k1,v1>会输出一批<k2,v2>,<k2,v2>是计算的中间结果 |
Reduce | <k2,List(v2)> | <k3,v3> | 输入的中间结果<k2,List(v2)>中的List(v2)表示是一批属于同一个k2的value |
Map函数的处理过程:将输入的元素转换成<key,value>形式的键值对,键和值的类型是任意的,其中键没有唯一性,不能作为输出的身份标识。Reduce函数的处理过程:将输入的一系列具有相同键的键值对以某种方式组合起来,输出处理后的键值对,输出结果合并成一个文件。
- (简答题, 20分)试画出使用MapReduce来对英语句子“Whatever is worth doing is worth doing well”进行单词统计的过程。
正确答案:Map输入:Whatever is worth doing is worth doing wellMap输出:<”Whatever”,1> <”is ”,1> <”worth”,1><”doing”,1><”is”,1><”worth”,1><”doing”,1><”well”,1>Shuffle:<”doing”,<1,1>><”is”,<1,1>><”well”,1><”whatever”,1><”worth”,<1,1>>Reduce: <”doing”,2><”is”,2><”well”,1><”whatever”,1><”worth”,2>
- (简答题, 10分)MapReduce中有这样一个原则:移动计算比移动数据更经济。试述什么是本地计算,并分析为何要采用本地计算。
正确答案:MapReduce设计的一个理念就是“计算向数据靠拢”,而不是“数据向计算靠拢”,因为移动数据需要大量的网络传输开销,尤其是在大规模数据环境下,这种开销尤为惊人,所以,移动计算要比移动数据更加经济。本地计算:在一个集群中,只要有可能,MapReduce框架就会将Map程序就近地在HDFS数据所在的节点运行,即将计算节点和存储节点放在一起运行,从而减少了节点间的数据移动开销。