I write this stuff since it confused me a lot.
First, the input Iterable values for reduce method is not sorted in any
order. It is mentioned on Page 277 in Hadoop: The Definitive Guide,
Third Edition.
Job has three methods related to second sort:
1) setPartitionerClass
2) setSortComparatorClass
3) setGroupingComparatorClass
For 0.18.3 API, JobConf's following three methods are used:
1) setPartitionerClass
2) setOutputKeyComparatorClass
3) setOutputValueGroupingComparator
The confusing part is setGroupingComparatorClass. For the following
input for reduce:
<k1, v1> <k2, v2> // sorted by key from map phase
If setGroupingComparatorClass decides that k1 is equivalent to k2 even
thought k1 and k2 are different, the output from reduce method will be:
<k1, <v1, v2>> // <v1, v2> are in the original key order, k2 is lost.
Now let's talk about MaxTemperatureUsingSecondarySort. Input is like:
1901 99
1901 98
1902 80
1902 10
The output from map is:
<<1901, 99>, null>
<<1901, 98>, null>
<<1902, 80>, null>
<<1902, 10>, null>
The reduce method will be invoked twice. The output is:
<1901, 99>
<1902, 80>
Now turns to SecondarySort in Hadoop examples. For the same input, the
output from map is:
<<1901, 98>, 98>
<<1901, 99>, 99>
<<1902, 10>, 10>
<<1902, 80>, 80>
The reduce method will also be invoked twice. The output is:
<1901, 98>
<1901, 99>
<1902, 10>
<1902, 80>
分享到:
相关推荐
2. **配置文件的区别**:hadoop-env.sh配置文件用于确保Hadoop系统能正常运行HDFS守护进程,如NameNode、Secondary NameNode和DataNode,而非yarn-env.sh。 3. **Hadoop2.x的Block大小**:在Hadoop2.x中,默认的...
本书首先会介绍Hadoop的基本架构,包括NameNode、DataNode、Secondary NameNode等组件的工作方式,以及HDFS的文件读写流程。接着,它会详细讲解MapReduce的工作原理,包括Mapper和Reducer阶段,以及中间结果的 ...
- MapReduce 模型:理解Map和Reduce两个主要阶段,以及Shuffle和Sort的过程。 - JobTracker与TaskTracker(旧版)/ResourceManager与NodeManager(YARN):了解任务调度和执行的逻辑。 - 自定义Mapper和Reducer:...
2. hadoop-hdfs:实现了HDFS,包括NameNode(元数据管理)、DataNode(数据存储)和Secondary NameNode(元数据备份)的源码。 3. hadoop-mapreduce:实现了MapReduce计算框架,包括JobTracker(任务调度)、...
9. **MapReduce工作流程**:在Hadoop 1.2.1中,MapReduce包括Map阶段和Reduce阶段,中间数据通过Shuffle和Sort进行处理。通过源码,我们可以看到这些阶段如何协调工作,以及数据如何在节点之间流动。 10. **HDFS...
6. **Chap 7 - 高级MapReduce技术**:涵盖如使用Secondary Sort进行复杂排序,或者使用New API(MapReduce v2, YARN)提升性能和资源管理。 7. **Chap 8 - Hadoop优化与故障排除**:这部分内容可能涉及Hadoop集群的...
这份“数据算法--HadoopSpark大数据处理技巧”文档显然探讨了如何利用这两个工具进行复杂的数据操作,具体涉及到Scala编程实现的两个重要算法:Secondary Sort(二级排序)和Common Friends(共同朋友计算)。...
5. **数据处理优化**:在Hadoop中,可以通过优化MapReduce的Job配置,如调整Split大小,优化Reducer数量,使用Combiner减少网络传输,以及利用Secondary Sort等技术来提升处理效率。 6. **容错与稳定性**:Hadoop...
- HA(High Availability):在2.7.1版本中,HDFS支持NameNode的高可用性,通过使用Secondary NameNode和Quorum Journal Manager实现,确保了服务的连续性。 - HDFS Federation:允许多个独立的命名空间并行运行在...
Reduce阶段则将Mapper的结果聚合,通过Shuffle和Sort过程,保证相同键值对的数据被同一个Reducer处理。 4. **源码分析**:深入Hadoop源码,可以了解如数据分块策略、Block和Packet的定义、心跳机制、故障恢复策略等...
本文将深入解析Hadoop的二次排序(Secondary Sort)原理,这是一个允许用户自定义排序规则以满足特定需求的功能。 首先,二次排序是在MapReduce框架内进行的一种特殊排序方式,它遵循两个主要步骤:第一字段排序和...
1. **Hadoop架构**:介绍Hadoop的整体设计,包括NameNode、DataNode、Secondary NameNode等节点的角色和功能,以及它们如何协同工作以提供数据存储和访问。 2. **HDFS原理**:详细解析HDFS的数据存储机制,如数据块...
在《Hadoop权威指南》中,读者可以深入了解到Hadoop的架构原理,包括NameNode和DataNode的角色,以及Secondary NameNode的功能。书中详细解释了HDFS的写入、读取过程,如何处理数据块的复制和故障恢复,以及如何扩展...
2. Shuffle与Sort:Map阶段产生的中间结果依据键进行排序和分区,为Reduce阶段做准备。 3. Reduce阶段:Reduce函数将相同键的值组合,进行聚合计算,生成最终结果。 4. 并行处理:多个Map任务和Reduce任务可以并行...
- **Secondary NameNode**:辅助NameNode,帮助合并编辑日志,减轻NameNode的压力。 - **HDFS副本策略**:通过在不同的节点上复制数据块,确保数据的可靠性和容错性。 3. **MapReduce**: - **Map阶段**:将输入...
1. Hadoop的架构:理解Hadoop的主节点(NameNode)和从节点(DataNode)的角色,以及Secondary NameNode的作用。 2. HDFS的工作原理:深入理解数据块的概念,以及副本策略如何确保数据冗余和容错性。 3. MapReduce的...
理解Hadoop的分布式环境,包括NameNode、DataNode、Secondary NameNode等节点的角色,以及它们如何协同工作以确保数据的可靠存储和访问。 2. **HDFS详解**:HDFS的文件块、副本策略、故障恢复机制是学习的重点。书...
书中还讨论了Secondary Sort(二级排序)问题,提供了Hadoop和Spark解决方案的详细案例分析,包括输入、预期输出、map()和reduce()函数的介绍,以及实际代码示例的运行结果。 书中对于Secondary Sort问题进行了深入...
源码中,你可以看到NameNode、DataNode和Secondary NameNode等节点的角色定义,以及文件的块级存储、复制策略和故障恢复机制。 2. **MapReduce**:MapReduce是Hadoop的计算模型,用于并行处理大量数据。它将复杂...
- **Shuffle & Sort**:中间结果的排序和分区,为Reducer输入做准备。 4. **Hadoop与Java的关系** - **编程接口**:Hadoop主要使用Java API开发,如`org.apache.hadoop.mapreduce`包下的类。 - **序列化**:...