MapReduce 执行主要类
1. Mapper 类
功能:Mapper 类负责处理输入数据,将其分解成键值对(keyvalue pairs)。
输入:通常从输入格式(如 HDFS 中的文件)读取数据。
输出:生成一系列的中间键值对,这些键值对将被 Shuffle 和 Sort 阶段处理。
2. Reducer 类
功能:Reducer 类负责合并来自 Mapper 的中间键值对,执行特定的聚合或转换操作。
输入:从 Shuffle 和 Sort 阶段接收键值对。
输出:生成最终的输出结果,这些结果通常存储在输出格式中(如 HDFS)。
3. Job 类
功能:Job 类封装了 MapReduce 作业的所有配置信息,并负责执行整个作业。
主要方法:
setMapperClass(Class<? extends Mapper> mapperClass)
: 设置 Mapper 类。
setReducerClass(Class<? extends Reducer> reducerClass)
: 设置 Reducer 类。
setMapOutputKeyClass(Class<? extends Writable> mapOutputKeyClass)
: 设置 Mapper 输出的键类型。
setMapOutputValueClass(Class<? extends Writable> mapOutputValueClass)
: 设置 Mapper 输出的值类型。
setOutputKeyClass(Class<? extends Writable> outputKeyClass)
: 设置最终输出的键类型。
setOutputValueClass(Class<? extends Writable> outputValueClass)
: 设置最终输出的值类型。
waitForCompletion()
: 开始执行作业,并等待其完成。
4. InputFormat 类
功能:InputFormat 类负责定义输入数据的格式,以及如何将输入数据分割成多个分片(Splits)。
主要方法:
getSplits(JobContext job)
: 返回一个分片列表。
createRecordReader(InputSplit split, TaskAttemptContext context)
: 创建一个用于读取分片的 RecordReader。
5. OutputFormat 类
功能:OutputFormat 类负责定义输出数据的格式,以及如何将数据写入输出格式。
主要方法:
getRecordWriter(TaskAttemptContext context)
: 创建一个 RecordWriter 用于写入数据。
getOutputCommitter(TaskAttemptContext context)
: 创建一个 OutputCommitter 用于处理作业完成后的清理工作。
6. Shuffle 和 Sort
功能:在 Mapper 和 Reducer 之间,数据需要通过 Shuffle 和 Sort 阶段进行处理。
过程:
Shuffle:将 Mapper 输出的中间键值对根据键进行分组,并分配到不同的 Reducer。
Sort:对每个 Reducer 分配到的键值对进行排序,以便 Reducer 可以按照键的顺序处理数据。
7. TaskTracker 和 JobTracker
功能:在 Hadoop 分布式文件系统(HDFS)中,TaskTracker 负责执行作业中的任务,而 JobTracker 负责协调整个集群上的作业执行。
TaskTracker:负责执行作业的具体任务,如 Mapper 和 Reducer。
JobTracker:负责监控整个集群的状态,分配作业到 TaskTracker,并处理作业的生命周期。
是 MapReduce 中主要的类和概念,它们共同协作以高效地处理大规模数据集。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1138385.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复