2024.10.16
一. 单选题(共8题,16分)
1. (单选题, 2分)下列传统并行计算框架,说法错误的是哪一项?
- A. 刀片服务器、高速网、SAN,价格贵,扩展性差上
- B. 共享式(共享内存/共享存储),容错性好
- C. 编程难度高
- D. 实时、细粒度计算、计算密集型
我的答案: B:共享式(共享内存/共享存储),容错性好;正确答案: B:共享式(共享内存/共享存储),容错性好;
2分
2. (单选题, 2分)下列关于MapReduce模型的描述,错误的是哪一项?
- A. MapReduce采用“ 分而治之”策略
- B. MapReduce设计的一个理念就是“ 计算向数据靠拢”
- C. MapReduce框架采用了Master/Slave架构
- D. MapReduce应用程序只能用Java来写
我的答案: D:MapReduce应用程序只能用Java来写;正确答案: D:MapReduce应用程序只能用Java来写;
2分
3. (单选题, 2分)MapReduce1.0的体系结构中,JobTracker是主要任务是什么?
- A. 负责资源监控和作业调度,监控所有TaskTracker与Job的健康状况
- B. 使用“slot”等量划分本节点上的资源量(CPU、内存等)
- C. 会周期性地通过“心跳”将本节点上资源的使用情况和任务的运行进度汇报给TaskTracker
- D. 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务(Task)
我的答案: A:负责资源监控和作业调度,监控所有TaskTracker与Job的健康状况;正确答案: A:负责资源监控和作业调度,监控所有TaskTracker与Job的健康状况;
2分
4. (单选题, 2分)下列关于MapReduce工作流程,哪个描述是正确的?
- A. 所有的数据交换都是通过MapReduce框架自身去实现的
- B. 不同的Map任务之间会进行通信
- C. 不同的Reduce任务之间可以发生信息交换
- D. 用户可以显式地从一台机器向另一台机器发送消息
我的答案: A:所有的数据交换都是通过MapReduce框架自身去实现的;正确答案: A:所有的数据交换都是通过MapReduce框架自身去实现的;
2分
5. (单选题, 2分)下列关于MapReduce的说法,哪个描述是错误的?
- A. MapReduce具有广泛的应用,比如关系代数运算、分组与聚合运算等
- B. MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数
- C. 编程人员在不会分布式并行编程的情况下,也可以很容易将自己的程序运行在分布式系统上,完成海量数据集的计算
- D. 不同的Map任务之间可以进行通信
我的答案: D:不同的Map任务之间可以进行通信;正确答案: D:不同的Map任务之间可以进行通信;
2分
6. (单选题, 2分)下列关于Map和Reduce函数的描述,哪个是错误的?
- A. Map将小数据集进一步解析成一批对,输入Map函数中进行处理
- B. Map每一个输入的会输出一批。是计算的中间结果
- C. Reduce输入的中间结果中的List(v 2 )表示是一批属于不同k 2 的value
- D. Reduce输入的中间结果中的List(v 2 )表示是一批属于同一个k 2 的value
我的答案: C:Reduce输入的中间结果中的List(v 2 )表示是一批属于不同k 2 的value;正确答案: C:Reduce输入的中间结果中的List(v 2 )表示是一批属于不同k 2 的value;
2分
7. (单选题, 2分)关于MapReduce1.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:Task 分为Map Task 和Reduce Task 两种,分别由JobTracker 和TaskTracker 启动;正确答案: A:Task 分为Map Task 和Reduce Task 两种,分别由JobTracker 和TaskTracker 启动;
2分
8. (单选题, 2分)下列说法错误的是?
- A. Hadoop MapReduce是MapReduce的开源实现,后者比前者使用门槛低很多
- B. MapReduce采用非共享式架构,容错性好
- C. MapReduce主要用于批处理、实时、计算密集型应用
- D. MapReduce采用“ 分而治之”策略
我的答案: D:MapReduce采用“ 分而治之”策略;正确答案: C:MapReduce主要用于批处理、实时、计算密集型应用;
0分
二. 多选题(共6题,16分)
9. (多选题, 2.6分)MapReduce相较于传统的并行计算框架有什么优势?
- A. 非共享式,容错性好
- B. 普通PC机,便宜,扩展性好
- C. 编程简单,只要告诉MapReduce做什么即可
- D. 批处理、非实时、数据密集型
我的答案: ABCD:非共享式,容错性好; 普通PC机,便宜,扩展性好; 编程简单,只要告诉MapReduce做什么即可; 批处理、非实时、数据密集型;正确答案: ABCD:非共享式,容错性好; 普通PC机,便宜,扩展性好; 编程简单,只要告诉MapReduce做什么即可; 批处理、非实时、数据密集型;
2.6分
10. (多选题, 2.6分)MapReduce体系结构主要由以下哪几个部分构成?
- A. Client
- B. JobTracker
- C. TaskTracker
- D. Task
我的答案: CD:TaskTracker; Task;正确答案: ABCD:Client; JobTracker; TaskTracker; Task;
1.3分
11. (多选题, 2.7分)下列关于MapReduce的体系结构的描述,说法正确的有?
- A. 用户编写的MapReduce程序通过Client提交到JobTracker端
- B. JobTracker负责资源监控和作业调度
- C. TaskTracker监控所有TaskTracker与Job的健康状况
- D. TaskTracker 使用“slot”等量划分本节点上的资源量(CPU、内存等)
我的答案: ABD:用户编写的MapReduce程序通过Client提交到JobTracker端; JobTracker负责资源监控和作业调度; TaskTracker 使用“slot”等量划分本节点上的资源量(CPU、内存等);正确答案: ABD:用户编写的MapReduce程序通过Client提交到JobTracker端; JobTracker负责资源监控和作业调度; TaskTracker 使用“slot”等量划分本节点上的资源量(CPU、内存等);
2.7分
12. (多选题, 2.7分)下列关于Map 端的Shuffle的描述,哪些是正确的?
- A. 当数据很少时,不需要溢写到磁盘,直接在缓存中归并,然后输出给Reduce
- B. MapReduce默认为每个Map任务分配1000MB缓存
- C. 多个溢写文件归并成一个或多个大文件,文件中的键值对是排序的
- D. 每个Map任务分配多个缓存,使得任务运行更有效率
我的答案: AC:当数据很少时,不需要溢写到磁盘,直接在缓存中归并,然后输出给Reduce; 多个溢写文件归并成一个或多个大文件,文件中的键值对是排序的;正确答案: AC:当数据很少时,不需要溢写到磁盘,直接在缓存中归并,然后输出给Reduce; 多个溢写文件归并成一个或多个大文件,文件中的键值对是排序的;
2.7分
13. (多选题, 2.7分)MapReduce执行的全过程包括以下哪几个主要阶段?
- A. 从分布式文件系统读入数据
- B. 执行Map任务输出中间结果
- C. 通过 Shuffle阶段把中间结果分区排序整理后发送给Reduce任务
- D. 执行Reduce任务得到最终结果并写入分布式文件系统
我的答案: ABCD:从分布式文件系统读入数据; 执行Map任务输出中间结果; 通过 Shuffle阶段把中间结果分区排序整理后发送给Reduce任务; 执行Reduce任务得到最终结果并写入分布式文件系统;正确答案: ABCD:从分布式文件系统读入数据; 执行Map任务输出中间结果; 通过 Shuffle阶段把中间结果分区排序整理后发送给Reduce任务; 执行Reduce任务得到最终结果并写入分布式文件系统;
2.7分
14. (多选题, 2.7分)下列说法正确的是?
- A. MapReduce体系结构主要由四个部分组成,分别是:Client、JobTracker、TaskTracker以及Task
- B. Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动
- C. 在MapReduce工作流程中,所有的数据交换都是通过MapReduce框架自身去实现的
- D. 在MapReduce工作流程中,用户不能显式地从一台机器向另一台机器发送消息
我的答案: BCD:Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动; 在MapReduce工作流程中,所有的数据交换都是通过MapReduce框架自身去实现的; 在MapReduce工作流程中,用户不能显式地从一台机器向另一台机器发送消息;正确答案: ABCD:MapReduce体系结构主要由四个部分组成,分别是:Client、JobTracker、TaskTracker以及Task; Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动; 在MapReduce工作流程中,所有的数据交换都是通过MapReduce框架自身去实现的; 在MapReduce工作流程中,用户不能显式地从一台机器向另一台机器发送消息;
1.4分
三. 简答题(共1题,20分)
15. (简答题, 20分)请在以下两题中任选一题作答: (1)通过查阅资料,写出一个或多个MapReduce的具体应用,并谈谈自己对MapReduce的认识。(满分10分) (2)词频统计任务编程实践,任务要求:在Linux系统本地创建两个文件,即文件wordfile1.txt和wordfile2.txt,文件wordfile1.txt的内容格式如下,需要将zhangsan换成自己名字的英文全拼: zhangsan loves Spark zhangsan loves Hadoop 文件wordfile2.txt的内容如下: Hadoop is good Spark is fast 请对这两个小数据集样本编写MapReduce词频统计程序,并截图给出统计结果,可参考相关教程https://dblab.xmu.edu.cn/blog/2481/。(满分20分)
- 我的答案:
10分
-
MapReduce的具体应用
社交网络数据处理
1.应用场景:分析社交媒体平台上的用户互动,如点赞、评论和分享。
实现:Mapper处理用户活动数据,提取用户ID和活动类型,Reducer则汇总每个用户的互动次数,帮助分析用户参与度。
推荐系统
2.应用场景:基于用户行为数据生成个性化推荐。
实现:Mapper从用户行为日志中提取用户和物品的关系,Reducer汇总同一用户对多个物品的评分,从而生成用户的推荐列表。
Mapper分割数据文件并处理每个数据块,Reducer负责合并结果,以便进行进一步的分析。
认识:MapReduce是一个强大且高效的分布式计算模型,主要用于处理和生成大规模数据集。它的核心优势有可扩展性:通过将计算任务分配到集群中的多台机器上,可以处理PB级别的数据。容错性:即使某个节点失败,系统也能重新调度任务,保证计算过程的完整性。简化编程模型:开发者只需关注业务逻辑,Hadoop会处理数据的分配和调度,让复杂的分布式计算变得简单。
然而,MapReduce也有其局限性,如对实时计算和低延迟任务支持不足,处理小文件效率低等。近年来,许多新技术,已经出现,旨在弥补这些不足,但MapReduce在大数据处理领域仍然占据重要地位。
- 正确答案: