4 月 6 日,Apache Hadoop 正式发布了 3.1.0 版本,这是 2018 年 Hadoop 3.x 系列的第一个小版本,较之前的 Hadoop 3.0 有了一些重大改变。需要注意的是,这个版本还不适用于生产环境,如果需要在生产环境下使用的用户还需等待 3.1.1 或 3.1.2 版本发布。但 3.1.0 也有其重大意义,因为它终于支持 GPU 和 FPGA 了。
本文仅主要介绍hadoop3.x的一些重要改进及配置。
Hadoop 3.1.0 版本带来的重大变化简要介绍如下:
(1)Yarn Service 服务框架
Yarn Service 服务框架为在 YARN 上长期运行的服务提供支持,作为一个容器编配平台来管理运行在 YARN 上那些被容器化的服务,支持 Docker 容器和传统容器。
Yarn Service框架提供一流的支持和API,以在YARN中本地托管长期运行的服务。简而言之,它作为一个容器编排平台,用于管理YARN上的容器化服务。它支持YARN中的docker容器和传统的基于进程的容器。
该框架的职责包括执行配置解决方案和安装,生命周期管理(如停止/启动/删除服务),向上/向下弯曲服务组件,在YARN上滚动升级服务,监控服务的健康状况和准备情况等。
Yarn Service框架主要包括以下组件:
①在YARN上运行的核心框架(ApplicationMaster),用作容器协调器,负责所有服务生命周期管理。
②一个restful API服务器,供用户与YARN交互,通过简单的JSON规范部署/管理他们的服务。
③由YARN服务注册表支持的DNS服务器,用于通过标准DNS查找在YARN上发现服务。
YARN服务框架对比原有的YARN有什么优势?
YARN服务框架可以轻松地将现有服务引入YARN。它隐藏了应用程序管理的所有复杂的低级细节,并使用户免于被迫编写新代码。新服务的开发人员不必担心YARN内部,只需要关注其服务的容器化。
此外,此功能的另一个巨大成功是,现在可以在单个平台中启用传统的批处理作业和长时间运行的服务!结合这些工作负载的好处有两方面:
· 由于只有一个集群可以处理,因此大大简化了集群操作。
· 使批处理作业和服务共享群集可以极大地提高资源利用率。
(2)YARN 支持基于 GPU 的调度和隔离(Docker 和非 Docker 容器)
注意:
· 截至目前,YARN仅支持Nvidia GPU
· YARN节点管理器必须预先安装Nvidia驱动程序。
· 当Docker用作容器运行时,需要安装nvidia-docker 1.0(当前支持的版本在YARN中用于nvidia-docker)。
配置信息
GPU调度
在resource-types.xml中
添加以下属性
<configuration>
<property>
<name>yarn.resource-types</name>
<value>yarn.io/gpu</value>
</property>
</configuration>
在yarn-site.xml中DominantResourceCalculator必须配置为启用GPU调度/隔离。
对于Capacity Scheduler,使用以下属性配置DominantResourceCalculator(在capacity-scheduler.xml中):
Property:yarn.scheduler.capacity.resource-calculator
Default value:org.apache.hadoop.yarn.util.resource.DominantResourceCalculator
GPU隔离
在yarn-site.xml中
<property>
<name>yarn.nodemanager.resource-plugins</name>
<value>yarn.io/gpu</value>
</property>
这是在NodeManager端启用GPU隔离模块。
默认情况下,当设置了以上配置时,YARN将自动检测并配置GPU。当然你也可以通过配置文件设置一些自己想要的个性化设置,详情可以参照:Yarn的GPU隔离设置
在container-executor.cfg中
通常,需要将以下配置添加到container-executor.cfg
[gpu]
module.enabled=true
当用户需要在非Docker环境下运行GPU应用程序时:
[cgroups]
##这应该与yarn-site.xml中的yarn.nodemanager.linux-container-executor.cgroups