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,直到成功。

HAWQ技术解析(一) —— HAWQ简介

一、SQL on Hadoop        过去五年里,许多企业已慢慢开始接受Hadoop生态系统,将它用作其大数据分析堆栈的核心组件。尽管Hadoop生态系统的MapReduce组件是一个强大的典...
  • wzy0623
  • wzy0623
  • 2017年02月13日 13:55
  • 8911

HAWQ取代传统数仓实践(一)——为什么选择HAWQ

为了跟上所谓“大数据”技术的脚步,从两年前开始着手实践各种SQL-on-Hadoop技术,从最初的Hive,到SparkSQL,再到Impala,进行了一系列ETL、CDC、多维数据仓库、OLAP的实...
  • wzy0623
  • wzy0623
  • 2017年05月10日 16:24
  • 8415

那些年,我开发过的软件

本文从自己入门开发的软件说起,主要阐述了自己入门程序界的过程以及一些经历,文末也提出了自己学习的一些心得和方法。...
  • Evankaka
  • Evankaka
  • 2015年09月14日 08:48
  • 8957

HAWQ技术解析(十四) —— 高可用性

一、HAWQ高可用简介        HAWQ作为一个传统数仓在Hadoop上的替代品,其高可用性至关重要。通常硬件容错、HAWQ HA、HDFS HA是保持系统高可用时需要考虑并实施的三个层次。另外...
  • wzy0623
  • wzy0623
  • 2017年04月24日 17:52
  • 2904

【开源访谈】ECharts 作者 林峰 访谈实录

http://www.oschina.net/question/947559_144622 关于开源访谈 开源访谈是开源中国推出的一系列针对国内优秀开源软件作者的访谈,...
  • duhaomin
  • duhaomin
  • 2014年06月03日 17:20
  • 1046

Apache HAWQ集群的安装部署

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

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

Apache HAWQ支持两种类型的资源管理模式,Standalone模式和Yarn模式。当Apache HAWQ集群在Standalone模式下运行时,会独占整个集群的资源而不去考虑其他共存的应用程...
  • bigdatacommunity
  • bigdatacommunity
  • 2015年11月27日 17:51
  • 2100

Apache服务器介绍

Apache概述: (1)Apache是目前世界上使用最广泛的一种web server,它以跨平台,高效和稳定而闻名。 (2)Apache缺点是变得越来越重,被普遍认为是重量级的web ser...
  • u013372487
  • u013372487
  • 2015年04月18日 14:42
  • 1789

Apache mina,Netty的起源和历史

总结:Apache mina 和Netty作者作为韩国一流学府计算机科学的本科毕业生,从毕业就开始开发Java网络框架。JDK1.4在2003年开始出现Java NIO. 从起先的Netty 到 Ap...
  • sunning9001
  • sunning9001
  • 2015年11月23日 22:32
  • 3709

HAWQ学习笔记 --- 操作命令大全

HAWQ学习笔记 --- 操作命令大全
  • u012965373
  • u012965373
  • 2017年05月31日 18:48
  • 624
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Apache HAWQ LIBYARN模块简介 [作者:林文]
举报原因:
原因补充:

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