1、 MapReduce是一个编程模型,既不是平台也不是特定的语言。面向记录的数据处理(键和值),便于跨多个节点分配任务
2、 集群上的资源管理取决于版本
1)MapReduce v1(MRv1,经典MapReduce)使用JobTracker和TaskTracker(架构)守护进程启动和管理Map任务,shuffle和sort,以及Reduce任务
2)MapReduce v2(MRv2,YARN)
3、MRv1守护进程
JobTracker每个群集一个。管理MapReduce作业,将各个任务分配给TaskTracker
TaskTracker每个从节点一个。启动和监视单个Map和Reduce任务
4、MapReduce v2
1)集群上的资源由YARN管理:ResourceManager调度资源和管理应用程序生命周期;NodeManager启动容器任务
2)单个作业任务由ApplicationMaster管理
5、MRv1与MRv2
1)资源分配
MRv1 从节点配置为运行固定数量的Map任务和固定数量的Reduce任务
MRv2 根据需要为任何类型的任务分配容器
2)资源管理守护程序
MRv1 每个群集一个JobTracker,可以支持大约4000个节点
MRv2 每个集群一个ResourceManager,可以支持数万个节点
3)工作组合
MRv1 仅限MapReduce作业
MRv2 支持其他框架和应用程序(例如Impala,Spark,Giraph等),在同一集群上运行的不同类型的应用程序之间协商资源
6、MapReduce作业有三个阶段
1) Map阶段,Mappers将HDFS数据作为输入并产生中间数据
2) Shuffle和sort阶段(严格意义上属于Map阶段),将数据从Mappers发送到Reducers
3) Reduce阶段,Reducers汇总Mappers的结果
4) 过程可以被认为是类似于Unix管道。
如:cat /my/log | grep '\.html' (Map)| sort (Shuffle and sort)| uniq –c(Reduce) > /my/outfile