Apache HAWQ LIBYARN模块简介 [作者:林文]

原创 2015年11月20日 16:50:33

Apache Hadoop YARN (Yet Another Resource Negotiator)是Hadoop系统的资源管理器,为各类应用程序进行资源的管理和调度。Apache HAWQ通过libyarn模块,把自己作为一个Hadoop应用,注册到YARN的Resource Manager,这样就可以与Map Reduce、Spark等其他应用一起被纳入YARN的资源管理中,由YARN统一对资源进行管理和调度。本文将简单介绍HAWQ libyarn模块的基本原理和功能。


YARN的基本设计思想是将MapReduceV1中JobTracker的两个主要功能——资源管理和作业调度拆分成两个独立的服务:一个全局的资源管理器Resource Manager和多个针对Hadoop应用的Application Master。ResourceManager负责整个Hadoop系统中所有应用的资源管理和分配,每个应用对应一个Application Master实例,负责相应的调度和协调。每个节点上有一个Node Manager实例,监控应用程序的资源使用情况,并且向Resource Manager汇报,以及负责处理来自Application Master启动或停止container的请求。容器container是YARN对资源的一种抽象,可以看做资源分配的单位。



HAWQ的资源管理有NONE和YARN两种模式,可以在hawq-site.xml中进行配置:



当HAWQ运行在NONE模式下,HAWQ会独占集群的资源,对各节点的资源进行调度和分配;当运行在YARN模式下,HAWQ会把自己当做Hadoop应用,与YARN的Resource Manager协调申请、释放资源。HAWQ的libyarn模块,从本质上讲,是类似hadoop-yarn Java版的C++实现。HAWQ通过使用libyarn所提供的接口,创建一个Unmanaged Application Master实例,与YARN的全局Resource Manager以及各个节点的Node Manager进行交互,从而实现应用程序的注册、资源的申请与释放等各项功能。


接下来讲一下HAWQ是怎样通过Libyarn接口,完成注册、申请/释放资源。Libyarn接口定义可以参考HAWQ代码中LibYarnClient.h文件(/depends/libyarn/src/libyarnclient/LibYarnClient.h)

  1. 应用启动后,首先需要通过调用createJob函数向Resource Manager注册自己,只有注册成功后,才有资格向RM申请资源。

  2. 如果createJob调用成功,一个独立的心跳线程会被创建并且定时向Resource Manager发送心跳RPC汇报自己状态。

  3. 应用申请资源时,调用addContainerRequests函数指明所需container的个数以及优先级等信息,然后调用allocateResources函数向Resource Manager申请资源。

  4. 应用申请资源成功后,调用activeResources函数向资源所在的各个节点NodeManager发送active container的请求。

  5. 在应用运行过程中,可以调用getContainerStatuses函数向NodeManager获取该节点上的container的状态信息;或者调用getContainerReports函数向ResourceManager获取container报告。

  6. 资源使用完毕,应用的Application Master需要调用releaseResources释放资源。

  7. 当应用运行结束,调用finishJob函数向RM注销自己。


目前libyarn模块已经支持Kerberos安全协议和HA,用户可以根据应用的需求在yarn-client.xml文件中配置,具体配置请参考HAWQ用户手册。

Hadoop YARN的HA功能是利用ZooKeeper,配置一个Standby Resource Manager,如果配置自动Failover功能,当Acitve Resource Manager发生故障停止运行时,Standby Resource Manager会自动切换成Active。在HAWQ中,Application Master调用libyarn接口发现经过若干次(次数可以在yarn-client.xml配置)尝试连接不到ActiveRM时,会自动尝试连接StandbyRM,直到成功。

相关文章推荐

Apache HAWQ 基于 YARN 的弹性资源管理 [作者:金毅]

[作者:金毅] 本文概要介绍 Apache HAWQ 通过 YARN 申请和归还资源的行为。其弹性资源管理功能使得 Apache HAWQ 能够与其它Hadoop应用高效共存,从而达到充分利用...

Yarn模式下Apache HAWQ的运行 [作者:白洁]

Apache HAWQ支持两种类型的资源管理模式,Standalone模式和Yarn模式。当Apache HAWQ集群在Standalone模式下运行时,会独占整个集群的资源而不去考虑其他共存的应用程...

Apache Hawq Data Locality简介 (1) [作者:张桓]

[作者:张桓] Apache Hawq作为一款重量级的开源sql-on-hadoop产品,在性能方面做了很多优化工作。其中针对datalocality设计了单独的模块,使得查询中本地磁盘IO...

解密Apache HAWQ ——功能强大的SQL-on-Hadoop引擎 [作者:常雷]

作者:常雷 博士,Pivotal中国研发中心研发总监,HAWQ并行Hadoop SQL引擎创始人,Pivotal HAWQ团队负责人,曾任EMC高级研究员。专注于大数据与云计算领域,在国内外顶级数据管...

Apache HAWQ的资源管理之资源管控 [作者:霍瑞龙]

Apache HAWQ中内存和CPU资源的管控

Apache Kafka源码分析-模块简介

Apache Kafka源码分析-模块简介 1        概述 一个开源分布式发布订阅消息系统,基于对磁盘文件的顺序存取实现在廉价硬件基础上提供高吞吐量、易扩展、随机消费等特点已被广泛使用。 ...

Apache HAWQ集群的安装部署

最近Pivotal公司发布了Apache HAWQ的企业版HDB 2.0,因功能强大,性能出色,很多人已经迫不及待想要安装来玩玩了。今天我们就来聊聊怎么部署强大的HAWQ 2.0吧。   ...

林文信流行键盘教程(1)

  • 2014年08月09日 23:44
  • 692KB
  • 下载

林文信电子琴教材

  • 2013年08月13日 01:38
  • 43.57MB
  • 下载

Apache kafka 工作原理介绍(作者原创文章已发表在IBM开发者论坛)

本文首先介绍了 Apache Kafka 的基本原理及专业术语,然后通过一个在线网络游戏的例子进一步解释 Kafka 的功能,最后通过具体案例介绍 Kafka 与 Flume 的差异。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Apache HAWQ LIBYARN模块简介 [作者:林文]
举报原因:
原因补充:

(最多只允许输入30个字)