在 Yarn 上使用 FPGA

前提

  • YARN 目前只支持通过 IntelFpgaOpenclPlugin 发布的 FPGA 资源
  • YARN NodeManager 所在的机器上必须预先安装供应商的驱动程序并配置好必需的环境变量。
  • Docker 容器尚不支持。

配置

FPGA 调度

在 resource-types.xml添加如下配置

<configuration>
<property>
<name>yarn.resource-types</name>
<value>yarn.io/fpga</value>
</property>
</configuration>

在 yarn-site.xml 中DominantResourceCalculator 必须被配置以启用 FPGA 调度和隔离。 在 capacity-scheduler.xml 中使用如下参数以配置 DominantResourceCalculator

参数 默认值
yarn.scheduler.capacity.resource-calculator org.apache.hadoop.yarn.util.resource.DominantResourceCalculator

FPGA 隔离

yarn-site.xml

<property>
<name>yarn.nodemanager.resource-plugins</name>
<value>yarn-io/fpga</value>
</property>

这将在 NodeManager 上启用 FPGA 隔离模块。

如果配置了上述参数,YARN 会自动检测和配置 FPGA。如果管理员由特殊的需求,以下参数需要在 yarn-site.xml 中配置。

1) 运行的 FPGA 设备

参数 默认值
yarn.nodemanager.resource-plugins.fpga.allowed-fpga-devices auto

指明由 Yarn NodeManager 管理的 FPGA 设备,用逗号分隔。GPU 卡的数量将被汇报给 ResourceManager用于调度。默认值 auto 代表让 YARN 从系统中自动发现 GPU 卡。

如果管理员只希望一部分的 FPGA 设备被 Yarn 管理,请人为地指明可用的 FPGA 设备。因为当前只能配置为 c-e.cfg 中的一个主设备号,FPGA 设备由其次设备号标识。对于 Intel 设备,可以通过执行命令 aocl diagnose 并用解析设备名称对应的 uevent 来获取次设备号。

2) 发现 FPGA 设备的可执行程序

参数 默认值
yarn.nodemanager.resource-plugins.fpga.path-to-discovery-executables  

当给定了 yarn.nodemanager.resource.fpga.allowed-fpga-devices=auto,YARN NodeManager 将执行 FPGA 发现的可执行程序(目前只支持 IntelFpgaOpenclPlugin)来收集 FPGA 信息。如果值为空(默认值),YARN NodeManager 将根据供应商的插件选项自行寻找。举例来说,IntelFpgaOpenclPlugin 会从环境 ALTERAOCLSDKROOT 的目录中查找 aocl 信息。

3) 使用的 FPGA 插件

参数 默认值
yarn.nodemanager.resource-plugins.fpga.vendor-plugin.class org.apache.hadoop.yarn.server.nodemanager.containermanager.resourceplugin.fpga.IntelFpgaOpenclPlugin

当前,只支持 Intel OpenCL SDK for FPGA。FPGA 上运行的 IP 程序(.aocx 文件)必须基于 Intel 平台的 OpenCL 提供。

4) CGroups 挂载

FPGA 隔离使用 CGroup 设备控制器 来实现 FPGA 设备之间的隔离。为了自动挂载次设备到 CGroups,以下配置要添加到 yarn-site.xml 文件中。否则,管理员必须人为地创建设备子目录以使用该功能。

参数 默认值
yarn.nodemanager.linux-container-executor.cgroups.mount true

想知道 Yarn 使用 CGroup 的更多信息,请参阅使用 CGroups

container-executor.cfg

通常需要添加如下配置到 container-executor.cfg 中。fpag.major-device-number 和 allowed-device-minor-numbers 是可选参数,指明允许的 FPGA 设备。

[fpga]
module.enabled=true
fpga.major-device-number=## FPGA 的主设备号,默认是 246。强烈建议设置该参数。
fpga.allowed-device-minor-numbers=## 逗号分隔的次设备号,空值代表由 Yarn 管理所有的 FPGA 设备。

如果用户要在非 Docker 环境下运行 FPGA 程序:

[cgroups]
# 系统 Cgroup 的根目录(不能为空或“/”)
root=/cgroup
# YARN CGroup 的父目录
yarn-hierarchy=yarn

使用

Distributed-shell + FPGA

分布式 Shell 程序在内存和虚拟核之外,还支持申请更多的资源类型。

不使用 Docker 运行分布式 Shell 程序(.bashrc 配置了 SDK 相关的环境变量):

yarn jar <path/to/hadoop-yarn-applications-distributedshell.jar> \
-jar <path/to/hadoop-yarn-applications-distributedshell.jar> \
-shell_command "source /home/yarn/.bashrc && aocl diagnose" \
-container_resources memory-mb=2048,vcores=2,yarn.io/fpga=1 \
-num_containers 1

对于已经启动的任务,你将从日志中看到如下的输出:

aocl diagnose: Running diagnose from /home/fpga/intelFPGA_pro/17.0/hld/board/nalla_pcie/linux64/libexec

------------------------- acl0 -------------------------
Vendor: Nallatech ltd Phys Dev Name Status Information aclnalla_pcie0Passed nalla_pcie (aclnalla_pcie0)
PCIe dev_id = 2494, bus:slot.func = 02:00.00, Gen3 x8
FPGA temperature = 54.4 degrees C.
Total Card Power Usage = 32.4 Watts.
Device Power Usage = 0.0 Watts. DIAGNOSTIC_PASSED
---------------------------------------------------------

在启动容器前指定 Yarn 需要配置的 IP

