大数据笔记之MapReduce原理

MapReduce原理

Mapreduce是一种“分而治之”的思想,把大任务拆解为多个小任务

原理流程

大数据笔记之MapReduce原理

框架解剖图

大数据笔记之MapReduce原理

  1. 输入数据分块InputSplits:InputSplit定义了输入到单个Map任务的输入数据,一个MapReduce程序被统
    称为一个Job,可能有上百个任务构成。InputSplit将文件分为64MB。
  2. RR(RecordReader):称数据记录读入,其作用定义了如何将输入的数据转化为(KEY,VALUE)对(键值对)的方法,并把数据记录传给MAPPER。
  3. MAPPER:每个MAPPER类的实例生成一个JAVA进程,负责处理InputSplits上的数据。
  4. Combiner:合并相同KEY的键值对,减少partitioner数据通信开销,本地执行一个Reducer,满足一定条件才能执行。
  5. Partitioner & Shuffle&Sort:在Map工作完成之后,每一个 Map函数会将结果传到对应的Reducer所在的节点,此时,用户可以提供一个Partitioner类,用来决定一个给定的(key,value)对传给哪个节点。传输到每一个Reducer节点上的、将被所有的Reduce函数接收到的Key,value对会被Hadoop自动排序(即Map生成的结果传
    送到某一个节点的时候,会被自动排序)
  6. Reducer:做用户定义的Reduce操作,接收到一个OutputCollector的类作为输出
  7. 文件输出格式OutputFormat:写入到HDFS的所有OutputFormat都继承自FileOutputFormat,每一个Reducer都写一个文件到一个共同的输出目录,文件名是partnnnnn,其中nnnnn是与每一个reducer相关的一个(partition id)。

大数据笔记之MapReduce原理

 


Hadoop Job

  • Mapreduce程序以job形势提交给集群运行,一个 Mapreduce job又被划分为若干个MAP Task和Reduce Task并行执行。
  • 一个job的提交包括数据和程序的提交。

大数据笔记之MapReduce原理

  • JobTracker一直在等待JobClient提交作业
  • TaskTracker每隔3秒向 JobTracker发送心跳heartbeat询问有没有任务可做,如果有,让其派发任务给它执行
  • DN主动向NN请求任务。