Hadoop的调度器总结

时间:2024.5.4

Hadoop的调度器总结

随着MapReduce的流行,其开源实现Hadoop也变得越来越受推崇。在Hadoop系统中,有一个组件非常重要,那就是调度器,它的作用是 将系统中空闲的资源按一定策略分配给作业。在Hadoop中,调度器是一个可插拔的模块,用户可以根据自己的实际应用要求设计调度器。Hadoop中常见 的调度器有三种,分别为:

(1)默认的调度器FIFO

Hadoop中默认的调度器,它先按照作业的优先级高低,再按照到达时间的先后选择被执行的作业。

(2) 计算能力调度器Capacity Scheduler

支持多个队列,每个队列可配置一定的资源量,每个队列采用FIFO调度策略,为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交 的作业所占资源量进行限定。调度时,首先按以下策略选择一个合适队列:计算每个队列中正在运行的任务数与其应该分得的计算资源之间的比值,选择一个该比值 最小的队列;然后按以下策略选择该队列中一个作业:按照作业优先级和提交时间顺序选择,同时考虑用户资源量限制和内存限制。但是不可剥夺式。

(3)公平调度器Fair Scheduler

同计算能力调度器类似,支持多队列多用户,每个队列中的资源量可以配置,同一队列中的作业公平共享队列中所有资源,具体算法参见我的博文《Hadoop公平调度器算法解析》

非抢占式

实际上,Hadoop的调度器远不止以上三种,最近,出现了很多针对新型应用的Hadoop调度器。

(4)适用于异构集群的调度器LATE

现有的Hadoop调度器都是建立在同构集群的假设前提下,具体假设如下:

1)集群中各个节点的性能完全一样

2)对于reduce task,它的三个阶段:copy、sort和reduce,用时各占1/3

3)同一job的同类型的task是一批一批完成的,他们用时基本一样。 现有的Hadoop调度器存在较大缺陷,主要体现在探测落后任务的算法上:如果一个task的进度落后于同类型task进度的20%,则把该 task当做落后任务(这

种任务决定了job的完成时间,需尽量缩短它的执行时间),从而为它启动一个备份任务(speculative task)。如果集群异构的,对于同一个task,即使是在相同节点上的执行时间也会有较大差别,因而在异构集群中很容易产生大量的备份任务。

LATE(Longest Approximate Time to End,参考资料[4])调度器从某种程度上解决了现有调度器的问题,它定义三个阈值:1. SpeculativeCap,系统中最大同时执行的 speculative task数目(作者推荐值为总slot数的10%); 2. SlowNodeThreshold(作者推荐值为25%):得分(分数计算方法见论文)低于该阈值的node(快节点)上不会启动 speculative task;3. SlowTaskThreshold(作者推荐值为25%):当task进度低于同批同类task的平均进度的

SlowTaskThreshold时,会为该task启动speculative task。它的调度策略是:当一个节点出现空闲资源且系统中总的备份任务数小于SpeculativeCap时,(1)如果该节点是快节点(节点得分高于 SlowNodeThreshold),则忽略这个请求。

(2)对当前正在运行的task按估算的剩余完成时间排序 (3)选择剩余完成时间最大且进度低于SlowTaskThreshold的task,为该task启动备份任务。

(5)适用于实时作业的调度器Deadline Scheduler和Constraint-based Scheduler

这种调度器主要用于有时间限制的作业(Deadline Job),即给作业一个deadline时间,让它在该时间内完成。实际上,这类调度器分为两种,软实时(允许作业有一定的超时)作业调度器和硬实时(作业必须严格按时完成)作业调度器。 Deadline Scheduler(参考资料[5])主要针对的是软实时作业,该调度器根据作业的运行进度和剩余时间动态调整作业获得的资源量,以便作业尽可能的在deadline时间内完成。

Constraint-based Scheduler(参考资料[6])主要针对的是硬实时作业,该调度器根据作业的deadline和当前系统中的实时作业运行情况,预测新提交的实时作业能不能在deadline时间内完成,如果不能,则将作业反馈给用户,让他重调整作业的deadline。

————————————————————————————————————————–

参考资料:

【1】 Capacity Scheduler 介绍:http://hadoop.apache.org/common/docs/r0.19.2/capacity_scheduler.html 下载:http://hadoop.apache.org/common/docs/r0.20.0/capacity_scheduler.pdf

【2】 Fair Scheduler 介绍:http://hadoop.apache.org/common/docs/r0.20.2/fair_scheduler.html 下载:http://svn.apache.org/repos/asf/hadoop/mapreduce/trunk/src/contrib/fairscheduler/designdoc/fair_scheduler_design_doc.pdf

【3】 Fair Scheduler 论文:M. Zaharia, D. Borthakur, J. S. Sarma, K. Elmeleegy, S. Shenker, and I. Stoica, “Job scheduling for multi-user mapreduce clusters,” EECS Department, University of California, Berkeley, Tech. Rep., Apr 20xx.

