最近国网这边要求使用大数据框架写项目,无奈之前对于Hadoop这些一无所知,只能先学习一下开发时主要用到的一些技术点,后续有空再继续补充原理知识
MapReduce主要是采用分而治之的思想,上图的理解主要如下。Hadoop的Hdfs分布式存储系统将大数据分成很多数据块,每个数据块(input splits)传入到input阶段,
MapReduce数据块处理
输入拆分:
输入到MapReduce工作被划分成固定大小的块叫做 input splits ,输入折分是由单个映射消费输入块。
映射 - Mapping
这是在 map-reduce 程序执行的第一个阶段。在这个阶段中的每个分割的数据被传递给映射函数来产生输出值。
重排(shuffling)
这个阶段消耗映射阶段的输出。它的任务是合并映射阶段输出的相关记录。在我们的例子,同样的词汇以及它们各自出现频率。(可以理解为将相同key的map整理成一个新的map(value是个数组))
Reducing
在这一阶段,从重排阶段输出值汇总。这个阶段结合来自重排阶段值,并返回一个输出值。总之,这一阶段汇总了完整的数据集。
java操作的核心方法
Maping阶段<