hadoop学习笔记二_MapReduce应用场景、原理、基本架构

MapReduce应用场景

 MapReduce特点:易于变成;良好的扩展性;高容错性;适合PB级以上海量数据的离线处理

不适合

  实时计算

    像MySQL一样,在毫秒级或者在秒级内返回结果

  流式计算

    MapReduce的输入数据集是静态的,不能动态变化

    MapReduce自身的设计特点决定了数据远必须是静态的

  DAG计算

     多个应用程序存在依赖关系,后一个应用程序的输入和前一个输入

MapReduce编程模型

内部实现

MapReduce将作业的整个运行过程分为两个阶段:Map阶段和Reduce阶段

Map阶段由一定数量的Map Task组成

  输入数据格式解析:InputFormat

  输入数据处理:Mapper

  数据分组:Partitioner

Reduce阶段由一定数量的Reduce Task组成

  数据远程拷贝

  数据按照key排序

  数据处理:Reducer

  数据输出格式:OutputFormat


InputFormat

  文件分片(InputFormat)方法

    处理跨行问题

  将分片数据解析成key/value对

    默认实现时TextInputFormat

TextInputFormat

  Key是行在文件中的偏移量,value是行内容

  若行被截断,则读取下一个block的前几个字符

Blcok

  HDFS中最小的数据存储单位

  默认是64MB

Spit

  MapReduce中的最小的计算单元

  默认与Block一一对应

Block与Split

  Split与Block的对应关系是任意的,可由用户控制

Combiner可看作local reducer

  合并相同的key对应的value(wordcount例子)

  通常与Reducer逻辑一样

好处

  减少Map Task输出数据量(磁盘IO)

  减少Reduce-Map网络传输数据量(网络IO)

如何正确使用 

  结果可累加

  Sum(YES!),Average(NO!)

Partitioner决定了Map Task输出的每条数据

  交给哪个Reduce Task处理

默认实现:hash(key)mod R

  R是Reduce Task数目

  允许用户自定义

很多情况需自定义Partitioner

  比如“hash(hash(hostname(URL)) mod R”确保相同域名的网页交给同一个Reduce Task处理

MapReduce架构

JobTracker

  Master
  管理所有作
  将作业分解成一系列任务
  将任务指派给TaskTracker
  作业/任务监控、错误处理等

TaskTrackers
  Slave
  运行Map Task和Reduce Task
  与JobTracker交互,执行命令,并汇报任务状态

Map Task
  Map引擎
  解析每条数据记录,传递给用户编写的map()
  将map()输出数据写入本地(如果是map-only作业,则直接写入HDFS)

Reduce Task
  Reduce引擎
  从Map Task上远程读取输入数据
  对数据排序
  将数据按照分组传递给用户编写的reduce()

JobTracker
  单点故障,一旦出现故障,整个集群不可用

TaskTracker
  周期性想JobTracker汇报心跳
  一旦出现故障,上面所有任务将被调度到其他节点上

MapTask/ReduceTask
  运行失败后,将被调度到其他节点上重新执行

机器用“slot”描述资源数量
  由管理员配置slot数目
  分为map slot和reduce slot两种
  从一定程度上,可看作“任务运行并发度”

Map slot
  可用于运行Map Task 的资源
  每个Map task可使用一个或多个map slot

Reduce slot
  可用于运行ReduceTask的资源
  每个Reduce Task可使用一个或多个reduce slot

任务调度器

  基本作用
    根据几点资源(slot)使用情况和作业的要求,将任务调度到各个节点上执行

  调度器考虑的因素
    作业优先级
    作业提交时间
    作业所在队列的资源限制

推测执行机制
作业完成时间取决于最慢的任务完成时间
  一个作业由若干个Map人物和Reduce人物构成
  因硬件老化、软件Bug
推测执行机制
  发现拖后腿的任务,比如某个人物运行速度远慢于任务平均速度
  为拖后腿人物启动一个备份任务,同时运行
  谁先运行完,则采用谁的结果
不能启动推测执行机制
  任务间存在验证的负载倾斜
  特殊人物,比如任务向数据库中写数据

MapReduce任务调度器
  FIFO(先来先服务)调度器JobTracker






















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值