【4】 C. Tian, H. Zhou, Y. He, and L. Zha, “A dynamic mapreduce scheduler for heterogeneous workloads,” in Proceedings of the 20xx Eighth International Conference on Grid and Cooperative Computing, ser. GCC ’09. Washington, DC, USA: IEEE Computer Society, 20xx, pp.218–224.

[Online]. Available: http://dx.doi.org/10.1109/GCC.20xx.19

【5】 Deadline Scheduler 论文:J. Polo, D. Carrera, Y. Becerra, J. Torres, E. Ayguade and, M. Steinder, and I. Whalley, “Performance-driven task co-scheduling for mapreduce environments,” in Network Operations and Management Symposium (NOMS), 20xx IEEE, 20xx, pp. 373 –380.

【6】 Constraint-based Scheduler 论文K. Kc and K. Anyanwu, “Scheduling hadoop jobs to meet deadlines,” in 2nd IEEE International Conference on Cloud Computing Technology and Science (CloudCom), 20xx, pp. 388 –392.


第二篇:Hadoop常见错误总结


Hadoop常见错误总结

20xx-12-30 13:55

错误1:bin/hadoop dfs 不能正常启动,持续提示:

INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 0 time(s).

原因:由于 dfs 的部分文件默认保存在tmp文件夹,在系统重启时被删除。 解决:修改core-site.xml 的 hadoop.tmp.dir配置文件路径:

/home/hadoop/tmp。

错误2:hadoop出现了一些问题。用$ bin/hadoop dfsadmin -report 测试的时候,发现dfs没有加载。

显示如下:

Configured Capacity: 0 (0 KB)

Present Capacity: 0 (0 KB)

DFS Remaining: 0 (0 KB)

DFS Used: 0 (0 KB)

DFS Used%: ?%

Under replicated blocks: 0

Blocks with corrupt replicas: 0

Missing blocks: 0

查看日志:

ERROR org.apache.hadoop.hdfs.server.datanode.DataNode:

java.io.IOException: Incompatible namespaceIDs in /home/hadoop/data: namenode namespaceID = 2033006627; datanode namespaceID = 1589898341

经分析,是由于namenode namespaceID = 2033006627;和datanode namespaceID = 1589898341 不一致造成原因。

修改了namenode namespaceID = 1589898341 可以使用,但是重启之后,又不可以用了。

最后解决方案:删除hadoop用户下的name文件夹,data文件夹,tmp文件夹,temp文件里的内容,然后重新执行namenode命令。

重启电脑之后,正常。

错误3:File /home/hadoop/tmp/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1

出现此错误,一般发生在datanode与namenode还没有进行连接,就开始往hdfs系统上put数据了。稍等待一会,就可以了。

也可以使用:hadoop dfsadmin –report命令查看集群的状态。

错误4:

每次启动总有部分datanade不能去全部启动,查看日志文件,显示为: ERROR org.apache.hadoop.hdfs.server.datanode.DataNode:

java.net.UnknownHostException: zgchen-ubutun: zgchen-ubutun at java.net.InetAddress.getLocalHost(InetAddress.java:1426)。

分析:这是由于datanode 找不到服务host引起的。

解决:通过查找/etc/hostname 找到hostname;比如:ubuntu。

然后找到/etc/hosts ,添加:127.0.1.1 ubuntu

错误5:

java.lang.OutOfMemoryError: GC overhead limit exceeded

分析:这个是JDK6新添的错误类型。是发生在GC占用大量时间为释放很小空间的时候发生的,是一种保护机制。解决方案是,关闭该功能,可以添加JVM的启动参数来限制使用内存: -XX:-UseGCOverheadLimit

添加位置是:mapred-site.xml 里新增项:mapred.child.java.opts 内容:-XX:-UseGCOverheadLimit

java.lang.OutOfMemoryError: Java heap space

出现这种异常,明显是jvm内存不够得原因,要修改所有的datanode的jvm内存大小。

Java -Xms1024m -Xmx4096m

一般jvm的最大内存使用应该为总内存大小的一半,我们使用的8G内存,所以设置为4096m,这一值可能依旧不是最优的值。(其实对于最好设置为真实物理内存大小的0.8)

错误6:Too many fetch-failures

Answer:

出现这个问题主要是结点间的连通不够全面。

1) 检查 、/etc/hosts

要求本机ip 对应 服务器名

要求要包含所有的服务器ip + 服务器名

2) 检查 .ssh/authorized_keys

要求包含所有服务器(包括其自身)的public key

错误7:处理速度特别的慢 出现map很快 但是reduce很慢 而且反复出现 reduce=0%

Answer:

结合第二点,然后修改可用内存大小。

conf/hadoop-env.sh 中的export HADOOP_HEAPSIZE=4000

错误8:能够启动datanode,但无法访问,也无法结束的错误

在重新格式化一个新的分布式文件时,需要将你NameNode上所配置的

dfs.name.dir这一namenode用来存放NameNode 持久存储名字空间及事务日志的本地文件系统路径删除,同时将各DataNode上的dfs.data.dir的路径 DataNode 存放块数据的本地文件系统路径的目录也删除。如本此配置就是在NameNode上删除/home/hadoop/NameData,在DataNode上删除

