第二章 关于MapReduce

本文详细介绍了Hadoop MapReduce的工作原理,包括作业、任务的划分方式及数据处理流程。此外,还深入探讨了YARN资源管理和调度策略,如FIFO、CapacityScheduler与FairScheduler的不同之处。
1.      MapReduce作业(job)是客户端需要执的一个工作单元。Hadoop将job分成若干个小任务(Task)来执行,其中包括两类任务:map任务和reduce任务。

2.      Hadoop将mapreduce的输入数据划分成等长的小数据块,成为输入分片,简称“分片”(split),每个分片的大小趋向于HDFS的一个块的大小,默认是64MB。

3.      Hadoop为每个分片构建一个map任务,每个DataNode节点只能有一个map。

4.      机架感知可以确定两个节点是否在同一机架上。

5.      Map任务将其输出写入本地硬盘,reduce任务将输出结果写入HDFS。

6.      单个reduce任务的输入通常来自所有mapper的输出。

7.      一个完整的MapReduce至少发生两次网络传输。Map输出经过排序发送到reduce,这一过程成为shuffle,通过网络宽带传输。Reduce将结果写入HDFS这一过程也需要通过网络传输。

每日一问

: Yarn调度策略有几种?

1. Yarn资源调度管理器。Yarn的自愿抽象比较简单,只有两种资源:内存和CPU。其中内存资源比较关键,直接决定任务能否成功。如果某个任务需要的内存过多,可能无法执行或者OOM。CPU资源的限制比较弱,只限定了一台NM上能并发执行多少任务。如果并发的过多,执行的可能比较慢。

2. Container是RM分配资源的基本单位。每个Container包含特定数量的CPU资源和内存资源,用户的程序运行在Container中,有点类似虚拟机。RM负责接收用户的资源请求并非配Container,NM负责启动Container并监控资源使用。如果使用资源(目前只有内存)超出Container的限制,相应进程会被NM杀掉。可见Container不止用于资源分配,也用于资源隔离。理论上说不同Container之间不能互相影响。

3. yarn常用调度器:

调度器主要有两个作用:1.决定如何划分队列2.决定如何分配资源(分为队列分配资源和为单个application分配资源)

-         FIFO

u  先进先出调度策略。所有的application按照提交的顺序来执行,这些application都放在一个队列中,只有在执行完一个后,下一个才会执行。

u  缺点:耗时的长任务会导致后提交的任务一直处于等待状态;不适合共享集群。

-         CapacityScheduler

u  Capacity Scheduler为每个人分配一个队列,每个队列占用的集群资源是固定的,但是可以不同,队列内部还是采用FIFO调度的策略。

-         FairScheduler

u  Fair Scheduler 试图为每个任务均匀分配资源,比如当前只有任务 1 在执行,那么它拥有整个集群资源,此时任务 2 被提交,那任务 1 和任务 2 将平分集群资源,以此类推

-         参考链接:

http://blog.youkuaiyun.com/xiaoxiangzi222/article/details/52808013

http://blog.sina.com.cn/s/blog_9d6887fe0102wibo.html

https://www.iteblog.com/archives/1536.html?from=like




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值