对于 FPGA 资源,容器可以通过环境变量 REQUESTED_FPGA_IP_ID 来让 YARN 下载并分配一个 IP 给它。举例来说,REQUESTED_FPGA_IP_ID=“matrix_mul” 会触发在容器本地目录中查找名称包含 matirx_mul 字样的 IP 文件(.aocx 文件),程序必须首先将该文件分发到各个容器。当前只支持为所有设备分配一个 IP。如果用户不设置该环境变量,则表示用户程序将自行查找 IP 文件。需要注意的是,提前 下载 IP 并重新编程在 Yarn 中并不是必需的,因为 OpenCL 程序可以在运行时查找 IP 文件并重新编程设备。但 Yarn 为容器完成这一步骤,以实现最快的重新编程。

Hadoop 3.1.1 - Yarn - 使用 FPGA的更多相关文章

  1. Hadoop 新 MapReduce 框架 Yarn 详解

    Hadoop 新 MapReduce 框架 Yarn 详解: http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/ Ap ...

  2. Hadoop 新 MapReduce 框架 Yarn 详解【转】

    [转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/] 简介: 本文介绍了 Hadoop 自 0.23.0 版本 ...

  3. 更快、更强——解析Hadoop新一代MapReduce框架Yarn(CSDN)

    摘要:本文介绍了Hadoop 自0.23.0版本后新的MapReduce框架(Yarn)原理.优势.运作机制和配置方法等:着重介绍新的Yarn框架相对于原框架的差异及改进. 编者按:对于业界的大数据存 ...

  4. hadoop多机安装YARN

    hadoop伪分布安装称为测试环境安装,多机分布称为生成环境安装.以下安装没有进行HA(热备)和Federation(联邦).除非是性能需要,否则没必要安装Federation,HA可以一试,涉及到Z ...

  5. 基于Hadoop分布式集群YARN模式下的TensorFlowOnSpark平台搭建

    1. 介绍 在过去几年中,神经网络已经有了很壮观的进展,现在他们几乎已经是图像识别和自动翻译领域中最强者[1].为了从海量数据中获得洞察力,需要部署分布式深度学习.现有的DL框架通常需要为深度学习设置 ...

  6. 【原创】大数据基础之Hadoop(3)yarn数据收集与监控

    yarn常用rest api 1 metrics # curl http://localhost:8088/ws/v1/cluster/metrics The cluster metrics reso ...

  7. Hadoop生态集群YARN详解

    一,前言 Hadoop 2.0由三个子系统组成,分别是HDFS.YARN和MapReduce,其中,YARN是一个崭新的资源管理系统,而MapReduce则只是运行在YARN上的一个应用,如果把YAR ...

  8. Hadoop记录-MRv2(Yarn)运行机制

    1.MRv2结构—Yarn模式运行机制 Client---客户端提交任务 ResourceManager---资源管理 ---Scheduler调度器-资源分配Containers ----在Yarn ...

  9. Hadoop(七)YARN的资源调度

    一.YARN 概述 YARN 是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操 作系统平台,而 MapReduce 等运算程序则相当于运行于操作系统之上的应用程序 YARN ...

随机推荐

  1. Unity3D学习笔记1——绘制一个三角形

    目录 1. 绪论 2. 概述 3. 详论 3.1. 准备 3.2. 实现 3.3. 解析 3.3.1. 场景树对象 3.3.2. 绘制方法 4. 结果 1. 绪论 最近想学习一下Unity3d,无奈发 ...

  2. Docker(39)- docker 实战二之安装 Tomcat

    背景 参考了狂神老师的 Docker 教程,非常棒! https://www.bilibili.com/video/BV1og4y1q7M4?p=15 直接运行容器 本地找不到镜像会自动下载 --rm ...

  3. .net core mysql entity映射时字符串被截断

    参考地址:https://stackoverflow.com/questions/40833262/net-core-entity-framework-mysql-string-fields-stor ...

  4. python3 依赖倒置原则示例

    场景 针对园区停车信息,需要对各个公司提供的停车数据进行整合并录入自家公司的大数据平台 数据的录入无外乎就是对数据的增删改查 下面上一个常规的写法(未符合依赖倒置),整合来自 长安和丰田 的停车数据 ...

  5. nginx日志分析及其统计PV、UV、IP

    一.nginx日志结构 nginx中access.log 的日志结构: $remote_addr 客户端地址 211.28.65.253 $remote_user 客户端用户名称 -- $time_l ...

  6. 使用 K6 来给你的服务做一次负载和压力测试吧

    前言 负载测试,压力测试可以衡量服务是否是一个高可用,高性能的服务.负载测试能检验在不同的工作负荷下,服务的硬件消耗和响应,从而得到不同负载情况下的性能指标.压力测试能检验软硬件环境下服务所能承受的最 ...

  7. Kafka:Springboot整合Kafka消息队列

    本文主要分享下Spring Boot和Spring Kafka如何配置整合,实现发送和接收来自Spring Kafka的消息. 项目结构 pom依赖包 <?xml version="1 ...

  8. leetcode 1122

    思路分析: 主要思想:计数排序 先遍历arr1,然后计数,再遍历arr2时同时又排完序了,再继续把arr2不存在的数字,再遍历加到数组后面,也同时排完序了.方便快捷

  9. 使用xcode实现IM的那些坑

    想用xcode基于XMPP实现即时通讯,mac必须安装openfire(xmpp服务器),mysql(本地数据库,用于配置openfire),JDK(打开openfire必须本地具备java环境),x ...

  10. CSS从入门到喜欢,从喜欢到着魔

    如果把网页比作一个人的话,html就是他的骨架,而css是他的皮肤,javascript是神经控制着行动.html,css,javascript都是构建网页的核心技术. CSS简介 css指的是层叠样 ...