最近发现了一个做事很认真的做算法同事,身上很多优点值得我学习,推荐使用了一种360的开源工具,可以将tensoeflow提交至yarn里面。这个工具感觉解决了很多问题。我这个人比较懒,大部分工作都是我那个同事研究成功的,然后我坐享其成,等着验证结果。特此在这里将他的成果记录下来:
参考网址:
https://github.com/Qihoo360/XLearning/blob/master/README_CN.md
第一步:找一台可以联网的机器,准备好编译环境
注意:此处编译所准备的环境,jdk版本,hadoop版本,需要和正式环境的版本相匹配
修改下载的XLearning文件解压之后XLearning-master文件夹中的pom.xml
<repositories>
<repository>
<id>cloudera-releases</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<properties>
<hadoop2.version>2.6.0-cdh5.5.4</hadoop2.version>
<junit.version>4.11</junit.version>
<jdk.version>1.7</jdk.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<xlearning.jar.basename>xlearning-${project.version}-hadoop${hadoop2.version}</xlearning.jar.basename>
<xlearning.jar>${xlearning.jar.basename}.jar</xlearning.jar>
</properties>
因为编译的是cdh版本的,所以要添加cdh的releases,同时修改hadoop版本,指定jdk版本,同时确定本地环境的jdk与指定的相同,也与正式环境的相同。
然后在源码根目录下执行
mvn package
完成编译后,在源码根目录下的target目录中会生成发布包xlearning-1.0-dist.tar.gz
第二步:
将这个tar在你要运行程序的客户端解压,
指定环境变量
export XLEARNING_HOME=/home/test/xlearning
export JAVA_HOME=/home/test/jdk
export HADOOP_CONF_DIR=/home/test/hadoop/etc/hadoop
假如需要启动history服务
修改xlearning-site.xml里面参数
修改0.0.0.0 为启动地址
例如:
<property>
<name>xlearning.history.webapp.https.address</name>
<value>192.168.3.56:19885</value>
</property>
然后在hdfs 集群上创建
<property>
<name>xlearning.tf.board.history.dir</name>
<value>/tmp/XLearning/eventLog</value>
</property>
<property>
<name>xlearning.history.log.dir</name>
<value>/tmp/XLearning/history</value>
</property>
<property>
<name>xlearning.staging.dir</name>
<value>/tmp/XLearning/staging</value>
</property>
以下指定目录
之后修改xlearning-env.sh文件
在里面取消一下部分注释,并补充
export JAVA_HOME=/home/test/jdk
export HADOOP_CONF_DIR=/home/test/hadoop/etc/hadoop
同时修改(注:不需要修改整体集群,只需要修改当前节点配置即可)
yarn-site.xml
<property>
<name>yarn.application.classpath</name>
<value>$HADOOP_CLIENT_CONF_DIR,$HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,$HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*,$HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*</value>
</property>
然后启动服务
sbin/start-history-server.sh
第三步:
测试:
可以通过自带的例子包测试:
例子测试包在:
xlearning/examples/tensorflow/run.sh
记得提交时修改下--queue default 这个指定队列的信息
如果在运行的时候碰到xlearning.tf.board.enable相关问题,检查下本地包是否没有安装相关包,可以通过设置 xlearning.tf.board.enable=false解决,也可以通过指定你安装相关包之后的python环境解决:
解决方式在运行的时候加上
--user-path /opt/anaconda3/bin/ \