您的位置:首页 > 运维架构 > 网站架构

我是菜鸟:hadoop之mapreduce设计理念和基本架构

2015-08-06 17:27 447 查看
MapReduce 是一个分布式计算框架,由 编程模型 和运行时环境 2部分组成。

编程模型为用户提供了非常易用的编程接口,用户只需要像编写串行程序那样实现几个简单的函数即可以完成一个分布式程序。

而复杂的节点间通信,节点实效,数据切分,都有MapReduce运行时环境完成,无需用户关心这些细节。

MRv1 第一代MapReduce计算框架

编程模型:

将问题抽象成Map和Reduce两个阶段。其中Map阶段将输入的数据解析成key/value,迭代调用map()函数处理后,再以key/value的形式输出到本地目录; Reduce阶段将key相同的value进行规约处理,最终将结果输出到HDFS上。其中运行时环境由JobTracker 和 TaskTracker完成, 其中JobTracker 主要负责资源管理和所有的作业调度控制,而TaskTracker负责接收来自jobTracker的命令和执行。

MRv2

将JobTracker中的资源管理和作业控制功能分开,分别由不同进程ResourceManager 和ApplicationMaster实现。

MapReduce设计目标

. 易于编程

. 良好的扩展性,增加节点达到线性扩展集群

. 高容错性 通过计算迁移和数据迁移 等策略来提高集群的可用性和容错性。

编程模型 概述

关键字: Map, Reduce

用户只是需要编写map()和reduce()2个函数。

map( ): 以key/value作为输入,以另外的key/value作为中间输出到本地磁盘。

Reduce( ): 以key/value列表作为输入,经合并key相同的value后,产生另外一些列的key/value对作为最终输出写入hdfs。

MapReduce能够解决的问题

任务可以被分解成多个相对独立的子问题,待并行处理完这些子问题后,任务也就完成。

如:分布式Grep,URL访问频率统计,分布式排序, top K, k-means 聚类等,而不能解决的问题如Fibonacci 数值计算,因为结果需要依赖于前面的计算。

HDFS架构

HDFS架构主要采取了master/slave架构,主要由Client, NameNode, SecondaryNameNode 和 DataNode 4个部分组成。

MapReduce 架构

MR 也采用了Master/Slave架构, 主要由Client, JobTracker, TaskTracker 和Task组成。

MapReduce作业运行周期

Client 提交 job 到 jobTracker,;

jobTracker 将作业分解成若干的Task, 并对这些task进行调度和监控,以保障这些程序的正确运行;

TaskTracker 启动Task, 并向JobTracker回报这些Task的运行状态和本节点上的资源使用情况;

任务完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: