我是菜鸟:hadoop之mapreduce设计理念和基本架构
2015-08-06 17:27
447 查看
MapReduce 是一个分布式计算框架,由 编程模型 和运行时环境 2部分组成。
编程模型为用户提供了非常易用的编程接口,用户只需要像编写串行程序那样实现几个简单的函数即可以完成一个分布式程序。
而复杂的节点间通信,节点实效,数据切分,都有MapReduce运行时环境完成,无需用户关心这些细节。
将问题抽象成Map和Reduce两个阶段。其中Map阶段将输入的数据解析成key/value,迭代调用map()函数处理后,再以key/value的形式输出到本地目录; Reduce阶段将key相同的value进行规约处理,最终将结果输出到HDFS上。其中运行时环境由JobTracker 和 TaskTracker完成, 其中JobTracker 主要负责资源管理和所有的作业调度控制,而TaskTracker负责接收来自jobTracker的命令和执行。
. 良好的扩展性,增加节点达到线性扩展集群
. 高容错性 通过计算迁移和数据迁移 等策略来提高集群的可用性和容错性。
用户只是需要编写map()和reduce()2个函数。
map( ): 以key/value作为输入,以另外的key/value作为中间输出到本地磁盘。
Reduce( ): 以key/value列表作为输入,经合并key相同的value后,产生另外一些列的key/value对作为最终输出写入hdfs。
如:分布式Grep,URL访问频率统计,分布式排序, top K, k-means 聚类等,而不能解决的问题如Fibonacci 数值计算,因为结果需要依赖于前面的计算。
jobTracker 将作业分解成若干的Task, 并对这些task进行调度和监控,以保障这些程序的正确运行;
TaskTracker 启动Task, 并向JobTracker回报这些Task的运行状态和本节点上的资源使用情况;
任务完成。
编程模型为用户提供了非常易用的编程接口,用户只需要像编写串行程序那样实现几个简单的函数即可以完成一个分布式程序。
而复杂的节点间通信,节点实效,数据切分,都有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的运行状态和本节点上的资源使用情况;
任务完成。
相关文章推荐
- SAP蓝图架构设计
- 网站的分布式架构一
- 阅读《游戏引擎架构》的思考1:BSP分割在游戏引擎中的应用
- 网站权重提高技巧
- 反网站跟踪的原理
- VS发布网站时,报错提示:“未能将文件xxx复制到xxx,未能找到文件xx”三种解决方案!
- 增加网站的用户体验度
- 大众点评运维架构的图文详解(全面前沿)
- 谈谈大型网站架构之系列
- 学习网站
- 开源项目架构分析之--Audacity
- 33个网站足以使你成为一个天才
- 网站收录怪象: 那些关于收录的秘密
- SmartCard-2 Architecture(架构)
- 48、android代码架构总结
- 反代理google网站
- 下载mysql和heartbeat网站
- 最好免费的 HTML5 & JS 网站视频播放器收集
- Android Vold架构(二)
- AWS 亚马逊云实现内网资源高可用(Keepalived broadcast失效的情况)