在MapReduce框架中,输入格式(InputFormat)对作业性能产生哪些影响?针对这些影响,可以采取哪些优化措施?
考察说明
考查对MapReduce输入格式如何影响作业性能的理解以及优化策略。
回答思路
- 【回答框架 1】输入格式决定数据如何被分割成输入分片,每个分片对应一个map任务。分片大小影响map任务数量和并行度,过小导致任务过多、调度开销大,过大则并行度下降。
- 【回答框架 2】输入格式还影响数据本地性,即数据块与计算节点的距离。合理设置分片大小和考虑数据块位置,可以提高本地性,减少网络传输。
- 【回答框架 3】优化措施包括:合理设置分片大小(如使用CombineTextInputFormat合并小文件),使用压缩格式(如Snappy)减少IO,以及根据数据特征自定义InputFormat实现更高效的数据读取。
- 【关键点 1】输入分片大小决定map任务并行度,影响整体性能。
- 【关键点 2】数据本地性是关键,减少网络传输可提升效率。
- 【关键点 3】合并小文件可减少任务数,压缩可减少磁盘和网络IO。
- 【易错点 1】分片大小并非越小越好,需权衡并行度和调度开销。
- 【易错点 2】压缩格式选择需考虑解压CPU成本。
- 【易错点 3】自定义InputFormat可能增加复杂度,需测试验证。