"大数据平台-MapReduce介绍.pdf"
大数据平台中的MapReduce是由Google公司的Jeffrey Dean和Sanjay Ghemawat开发的一个针对大规模群组中的海量数据处理的分布式编程模型。MapReduce实现了两个功能:Map函数应用于集合中的所有成员,然后返回一个基于这个处理的结果集;Reduce是把从两个或更多个Map中,通过多个线程、进程或者独立系统并行执行处理的结果集进行分类和归纳。
MapReduce编程过程是一个继承类与实现接口的过程,这些类与接口来自于Hadoop的Map-Reduce框架,由框架控制其执行流程。编程过程的三个阶段是输入阶段、计算阶段和输出阶段。
在输入阶段,InputFormat文件分割,读取。FileInputFormat从文件中读取数据。InputSplits定义了输入到单个Map任务的输入数据。RecordReader定义了如何从数据上转化为一个(key,value)对,从而输出到Mapper类中。
在计算阶段,Mapper的map()方法处理输入<K1, V1>,产生输出<K2, V2>。Reducer的reduce()方法处理Map的输入<K2, list(V2)>,产生输出<K3, V3>。Combiner实现Reducer接口,对map()输出进行规约。Partitioner分发map()输出给不同的Reduce任务。
在输出阶段,OutputFormat数据输出。FileOutputFormat输出到文件。RecordWriter输出一个记录到文件中。
其他重要类与接口包括Configuration类、Job类、Writable接口和WritableComparable接口。Configuration类读取配置文件。Job类配置、提交Job,控制其执行,查询其状态。Writable接口序列化输入输出。WritableComparable接口可比较的序列化输入输出。
实例1:WordCount是一个简单的MapReduce实例。目的:利用并行化思想来对文本中的单词进行计数。应用场景:统计单词出现的频率。实例描述:输入:Whatever is worth doing is worth doing well.The hard part is not making the decision。输出:Whateverisworth doingwellThehardpartnot makingthedecision111113221111。
在这个实例中,我们可以看到MapReduce的强大功能,它可以轻松地处理大规模数据,并且可以并行执行,提高处理速度。MapReduce的编程过程也相对简单易学,开发者可以快速上手,实现自己的大数据处理任务。