荣耀大数据面试题及参考答案
说一下 MapReduce 流程
MapReduce 是一种用于大规模数据集并行运算的编程模型,其流程主要包括以下几个阶段:
- 数据划分与任务调度:系统自动将一个作业待处理的大数据划分为很多个数据块,每个数据块对应于一个计算任务。作业和任务调度功能负责分配和调度计算节点,同时监控节点的执行状态,并负责 Map 节点执行的同步控制2。
- Map 阶段:每个 Map 任务负责处理输入数据的一部分,将输入的键值对通过用户自定义的 Map 函数进行处理,生成中间键值对。例如,在处理文本数据时,Map 函数可能会将每个单词作为键,出现次数作为值输出。Map 任务会将生成的键值对暂存在内存中的缓冲区中,直到缓冲区达到一定大小或者达到一定数量的键值对5。
- Shuffle 阶段:当 Map 任务的缓冲区填满,或者 Map 阶段结束,就会触发 Shuffle 阶段。这个阶段主要任务是将 Map 任务输出的键值对按照键的哈希值重新分配到不同的 Reduce