中国第一个在线Hadoop教育平台—小象学院,推荐给Hadoop初学者和实践者,网址是:http://www.chinahadoop.cn/
本博客微信公共账号:hadoop123(微信号为:hadoop-123),分享hadoop技术内幕,hadoop最新技术进展,发布hadoop相关职位和求职信息,hadoop技术交流聚会、讲座以及会议等。二维码如下:
1. 什么是Hadoop资源感知调度器?
Hadoop资源感知调度器是指调度器根据各个TaskTracker当前资源负载情况(cpu,内存,网络io等)动态决定将新任务调度给哪个节点处理。
2. Hadoop资源感知调度器的必要性和重要性
当前绝大多数Hadoop调度器是按照slot多少进行调度。在Hadoop中,存在两种slot:map slot和reduce slot,每个节点可以根据自己实际的CPU个数配置slot个数,一次配好后,启动Hadoop便不可修改。 一旦某个节点上出现空闲的slot,调度器便会分配一个task给该节点。Slot类似于令牌,map task需要拿到一个map slot才可运行,类似,reduce task需要拿到一个reduce slot才可运行,如果当前所有slot都被task占用了,则剩下的task需要排队。
了解当前调度器的基本原理后,便会发现当前调度器存在很大缺陷。调度器的基本作用是:为需要计算机资源的任务分配资源,使他们能够顺利完成计算任务。这里的计算机资源包括cpu,内存,网络,磁盘等,而当前所有调度器几乎只考虑了cpu资源,这就导致TaskTracker经常出现OOM或者网络阻塞等现象,严重时,可能会把机器搞挂!
3. 如何设计资源感知调度器?
Hadoop调度器模型实际上是一个典型的任务指派模型,即:资源量是M,任务数是N,如果将这M个资源分配给这N个任务,使他们尽可能利用所有资源,尽快完成任务。
为了实现该模型,一个Hadoop资源感知调度器需要包括四个模块:
(1) 信息采集模块
各个TaskTracker周期性的采集本节点上的资源信息,这些信息主要由两部分组成:机器总体资源和每个task资源使信息,这里的资源信息包括cpu使用情况,内存使用情况,网络和磁盘情况等。为了减少获取资源的代价,可以从linux 虚拟文件系统/proc目录下获取;
(2) 信息传输模块
TaskTracker采集的资源信息通过heartbeat发送给JobTracker,默认情况下,heartbeat发送周期是3s。完了完成该模块,需要稍微修改一下Hearbeat包;
(3) 信息聚集模块
JobTracker收集到信息后,会进行聚集,如:以job为单位做统计等;
(4) 作业调度模块
调度器从JobTracker上获取各个节点资源使用情况,并以此制定调度策略。
4. 资源感知调度器难度在哪?
Hadoop感知调度器最大难度在于调度,这实际上一个多目标决策问题,理论上没有最优解,一般需要设计启发式算法。
5. 资源感知调度器方面的资料
(1)https://issues.apache.org/jira/browse/MAPREDUCE-220
(2)论文:Towards a Resource Aware Scheduler in Hadoop ,http://www-personal.umich.edu/~shiwali/images/hadoop.pdf
(3)Multiple-Job Optimization in MapReduce for Heterogeneous Workloads
Weisong Hu; Chao Tian; Xiaowei Liu; Hongwei Qi; Li Zha; Huaming Liao; Yuezhuo Zhang; Jie Zhang;
Semantics Knowledge and Grid (SKG), 2010 Sixth International Conference on
6. 说明
Hadoop自带的Capacity Scheduler能够调度大内存任务,原理是:默认情况下每个slot对应一个内存量,当用户提交作业时,需配置一个task需要的内存量,然后两个值相除取丄整便得到了一个task对应的slot数。如:你提交了一个作业,告诉调度器一个task要使用4GB内存,而默认情况下一个slot对应2GB内存,则没运行一个你的task,会使用2个slot。
原创文章,转载请注明: 转载自董的博客
本文链接地址: http://dongxicheng.org/mapreduce/hadoop-resource-aware-scheduler/
作者:Dong,作者介绍:http://dongxicheng.org/about/
本博客的文章集合:http://dongxicheng.org/recommend/
相关推荐
通过研究蚁群算法,针对现有Hadoop调度器的不足,提出一个基于蚁群算法的Hadoop资源感知调度器及其具体实现方案。从而使Hadoop作业调度器可以更有效地对任务进行分配,提高整体架构的作业性能。通过实验证明,利用蚁...
这通常涉及到节点的负载均衡、资源感知和动态调整等策略。 未来的研究方向可能包括:优化调度算法以适应更复杂的作业类型和工作负载;考虑作业的依赖关系,实现更高效的并行执行;引入机器学习技术预测作业的行为和...
Hadoop集群的搭建和管理是一项复杂的工作,它需要考虑硬件资源、网络配置、数据安全和监控等多个方面。通过理解Hadoop集群的基本原理,可以更好地部署和优化Hadoop环境,实现对大数据的高效处理和分析。
- **Hadoop 2.0**:引入了YARN作为资源管理和调度平台,提高了系统的灵活性和性能。 - **MRv2 (MapReduce Version 2)**:YARN上的MapReduce实现了资源管理和作业调度分离,提供了更好的资源利用率和任务隔离性。 ##...
- **知识点说明**:Hadoop的默认调度器策略确实是FIFO(First-In-First-Out),这意味着提交的任务按照先进先出的原则进行调度执行。 15. **集群内每个节点都应该配RAID,这样避免单磁盘损坏,影响整个节点运行** -...
ResourceManager负责全局资源调度,ApplicationMaster则负责单个应用的资源申请和任务调度。 九、YARN架构 YARN包含ResourceManager、NodeManager、ApplicationMaster和Container等组件,共同协作以高效利用集群...
`hadoop-aware-nova-scheduler` 是一个增强版的 OpenStack Nova 调度器插件,它的目标是优化虚拟 Hadoop 部署的资源分配。传统的 Nova 调度器可能不会考虑 Hadoop 的特定需求,例如数据本地性、节点间通信延迟以及...
- `yarn-site.xml`:YARN(Yet Another Resource Negotiator)是Hadoop 2.x中引入的新资源管理器,其配置项主要集中在该文件中。 2. **Site Configuration**: - **NameNode配置**:NameNode是HDFS的主节点,负责...
- **JobTracker/TaskTracker**:在旧版Hadoop中,JobTracker是作业调度和资源管理的中心,而TaskTracker是在各个节点上执行任务的组件。JobTracker对应NameNode,TaskTracker对应DataNode,但这种模式在Hadoop 2.x...
在Hadoop的维护和问题处理上,提到了对槽位利用率的监控、作业提交数的统计、死节点的自动重启、权限管理和资源分组、NameNode的镜像备份以及机架感知。这些都是保证Hadoop集群高效稳定运行的重要措施。例如,通过...
这种方法的核心是策略感知层,它负责根据当前集群状态和作业特征动态调整参数配置,以期达到最优的资源分配和作业调度。 #### 四、策略感知层的工作原理 策略感知层是自动调优机制的关键组件,其工作流程可概括为...
5. **网络拓扑优化**:Hadoop支持网络拓扑感知,能根据节点的实际网络距离进行任务调度,减少跨网络的数据传输,提高性能。 6. **带宽管理**:Hadoop还包含了带宽资源的管理和分配策略,例如,通过Fair Scheduler或...
- Hadoop的默认作业调度器是FIFO(先进先出),但可以通过配置使用更复杂的调度策略,如Capacity Scheduler或Fair Scheduler。 这些知识点只是Hadoop面试题中的一部分,涵盖了Hadoop的基本概念、组件职责、配置...
2. **任务调度策略**:Hera采用智能的调度算法,如优先级调度、依赖关系解析和资源感知调度等,以优化任务执行的顺序和效率。它考虑了任务之间的依赖关系,确保数据处理流程的正确性,并尽可能减少等待时间。 3. **...
4. **Hadoop生态**:涵盖了Hadoop生态系统中的其他重要组件,如HBase(分布式数据库)、Hive(数据仓库工具)、Pig(数据流处理)、Oozie(工作流调度器)和ZooKeeper(分布式协调服务)等。 5. **YARN(Yet ...