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

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的运行状态和本节点上的资源使用情况;
任务完成。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值