爱她吗 发表于 2018-10-31 06:06:04

hadoop-mapreduce总结1

  准备知识:
  1.在InputFormat这个接口中,有两个方法,InputSplit[] getSplits();
  RecordReader getRecordReader();
  2.mapreduce作业提交与初始化过程。
  作业提交:
  (1)命令行提交。。。。
  (2)获取作业ID,
  创建HDFS目录(你指定的存放结果的目录)
  上传文件到HDFS(应用程序Jar包,xml文件等)
  生成split文件(就是调用你指定的InputFormat中的getSplits)
  (3) 向JobTracker提交作业。
  作业初始化:
  调度器调用JobTracker.initJob()来构造Map Task 和Reduce Task并对他们进行
  初始化。
  3.Task运行过程分析
  Map Task整体流程:
  Read:   通过RecodReader(你指定的InputFormat中的getRecordreader()),从输入
  的InputSplit中解析出一个个key/value
  Map:   将上一步的key/value交给map()处理,形成新的key/value。
  Collect:在map()中,调用Partition.getPartition(),形成三元组                                     ,写入内存环形缓冲区中。
  Spill:(1)当内存缓冲区满了之后,对其中的数据排序(先按照partition,然                              后再按照key)
  (2)如果有Combiner,对数据做一次聚集
  (3)写入临时文件
  Combine:将临时文件合并(以分区为单位,并且排序)
  Ruduce Task整体流程:
  shuffle:从各个Map Task上拷贝一片数据(按照partition)
  merge:   合并文件
  sort:   排序,reduce()函数的输入数据时按照key进行聚集的一组数据,
  Reduce:
  一个Map(这里指的是哪个类)处理的是一个分片,map()函数,处理的是一对
  key/value。

页: [1]
查看完整版本: hadoop-mapreduce总结1