最近發現了一個做事很認真的做算法同事,身上很多優點值得我學習,推薦使用了一種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/ \
--launch-cmd "/opt/anaconda3/bin/python demo.py --data_path=./data --save_path=./model --log_dir=./eventLog --training_epochs=10" \