MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。它由Google在2004年提出,主要用于处理大数据。MapReduce体系结构主要包括以下几个组件:
1. Job Tracker(作业跟踪器):
负责管理整个MapReduce作业的生命周期。
分配任务给多个Task Tracker。
监控任务执行情况,如进度、状态等。
如果某个任务失败,Job Tracker会重新分配该任务。
2. Task Tracker(任务跟踪器):
运行在集群中的每个节点上。
接收Job Tracker分配的任务。
执行任务,如Map或Reduce任务。
向Job Tracker报告任务执行状态。
3. Map Task(映射任务):
对输入数据进行处理,将数据映射成键值对。
输出中间键值对。
4. Shuffle & Sort(洗牌与排序):
将Map Task输出的中间键值对进行排序和分组。
将相同键的值合并在一起,以便Reduce Task处理。
5. Reduce Task(归约任务):
对Map Task输出的中间键值对进行处理。
6. Input Splitter(输入拆分器):
将输入数据拆分成多个数据块,每个数据块分配给一个Map Task处理。
7. Output Collector(输出收集器):
收集Reduce Task的输出,并存储到指定的输出路径。
8. Job History Server(作业历史服务器):
记录作业的执行历史,包括作业的执行时间、状态、资源使用情况等。
9. Hadoop Distributed File System (HDFS)(Hadoop分布式文件系统):
存储MapReduce作业的输入数据和输出数据。
提供高吞吐量和高可靠性。
各组件功能总结如下:
Job Tracker:负责作业调度、任务分配和监控。
Task Tracker:负责执行任务和向Job Tracker报告任务状态。
Map Task:将输入数据映射成键值对。
Shuffle & Sort:对中间键值对进行排序和分组。
Input Splitter:将输入数据拆分成多个数据块。
Output Collector:收集Reduce Task的输出。
Job History Server:记录作业执行历史。
HDFS:存储输入和输出数据。
MapReduce通过将大数据集分解成多个小任务并行处理,从而提高了处理效率。