1、Driver类
驱动类:任何一个程序想要运行,都要有main方法,包含main方法的类
需要自己开发,创建一个类
- 官方推荐:继承Configured类,实现Tool接口
- 功能:构建一个MapReduce程序:Job对象
- 配置这个对象五大阶段
- Input
- Map
- shuffle
- reduce
- output
- 提交运行这个job
2、Input类
这个类不用自己开发,官方已经默认提供好了
- 默认使用的输入类:TextInputFormat
- 在配置job时,我们要设置读取hdfs的哪个文件
决定了 程序从哪里读取数据
3、Mapper类
需要我们自己开发
- 负责提供Map阶段执行的map方法
- 必须继承Mapper
- 重写map方法,实现用户自定义的map处理逻辑
4、Reducer类
需要我们自己开发
- 负责提供Reduce阶段执行的reduce方法
- 必须继承Reducer类
- 重写reduce方法,实现用户自定义的reduce处理逻辑
5、Output类
这个类不用自己开发,官方已经默认提供好了
- 默认使用的输出类:TextOutputFormat
- 在配置job时,我们要设置最终的结果保存在HDFS的什么位置
决定了我们的结果存储在什么地方
6、数据结构
- 整个MapReduce程序中,所有的数据都是以KeyValue对的形式存在
- 任何一种数据,在经过Input阶段,每一条数据都会变成一个KeyValue
7、KeyValue的数据类型
不能用Java中类型:int、double、boolean、String、long、null
- 必须使用Hadoop中的类型:都是基于Java类型封装好的支持序列化的类型【JavaBean】
- IntWritable
- DoubleWirtable
- BooleanWritable
- Text
- LongWritable
- NullWritable