MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。此段摘自百度百科.
最近在学习Hadoop,看了一些关于mapreduce的资料.就结合资料总结了一下mapreduce的工作原理:
一. MR程序在客户端启动一个作业.
二.客户端向JobTracker获取一个作业号.
三. 客户端将运行作业所需要的资源(如jar文件)copy到hdfs中.该资源放在以改作业ID命名的文件夹中.
四. 向JobTracker提交作业,初始化作业.并将改作业分配给TaskTracker.同时TaskTracker会去hdfs中查找复制执行该作业所需要的资源.然后启动JVM运行该MR程序.
五.TaskTracker会通过心跳机制定时的向JobTracker发送一个包..该包中包含TaskTracker的运行状态和任务的执行情况.当JobTracker接收到最后一个任务完成的信息后,会将该任务标记为完成状态.
初学者总结....如有错误欢迎指正....