hadoop中slot简介(map slot 和 reduce slot)

Slots是Hadoop的一个重要概念。然而在Hadoop相关论文,slots的阐述难以理解。网上关于slots的概念介绍也很少,而对于一个有经验的Hadoop开发者来说,他们可能脑子里已经理解了slots的真正含义,但却难以清楚地表达出来,Hadoop初学者听了还是云里雾里。我来尝试讲解一下,以期抛砖引玉。

首先,slot不是CPU的Core,也不是memory chip,它是一个逻辑概念,一个节点的slot的数量用来表示某个节点的资源的容量或者说是能力的大小,因而slot是
Hadoop的资源单位。

Hadoop利用slots来管理分配节点的资源。每个Job申请资源以slots为单位,每个节点会确定自己的计算能力以及memory确定自己包含的slots总量。当某个Job要开始执行时,先向JobTracker申请slots,JobTracker分配空闲的slots,Job再占用slots,Job结束后,归还slots。每个TaskTracker定期(例如淘宝Hadoop心跳周期是5s)通过心跳(hearbeat)与Jobtracker通信,一方面汇报自己当前工作状态,JobTracker得够某个TaskTracker是否Alive;同时汇报自身空闲slots数量。JobTracker利用某个调度规则,如Hadoop默认调度器FIFO或者Capacity
Scheduler、FairScheduler等。(注:淘宝Hadoop使用云梯调度器YuntiScheuler,它是基于Fair Scheduler进行修改的)。

Hadoop里有 两种slots, map slots和reduce slots,map
task使用map slots,一一对应,reduce task使用reduce slots。注: 现在越来越多的观点认为应该打破map slots与 reduce slots的界限,应该被视为统一的资源池,they are all resource,从而提高资源的利用率。区分map
slots和reduce slots,容易导致某一种资源紧张,而另一个资源却有空闲。在Hadoop的下一代框架MapR中,已经取消了map
slots与reduce slots的概
,并将Jobtracker的功能一分为二,用ResourceManager来管理节点资源,用ApplicationMaster来监控与调度作业。ApplicationMaster是每个Application都有一个单独的实例,application是用户提交的一组任务,它可以是一个或多个job的任务组成。

Hadoop中通常每个tasktracker会包含多个slots,Job的一个task均对应于tasktracker中的一个slot。系统中map slots总数与reducer slots总数的计算公式如下:

Map slots总数=集群节点数×mapred.tasktracker.map.tasks.maximum

Reducer slots总数=集群节点数×mapred.tasktracker.reduce.tasks.maximum

时间: 2024-08-02 11:03:06

hadoop中slot简介(map slot 和 reduce slot)的相关文章

深度分析如何在Hadoop中控制Map的数量

深度分析如何在Hadoop中控制Map的数量 [email protected] 很多文档中描述,Mapper的数量在默认情况下不可直接控制干预,因为Mapper的数量由输入的大小和个数决定.在默认情况下,最终input 占据了多少block,就应该启动多少个Mapper.如果输入的文件数量巨大,但是每个文件的size都小于HDFS的blockSize,那么会造成 启动的Mapper等于文件的数量(即每个文件都占据了一个block),那么很可能造成启动的Mapper数量超出限制而导致崩溃.这些逻

hadoop中map和reduce的数量设置问题

转载http://my.oschina.net/Chanthon/blog/150500 map和reduce是hadoop的核心功能,hadoop正是通过多个map和reduce的并行运行来实现任务的分布式并行计算,从这个观点来看,如果将map和reduce的数量设置为1,那么用户的任务就没有并行执行,但是map和reduce的数量也不能过多,数量过多虽然可以提高任务并行度,但是太多的map和reduce也会导致整个hadoop框架因为过度的系统资源开销而使任务失败.所以用户在提交map/re

Hadoop 中关于 map,reduce 数量设置

map和reduce是hadoop的核心功能,hadoop正是通过多个map和reduce的并行运行来实现任务的分布式并行计算,从这个观点来看,如果将map和reduce的数量设置为1,那么用户的任务就没有并行执行,但是map和reduce的数量也不能过多,数量过多虽然可以提高任务并行度,但是太多的map和reduce也会导致整个hadoop框架因为过度的系统资源开销而使任务失败.所以用户在提交map/reduce作业时应该在一个合理的范围内,这样既可以增强系统负载匀衡,也可以降低任务失败的开销

Hadoop的HDFS和Map/Reduce

HDFS HDFS是一个具有高度容错性的分布式文件系统,适合部署在廉价的机器上,它具有以下几个特点: 1)适合存储非常大的文件 2)适合流式数据读取,即适合"只写一次,读多次"的数据处理模式 3)适合部署在廉价的机器上 但HDFS不适合以下场景(任何东西都要分两面看,只有适合自己业务的技术才是真正的好技术): 1)不适合存储大量的小文件,因为受Namenode内存大小限制 2)不适合实时数据读取,高吞吐量和实时性是相悖的,HDFS选择前者 3)不适合需要经常修改数据的场景 HDFS的架

hive优化之——控制hive任务中的map数和reduce数

一.    控制hive任务中的map数: 1.    通常情况下,作业会通过input的目录产生一个或者多个map任务.主要的决定因素有: input的文件总个数,input的文件大小,集群设置的文件块大小(目前为128M, 可在hive中通过set dfs.block.size;命令查看到,该参数不能自定义修改): 2.    举例:a)    假设input目录下有1个文件a,大小为780M,那么hadoop会将该文件a分隔成7个块(6个128m的块和1个12m的块),从而产生7个map数

Hadoop中map数的计算

转载▼ Hadoop中在计算一个JOB需要的map数之前首先要计算分片的大小.计算分片大小的公式是: goalSize = totalSize / mapred.map.tasks minSize = max {mapred.min.split.size, minSplitSize} splitSize = max (minSize, min(goalSize, dfs.block.size)) totalSize是一个JOB的所有map总的输入大小,即Map input bytes.参数map

Hadoop 2.4.1 Map/Reduce小结

看了下MapReduce的例子.再看了下Mapper和Reducer源码,理清了参数的意义,就o了. public class Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT> public class Reducer<KEYIN,VALUEIN,KEYOUT,VALUEOUT> Map是打散过程,把输入的数据,拆分成若干的键值对.Reduce是重组的,根据前面的键值对,重组数据. 自己写Map/Reduce的话,理解了如何拆分数据.组装数据,理解了

python中filter、map、reduce的区别

python中有一些非常有趣的函数,今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,map,reduce为内置函数. lambda:实现python中单行最小函数. g = lambda x: x * 2 #相当于 def g(x): return x*2 filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的ite

MapReduce作业的map task和reduce task调度参数

MapReduce作业可以细分为map task和reduce task,而MRAppMaster又将map task和reduce task分为四种状态: 1.pending:刚启动但尚未向resourcemanager发送资源请求: 2.scheduled:已经向resourceManager发送资源请求,但尚未分配到资源: 3.assigned:已经分配到了资源且正在运行: 4.completed:已经运行完成. map task的生命周期为:scheduled -> assigned -