Map的结果,会通过partition分发到Reducer上,Reducer做完Reduce操作后,通过OutputFormat,进行输出,下面我们就来分析参与这个过程的类。
Mapper的结果,可能送到可能的Combiner做合并,Combiner在系统中并没有自己的基类,而是用Reducer作为Combiner的基类,他们对外的功能是一样的,只是使用的位置和使用时的上下文不太一样而已。
Mapper最终处理的结果对<key, value>,是需要送到Reducer去合并的,合并的时候,有相同key的键/值对会送到同一个Reducer那,哪个key到哪个Reducer的分配过程,是由Partitioner规定的,它只有一个方法,输入是Map的结果对<key, value>和Reducer的数目,输出则是分配的Reducer(整数编号)。系统缺省的Partitioner是HashPartitioner,它以key的Hash值对Reducer的数目取模,得到对应的Reducer。
Reducer是所有用户定制Reducer类的基类,和Mapper类似,它也有setup,reduce,cleanup和run方法,其中setup和cleanup含义和Mapper相同,reduce是真正合并Mapper结果的地方,它的输入是key和这个key对应的所有value的一个迭代器,同时还包括Reducer的上下文。系统中定义了两个非常简单的Reducer,IntSumReducer和LongSumReducer,分别用于对整形/长整型的value求和。
Reduce的结果,通过Reducer.Context的方法collect输出到文件中,和输入类似,Hadoop引入了OutputFormat。OutputFormat依赖两个辅助接口:RecordWriter和OutputCommitter,来处理输出。RecordWriter提供了write方法,用于输出<key, value>和close方法,用于关闭对应的输出。OutputCommitter提供了一系列方法,用户通过实现这些方法,可以定制OutputFormat生存期某些阶段需要的特殊操作。我们在TaskInputOutputContext中讨论过这些方法(明显,TaskInputOutputContext是OutputFormat和Reducer间的桥梁)。
OutputFormat和RecordWriter分别对应着InputFormat和RecordReader,系统提供了空输出NullOutputFormat(什么结果都不输出,NullOutputFormat.RecordWriter只是示例,系统中没有定义),LazyOutputFormat(没在类图中出现,不分析),FilterOutputFormat(不分析)和基于文件FileOutputFormat的SequenceFileOutputFormat和TextOutputFormat输出。
基于文件的输出FileOutputFormat利用了一些配置项配合工作,包括mapred.output.compress:是否压缩;mapred.output.compression.codec:压缩方法;mapred.output.dir:输出路径;mapred.work.output.dir:输出工作路径。FileOutputFormat还依赖于FileOutputCommitter,通过FileOutputCommitter提供一些和Job,Task相关的临时文件管理功能。如FileOutputCommitter的setupJob,会在输出路径下创建一个名为_temporary的临时目录,cleanupJob则会删除这个目录。
SequenceFileOutputFormat输出和TextOutputFormat输出分别对应输入的SequenceFileInputFormat和TextInputFormat,我们就不再详细分析啦。
分享到:
相关推荐
通过理解这些源码细节,我们可以更好地掌握Hadoop作业的生命周期,从Job提交到MapTask和ReduceTask的执行,这对于优化大数据处理性能和调试Hadoop应用程序至关重要。这些深入的源码分析对于开发人员和系统管理员来说...
【标题】"hadoop-lzo-master.zip" 是一个与 Hadoop 和 LZO 压缩相关的项目源码压缩包,通常用于在 Hadoop 生态系统中实现数据压缩和存储优化。 【描述】"hadoop lzo 安装" 指的是在 Hadoop 环境中安装和配置 LZO ...
通过对Hadoop源码的深入研究,开发者可以更好地理解和定制Hadoop以适应特定的业务需求,提高数据处理效率。同时,源码分析也有助于培养解决问题的能力,为解决Hadoop在实际应用中遇到的问题提供思路。 总的来说,...
hadoop jar build/hadoop-examples-2.7.7.jar wordcount /wordcount /output ``` 4. 检查结果: ```bash hadoop fs -cat /output/part-r-00000 ``` 通过以上步骤,你已成功编译并运行了Hadoop 2.7.7。理解这一过程...
- 在Hadoop环境下执行WordCount任务,命令为`hadoop jar /usr/hadoop/hadoop-1.2.1/hadoop-examples-1.2.1.jar wordcount input output`。 #### 七、查看控制台输出及Web界面 1. **控制台输出**: - 查看...
- 使用Cygwin提交任务到Hadoop集群:`hadoop jar yourjob.jar YourMainClass input output`。 8. **cygwin安装后文件备份**: - 定期备份Cygwin的安装目录和用户配置文件,以防意外丢失。这些文件通常位于 `C:\...
你需要从Hadoop源码编译得到或者从网络上找到对应的版本,并将其放在`%HADOOP_HOME%\bin`目录下。 5. **安全认证**:如果Hadoop集群启用了Kerberos安全模式,那么在Windows上运行MapReduce作业还需要配置Kerberos...
hadoop-mapreduce Hadoop MapReduce示例。 使用HDFS中存储的access.log文件,实现MapReduce以查找每个IP访问该网站的... hadoop fs -cat /user/output/part-00000运行hadoop命令的快捷方式: 编辑〜/ .profile并设置h
运行MapReduce示例,例如`bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar grep input output 'dfs[a-z.]+'`,最后通过`bin/hdfs dfs -get output`将输出文件从分布式文件系统复制到...
本篇文档深入浅出地介绍了Hadoop集群的WordCount运行详解,从MapReduce理论到WordCount程序的运行,再到源码分析,内容丰富且详细,对于想要入门和深入了解Hadoop分布式计算和MapReduce模型的读者来说,是一份宝贵的...
2. **下载Hadoop源码**:从Apache官方网站获取Hadoop 2.7.5的源代码: ```bash wget https://downloads.apache.org/hadoop/common/hadoop-2.7.5/hadoop-2.7.5.tar.gz ``` 3. **解压Hadoop源代码**: ```bash ...
- 使用Hadoop源码包中的`eclipse-plugin`目录下的`.jar`文件进行安装。 ##### 2. 配置Hosts文件 - 编辑`/etc/hosts`文件(Windows XP系统的路径为:`C:\WINDOWS\system32\drivers\etc\hosts`)并添加如下内容: `...
首先,我们需要下载Hadoop 3.0.0的源码软件包,解压到一个合适的目录。确保你的系统满足Hadoop的硬件和软件需求,例如Java环境(JDK 8或更高版本)已经安装并配置好环境变量。 1. **配置Hadoop**: - 打开`hadoop/...
在这个命令中,`$HADOOP_INSTALL` 指向 Hadoop 安装目录,`input/ncdc/sample.txt` 是输入文件,`output` 是输出目录,`max_temperature_map.rb` 和 `max_temperature_reduce.rb` 分别是 Map 和 Reduce 的脚本。...
大数据实验报告 Hadoop 编程实现 wordcount 单词统计程序附源码 本实验报告旨在介绍使用 Hadoop 编程实现 wordcount 单词统计程序的步骤和代码实现。实验的目的在于熟悉 Hadoop 虚拟机的安装与环境的配置,初步理解...
然后,下载Hadoop的源码或二进制包。通常,我们会从Apache官方网站获取最新稳定版。解压后,将Hadoop配置文件夹`etc/hadoop`软连接到`/etc`目录,便于管理。例如:`sudo ln -s /path/to/hadoop/etc/hadoop /etc/...
- 使用MapReduce执行WordCount,运行`hadoop jar hadoop-examples-<version>.jar wordcount <input> <output>`命令,其中`<input>`是输入文件的HDFS路径,`<output>`是输出结果的路径。 在运行过程中,会显示出...
《Hadoop权威指南2》是Hadoop领域的一本经典著作,深入浅出地讲解了Hadoop的核心概念、架构以及实际应用。源码是书中理论知识的实践...总之,《Hadoop权威指南2》的源码是学习和研究Hadoop的宝贵资源,值得深入研究。
$ /usr/local/hadoop/bin/hadoop jar WordCount.jar org/apache/hadoop/examples/WordCount input output ``` 注意,这里的命令指定了程序所在的包名,这是因为在代码中设置了包名。如果一切正常,程序将成功运行并...
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class IntMinMax { public static class IntMapper extends Mapper, Text, IntWritable, IntWritable> { // 实现Mapper逻辑 } ...