/home/hadoop/DataNode1和/home/hadoop/DataNode2。这是因为Hadoop在格式化一个新的分布式文件系统时,每个存储的名字空间都对应了建立时间的那个版本(可以查看/home/hadoop /NameData/current目录下的VERSION文件,上面记录了版本信息),在重新格式化新的分布式系统文件时,最好先删除NameData

目录。必须删除各DataNode的dfs.data.dir。这样才可以使namedode和datanode记录的信息版本对应。

注意:删除是个很危险的动作,不能确认的情况下不能删除!!做好删除的文件等通通备份!!

错误9:java.io.IOException: Could not obtain block:

blk_194219614024901469_1100

file=/user/hive/warehouse/src_20xx0924_log/src_20xx0924_log 出现这种情况大多是结点断了,没有连接上。或者

mapred.tasktracker.map.tasks.maximum 的设置 超过 cpu cores数目,导致出现获取不到文件。

错误10:Task Id : attempt_20xx10291615_0001_m_000234_0, Status : FAILED Error: java.io.IOException: No space left on device

Task Id : attempt_20xx10291615_0001_m_000240_0, Status : FAILED java.io.IOException: Spill failed

磁盘空间不够,应该分析磁盘空间df -h 检查是否还存在磁盘空间。

错误11:Task Id : attempt_20xx11011336_0007_m_000001_0, Status : FAILED org.apache.hadoop.hbase.client.RegionOfflineException: region offline: lm,,1288597709144

网上说,将/hbase删除;重启hbase后,可以正常应用了。但是我找不到/hbase目录,只好自己重新删除掉一些hadoop文件,重新生成文件管理系统。

还有一个可能是,配置错了/hbase/conf/hbase-env.sh的HBASE_CLASSPATH,这个默认是不配置的,所以可以不配置。

错误12:org.apache.hadoop.hbase.TableNotFoundException:

org.apache.hadoop.hbase.TableNotFoundException: lm

找不到表,hbase启动了,检查一下是否存在需要的Htable。

更多相关推荐:
hadoop认识总结

一对hadoop的基本认识Hadoop是一个分布式系统基础技术框架由Apache基金会所开发利用hadoop软件开发用户可以在不了解分布式底层细节的情况下开发分布式程序从而达到充分利用集群的威力高速运算和存储的...

Hadoop学习总结

Hadoop学习总结一背景随着信息时代脚步的加快各类数据信息越来越多海量数据的来源列举如下纽约证券交易所每天产生1TB的交易数据Facebook存储着约100亿张照片约1PB数据Ancestrycom一个家谱网...

hadoop总结

Hadoop概念Hadoop是一个能够对大量数据进行分布式处理的软件框架Hadoop的特点1可靠性Reliablehadoop能自动地维护数据的多份副本并且在任务失败后能自动地重新部署redeploy计算任务2...

hadoop原理_自己的总结

用户提交给hadoopclient的command指定了输入路径输出路径如下所示cmdquotHADOOPHOMEbinhadoopbistreaminginputLINKPATHpartinputPATCHP...

最新hadoop应用总结

Hadoop应用总结一系统配置1安装linuxubuntu系统2安装开启opensshserversudoaptgetinstallopensshserver3建立ssh无密码登录sshkeygentdsaP3...

hadoop常见启动问题总结

Hadoop节点问题总结1.hadoop主节点意外关机重启后hadoop不能启动.Hadoopnamenode由于某些原因关机重启,重新启动后hadoop服务不能正常启动.每次开机都得重新格式化一下nameno…

Hadoop搭建总结

Hadoop之集群搭建总结Summershyn夏超俊这是个人在参照网上一下文章自己尝试搭建并碰到一些困难和问题最后终于成功之后的总结希望可以对你有点帮助有三台机子1921681101master19216811...

hadoop学习心得

1FileInputFormatsplitsonlylargefilesHerelargemeanslargerthananHDFSblockThesplitsizeisnormallythesizeofanH...

hadoop部署总结

采用双namenode节点多datanode节点配置在新版本HDFS的配置中所有节点的配置文件都是统一的除ssh部分不用单独配置NameNode和DataNode假设我们有三台服务器主机名分别为fenbu01f...

学习pdca的心得体会

学习PDCA后的心得体会昨天很荣幸地在李总的带领下学习了PDCA管理方法现将本人对PDCA的认识和学习后的一些心得体会汇报如下PDCA又叫戴明环它将一个解决问题需要的四个阶段即计划实施检查处理完美有序地揉和在一...

pdca计划

计划Plan实施Do检查Check处理ActionISO9000认证的核心是持续改进以下是我在网上找的和我学的一样供参考PDCA循环也称戴明环是由美国著名质量管理专家戴明WEDeming首先提出的这个循环主要包...

pdca模式

PDCA管理模式计划Plan实施Do检查Check处理ActionISO9000认证的核心是持续改进以下是我在网上找的和我学的一样供参考PDCA循环也称戴明环是由美国著名质量管理专家戴明WEDeming首先提出...

hadoop总结(19篇)