Hadoop 文档

General

Common

HDFS

MapReduce

MapReduce REST APIs

YARN

YARN REST APIs

YARN Service

Submarine

Hadoop Compatible File Systems

Auth

Tools

Reference

Configuration

先决条件

必须:

  • Apache Hadoop 3.1.x,启用了YARN服务。

可选的:

  • 启用YARN DNS。(需要进行分布式培训时。)
  • 在YARN上启用GPU支持。(当需要基于GPU的培训时。)

运行工作

命令行选项

用法:作业运行
 -checkpoint_path <arg>作业的培训输出目录,可以
                              是本地或其他FS目录。这个
                              通常包括检查点文件和
                              导出模型
 -docker_image <arg> Docker映像名称/标签
 -env <arg> worker / ps的公共环境变量
 -input_path <arg>作业的输入,可以是本地或其他FS
                              目录
 -name <arg>作业名称
 -num_ps <arg>作业的PS任务数,默认情况下
                              是0
 -num_workers <arg>作业的工作者任务数量,由
                              默认是1
 -ps_docker_image <arg>为PS指定docker映像
                              未指定,PS使用--docker_image作为
                              默认。
 -ps_launch_cmd <arg>工作程序的命令行,参数为
                              直接用于启动PS
 -ps_resources <arg>每个PS的资源,例如
                              内存-mb = 2048,vcores = 2,yarn.io / gpu = 2
 -queue <arg>要运行作业的队列的名称,默认情况下是
                              使用默认队列
 -saved_model_path <arg>作业的模型导出路径(savedmodel),
                              不需要导出模型时需要
                              放在$ {checkpoint_path}下的可能是
                              本地或其他FS目录。这将是
                              曾经服役。
 -tensorboard <arg>我们是否应该为此任务运行TensorBoard?通过
                              默认是真的
 -verbose打印详细日志以进行故障排除
 -wait_job_finish在用户想要等待作业时指定
                              完
 -worker_docker_image <arg>为WORKER指定docker映像,当此
                              未指定,WORKER使用--docker_image
                              默认情况下。
 -worker_launch_cmd <arg>工作者的命令行,参数为
                              直接用来发动工人
 -worker_resources <arg>每个工作程序的资源,例如
                              内存-mb = 2048,vcores = 2,yarn.io / gpu = 2
 -localization <arg>指定本地化为远程/本地
                              所有容器可用的文件/目录(Docker)。
                              参数格式为“ RemoteUri:LocalFilePath [:rw]”
                              (尚不支持ro权限)。
                              RemoteUri可以是本地文件或目录
                              或HDFS或s3或abfs或http .etc。
                              LocalFilePath可以是绝对的或相对的。
                              如果是相对的,它将在容器的隐含条件下
                              工作目录。
                              此选项可以设置多次。
                              例子是
                              -localization“ hdfs:/// user / yarn / mydir2:/ opt / data”
                              -localization“ s3a:/// a / b / myfile1:./”
                              -localization“ https:/// a / b / myfile2:./myfile”
                              -localization“ /用户/纱线/ mydir3:/ opt / mydir3”
                              -localization“ ./mydir1 :.”。

笔记:

使用本地化选项使容器中的条目python脚本可使用依赖关系Python脚本的集合时,可能还需要如下设置PYTHONPATH环境变量,以避免从entry_script.py报告模块导入错误。

...工作
  #入口点
  --localization entry_script.py:<路径> /entry_script.py
  #入口点的依赖Python脚本
  --localization other_scripts_dir:<路径> / other_scripts_dir
  #PYTHONPATH env使依赖项可用于输入脚本
  --env PYTHONPATH =“ <路径> / other_scripts_dir”
  --worker_launch_cmd“ python <路径> /entry_script.py ...”

潜艇配置

对于潜水艇内部配置,请创建一个submarine.xml,它应该放在$ HADOOP_CONF_DIR下

配置名称 描述
submarine.runtime.class 可选的。运行时工厂的完整合格类名。
submarine.localization.max允许的文件大小MB 可选的。这将对要在“ -localization” CLI选项中本地化的文件/目录设置大小限制。默认为2GB。

