公平调度是一种赋予作业(job)资源的方法,它的目的是让所有的作业随着时间的推移,都能平均的获取等同的共享资源。当单独一个作业在运行时,它
将使用整个集群。当有其它作业被提交上来时,系统会将任务(task)空闲时间片(slot)赋给这些新的作业,以使得每一个作业都大概获取到等量的
CPU时间。与Hadoop默认调度器维护一个作业队列不同,这个特性让小作业在合理的时间内完成的同时又不“饿”到消耗较长时间的大作业。它也是一个在
多用户间共享集群的简单方法。公平共享可以和作业优先权搭配使用——优先权像权重一样用作为决定每个作业所能获取的整体计算时间的比例。
公平调度器按资源池(pool)来组织作业,并把资源公平的分到这些资源池里。默认情况下,每一个用户拥有一个独立的资源池,以使每个用户都能
获得一份等同的集群资源而不管他们提交了多少作业。按用户的Unix群组或作业配置(jobconf)属性来设置作业的资源池也是可以的。在每一个资源池
内,会使用公平共享(fairsharing)的方法在运行作业之间共享容量(capacity)。你也可以给予资源池相应的权重,以不按比例的方式共享
集群。
除了提供公平共享方法外,公平调度器允许赋给资源池保证(guaranteed)最小共享资源,这个用在确保特定用户、群组或生产应用程序总能
获取到足够的资源时是很有用的。当一个资源池包含作业时,它至少能获取到它的最小共享资源,但是当资源池不完全需要它所拥有的保证共享资源时,额外的部分
会在其它资源池间进行切分。
在常规 *** 作中,当提交了一个新作业时,公平调度器会等待已运行作业中的任务完成以释放时间片给新的作业。但,公平调度器也支持在可配置的超时时
间后对运行中的作业进行抢占。如果新的作业在一定时间内还获取不到最小的共享资源,这个作业被允许去终结已运行作业中的任务以获取运行所需要的资源。因此
抢占可以用来保证“生产”作业在指定时间内运行的同时也让Hadoop集群能被实验或研究作业使用。另外,作业的资源在可配置的超时时间(一般设置大于最
小共享资源超时时间)内拥有不到其公平共享资源(fair
share)的一半的时候也允许对任务进行抢占。在选择需要结束的任务时,公平调度器会在所有作业中选择那些最近运行起来的任务,以最小化被浪费的计算。
抢占不会导致被抢占的作业失败,因为Hadoop作业能容忍丢失任务,这只是会让它们的运行时间更长。
最后,公平调度器还可以限制每用户和每资源池的并发运行作业数量。当一个用户必须一次性提交数百个作业时,或当大量作业并发执行时,用来确保中
间数据不会塞满集群上的磁盘空间,这是很有用的。设置作业限制会使超出限制的作业被列入调度器的队列中进行等待,直到一些用户/资源池的早期作业运行完
毕。系统会根据作业优先权和提交时间的排列来运行每个用户/资源池中的作业。
安装
要让公平调度器能在你的Hadoop中运行,你需要把它放到CLASSPATH中。最简单的方法就是把hadoop--fairschedulerjar从HADOOP_HOME/build/contrib/fairscheduler拷贝到HADOOP_HOME/lib。你也可以修改HADOOP_CONF_DIR/hadoop-envsh中的HADOOP_CLASSPATH,加入公平调度器的jar包。
你还需要在Hadoop的配置文件HADOOP_CONF_DIR/mapred-sitexml中设置下列属性让Hadoop使用公平调度器:
<property>
<name>mapredjobtrackertaskScheduler</name>
<value>orgapachehadoopmapredFairScheduler</value>
</property>
在重启集群后,你可以通过JobTracker的web用户界面中的>
我这里有个关于Hadoop的课程,整套课程一共有四个模块(HDFS实战、MapReduce、HBase实战微博、Hive应用),21个章节,30个课时,如果你抓紧时间的话,全部学下来也就一两个月,具体的看你的基础和进度了。我这里有一些这方面的课程,你要的话我可以发给你,我的qq是20590五五三三六。注明你要hadoop就可以了
数据量略小。。 datalocal的话
不记准备时间(10秒左右)目测一瞬间。。。
Map: 6秒左右
ReduceCopyer: key种类多么?
Merge: 一般一瞬间
Reducer: 一瞬间
合计20-30秒
以上就是关于Linux命令全部的内容,包括:Linux命令、如何查看hadoop、怎样打开hadoop2的公平调度器等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)