MapReduce的定义:
MapReduce是一种编程模式。用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
MapReduce的工作原理:
一般会有两类主要的进程:
①JobTracker:主进程(Master),负责接收客户作业的提交,调度任务到作业节点上并监控taskTracker工作状态和工作进度,一个MapReduce一般只有一个JobTracker,一般是运行在最好的资源上
②TaskTracker:任务节点,由JobTracker指派任务,然后将任务实例化,然后周期性的向JobTracker会报状态。
通俗的来讲JobTracker就像是一个项目经理,而TaskTracker类似一个普通员工,JobTracker(经理)本身主要管的是每个TaskTracker(员工)的工作情况,他本身可能并不会参加到具体的工作任务当中,但是有一点需要注意,MapReduce中通常是由
TaskTracker(员工)去问询JobTracker(经理)是否有任务可以做,而不是JobTracker(经理)主动找看谁闲了给谁指派任务。
MapReduce的执行流程放到下次笔记再记。