启动独立的Tensorflow应用程序:

命令行

纱罐路径到/hadoop-yarn-applications-submarine-3.2.0-SNAPSHOT.jar作业运行\
  --env DOCKER_JAVA_HOME = / usr / lib / jvm / java-8-openjdk-amd64 / jre / \
  --env DOCKER_HADOOP_HDFS_HOME = / hadoop-3.1.0 --name tf-job-001 \
  --docker_image <您的docker-image> \
  --input_path hdfs:// default / dataset / cifar-10-data \
  --checkpoint_path hdfs:// default / tmp / cifar-10-jobdir \
  --worker_resources内存= 4G,vcores = 2,gpu = 2 \
  --worker_launch_cmd“ python ...(您的培训应用程序cmd)”
  --tensorboard#这将启动一个伴侣的tensorboard容器进行监视

笔记:

1)DOCKER_JAVA_HOME指向Docker映像中的JAVA_HOME。

2)DOCKER_HADOOP_HDFS_HOME指向Docker映像中的HADOOP_HDFS_HOME。

3)-- worker_resources在需要GPU训练任务时可以包含gpu。

4)指定--tensorboard后,您可以转到YARN新UI,转到服务-> <您指定的服务> ->单击...以访问Tensorboard。

这将启动一个Tensorboard来监视您的所有工作。通过访问YARN UI(新UI)。您可以转到服务页面,转到tensorboard-service,单击快速链接(Tensorboard)可以将您引导至tensorboard。

见下面的截图:

替代文字

启动分布式Tensorflow应用程序:

命令行

纱罐hadoop-yarn-applications-submarine- <version> .jar作业运行\
 --name tf-job-001 --docker_image <您的docker映像> \
 --input_path hdfs:// default / dataset / cifar-10-data \
 --checkpoint_path hdfs:// default / tmp / cifar-10-jobdir \
 --env DOCKER_JAVA_HOME = / usr / lib / jvm / java-8-openjdk-amd64 / jre / \
 --env DOCKER_HADOOP_HDFS_HOME = / hadoop-3.1.0 \
 --num_workers 2 \
 --worker_resources内存= 8G,vcores = 2,gpu = 1 --worker_launch_cmd“工人的cmd ...” \
 --num_ps 2 \
 --ps_resources memory = 4G,vcores = 2,gpu = 0 --ps_launch_cmd“ cmd for ps” \

笔记:

1)与独立TF应用程序非常相似,但您需要指定#worker /#ps

2)可以为worker和PS指定不同的资源。

3)在执行用户的启动命令之前,将自动生成并设置TF_CONFIG环境。

获取工作历史/日志

从CLI获取作业状态

纱罐hadoop-yarn-applications-submarine-3.2.0-SNAPSHOT.jar作业显示--name tf-job-001

输出如下:

职位元信息:
	申请编号:application_1532131617202_0005
	输入路径:hdfs:// default / dataset / cifar-10-data
	检查点路径:hdfs:// default / tmp / cifar-10-jobdir
	运行参数:--name tf-job-001 --docker_image wtan / tf-1.8.0-gpu:0.0.3
	                (...运行作业之前的所有命令行)

之后,您可以运行tensorboard --logdir = <checkpoint-path>来查看作业的Tensorboard。

运行tensorboard监视您的工作

#必要时清理先前的服务
纱线应用程序-破坏张量板服务; \
纱罐/tmp/hadoop-yarn-applications-submarine-3.2.0-SNAPSHOT.jar \
  作业运行--name tensorboard-service --verbose --docker_image wtan / tf-1.8.0-cpu:0.0.3 \
  --env DOCKER_JAVA_HOME = / usr / lib / jvm / java-8-openjdk-amd64 / jre / \
  --env DOCKER_HADOOP_HDFS_HOME = / hadoop-3.1.0 \
  --num_workers 0-张量板

您可以通过Tensorboard链接查看多个职业培训历史记录:

替代文字

从培训工作中获取组件日志

有两种获取培训作业日志的方法,一种是从YARN UI(新的或旧的)中获取的:

替代文字

或者您可以使用yarn logs -applicationId <applicationId>从CLI获取日志