分布式处理框架MapReduce

wordcount

统计文件中每个单词出现的次数

需求:求wc

  • 文件内容小:shell
  • 文件内容很大:TB、GB ????如何解决大数据量的统计分析

===>url TOPN <===wc的延伸

工作中很多场景的开发都是wc的基础上进行改造的

借助于分布式计算框架来解决了:mapreduce

MapReduce编程模型之执行步骤

  • 准备map处理的输入数据
  • Mapper处理
  • Shuffle
  • Reduce处理
  • 结果输出

MapReduce编程模型之核心概念

Split

交由MapReduce作业来处理的数据块,是MapReduce中最小的计算单元

HDFS:blocksize 是HDFS中最小的存储单元 128M

默认情况下:他们两是一一对应的,当然我们也可以手工设置他们之间的关系(不建议)

InputFormat

将我们的输入数据进行分片(split):InputSplit [] getSplits(JobConf job,int numSplits)

TextInputFormat:处理文本格式的数据

OutputFromat

MapReduce架构之MapReduce1.x

JobTracker:JT

  • 作业的管理者 管理者
  • 将作业分解成一堆的任务:Task(MapTask和ReduceTask)
  • 将任务分派给TaskTracker运行
  • 作业的监督、容错处理(task作业挂了,重启task的机制)
  • 在一定的时间间隔内,JT没有收到TT的心跳信息,TT可能是挂了,TT上运行的任务会指派到其它TT上去执行

TaskTracker:TT

  • 任务的执行者 干活的
  • 在TT上执行我们的Task(MapTask和ReduceTask)
  • 会与JT进行交互:执行/启动/停止作业,发送心跳信息给JT

MapTask

  • 自己开发的map任务交由该Task出来
  • 解析每条记录的数据,交给自己的map方法处理
  • 将map的输出结果写到本地磁盘(有些作业只仅有map没有reduce==>HDFS)

ReduceTask

  • 将Map Task输出的数据进行读取
  • 按照数据进行分组传给我们自己编写的reduce方法处理
  • 输出结果写到HDFS

MapReduce架构之MapReduce2.x

(与YARN类似)