MapReducer是一种编程模型 面向大数据并行处理的一种计算模型,框架和平台
基本特点:
分布可靠,对数据集的操作分发给多个集群中的多个节点实现可靠性,每个节点周期性返回它完成的任务和最新状态
封装实现了细节,基于框架API编程,面向业务 展开分布式编码
提供跨语言编程的能力
运行流程:
map阶段和reducer阶段
map:由map task组成
输入数据解析格式InputFormat
输入数据处理 Mapper
数据区分 Partitioner
数据按照key排序
本地规约 Combiner
将任务输出保存到本地
Reducer阶段有Reducer task组成
数据远程拷贝
数据按照key排序和文件合并merge
数据处理 Reducer
数据输出格式 OutputFormat
MapReduce开发流程:
搭建开发环境,参考HDFS环境搭建 基本一致
基于MapReducer框架编写代码 Map Reducer Driver三部分组成
编译打包 将源代码打成的包和依赖jar包打成一个包
上传至运行环境
运行hadoop jar命令 现已有yarn jar 替代 建议使用新命令提交执行
Map类编写
mapper:对map过程的封装
Text:Hadoop对Java String类的封装,适用于Hadoop对文本字符串的处理
IntWritable:Hadoop对Java Integer类的封装,适用于Hadoop整型的处理
Context:Hadoop环境基于上下文的操作对象,如Map中key/value的输出、分布式缓存数据、分布式参数传递等
StringTokenizer:对String对象字符串的操作类,做基于空白字符的切分操作工具类
Reduce类编写
Reducer:是MapReduce计算框架中Reduce过程的封装
Driver类编写
Configuration:与HDFS中的Configuration一致,负责参数的加载和传递
Job:作业,是对一轮MapReduce任务的抽象,即一个MapReduce的执行全过程的管理类
FileInputFormat:指定输入数据的工具类,用于指定任务的输入数据路径
FileOutputFormat:指定输出数据的工具类,用于指定任务的输出数据路径