MapReduce是一个计算模型,包括Map和Reduce两个阶段 ,在运行时,表现为Java进程
JobTracker负责接收客户提交的任务、分发任务、资源调用、任务监控
MapReduce执行的步骤:
1.1、读取HDFS中的文件,解析里面每一行成一个个的键值对. 每一个键值对调用一次Map
键值对 键是每一行的字节其实位置字节偏移量 value是行文本内容
1.2、自定义Map类,覆盖其中的map方法,实现自己的业务逻辑,把输入的<K,V>对转换为新的<K,V>对输出
1.3、对输出的<K,V>对进行分区
1.4、对每个分区的数据根据Key进行排序、分组。 分组就是把相同的Key的Value放到一起
1.5、(可选)对数据进行归约
1.6、多个Map任务,根据不同分区,传送到不同的reduce的节点上
1.7、reduce会接收来自多个Map任务的相同分区的数据,然后进行合并和排序
自定义Reduce类,覆盖其中的reduce方法,实现自己的业务逻辑,把输入的<K,V>对转换为新的<K,V>对输出
1.8、 对reduce输出的<K,V>写到HDFS中