Tensorflowonspark standalone安装
1. 实验环境
Centos7 , jdk1.8.0_65 , hadoop2.7.4
Spark1.6.0 , tensorflow0.12.1 ,tensorflowonspark1.0.2
虚拟机地址:
192.168.1.84(master)
192.168.1.85(slave)
192.168.1.86(slave)
2. 搭建hadoop集群
hadoop完全分布式安装过程
搭建spark集群(standalone模式)
Master 机器:
下载spark-1.6.0-bin-hadoop2.6.tar,放在/opt/lqu/packages(这是我自己设置的目录)- 解压:
tar -xvf spark-1.6.0-bin-hadoop2.6.tar
- spark配置:
进入conf目录:
①cp spark-env.sh.template spark-env.sh
vim spark-env.sh
export JAVA_HOME=/opt/lqu/packages/jdk1.8.0_65
export SPARK_MASTER_IP=192.168.1.84
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/opt/lqu/packages/hadoop- 2.7.4/etc/hadoop
export HADOOP_HDFS_HOME=/opt/lqu/packages/hadoop-2.7.4/
SPARK_WORKER_CORES=1
[注]:SPARK_WORKER_MEMORY: Worker 节点能够分配给 Executors 的最大内存大小
SPARK_WORKER_CORES:电脑的核数(上面这两个参数通过命令行可以查)②
cp slaves.template slaves
- 解压:
vim slaves
192.168.1.84
192.168.1.85
192.168.1.86
[注]:192.168.1.84既是master节点,也是worker节点
- 修改配置文件
vim /etc/profile
export SPARK_HOME=/opt/lqu/packages/spark-1.6.0-bin-hadoop2.6
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
让配置文件生效:source /etc/profile
配置完成
4. 启动
①首先查看hadoop集群是否启动,可使用jps查看
在master(192.168.1.84)启动
cd /opt/lqu/packages/spark-1.6.0-bin-hadoop2.6/sbin
启动master:start-master.sh
启动slaves:start-slaves.sh
②在master节点查看
在其他两台slave上查看:
③ 浏览器观察spark
Standalone集群安装:https://my.oschina.net/jackieyeah/blog/659741
这篇文章很详细
4 . 安装tensorflow
1. 安装python2.7
电脑自带python2.7.5,省略这一步
2. 安装pip
curl -O https://bootstrap.pypa.io/get-pip.py
python get-pip.py
- 使用pip安装tensorflow(使用清华镜像源)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow==0.12.1
因为官方给出的示例版本是0.12.1,所以安装该版本,要不然版本不兼容容易出现一些不知道的错误
4. 查看
安装成功
【坑】给三台虚拟机都安装tensorflow,之前只给master节点安装tensorflow,其他两台找不到six.moves.queue模块。
5. 安装tensorflowonspark
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple
tensorflowonspark
git clone https://github.com/yahoo/TensorFlowOnSpark.git
cd TensorFlowOnSpark
export TFoS_HOME=$(pwd)
打包tensorflowonspark目录的文件
zip -r tfspark.zip tensorflowonspark/*
tfspark.zip是我们生成的python库文件,之后提交Spark的时候用到,其就是把tensorflowonspark所有文件进行了打包。
6. 样例测试
1. 下载数据集
mkdir ${TFoS_HOME}/mnist
cd ${TFoS_HOME}/mnist
curl -O "http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz"
curl -O "http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz"
curl -O "http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz"
curl -O "http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz"
2. 转换mnist数据集(.gz-->csv)
在hdfs上/user/root/建立目录examples/mnist/csv
[注]因为我是用root用户运行的,所以在/user/root底下建立目录,如果是其他用户运行,则在/user/${user}下建立目录
${SPARK_HOME}/bin/spark-submit \
--master=local[*] \
${TFoS_HOME}/examples/mnist/mnist_data_setup.py \
--output examples/mnist/csv \
--format csv
将上面的地址改为实际下载目录
转换成功后查看hdfs,生成2个目录
3. 训练模型
${SPARK_HOME}/bin/spark-submit \
--master=spark://192.168.1.84:7077 \
--conf spark.executorEnv.LD_LIBRARY_PATH="${JAVA_HOME}/jre/lib/amd64/server“\
--conf spark.executorEnv.CLASSPATH="$($HADOOP_HOME/bin/hadoop classpath --glob):${CLASSPATH}" \
--py-files ${TFoS_HOME}/examples/mnist/spark/mnist_dist.py,${TFoS_HOME}/tfspark.zip \
--conf spark.cores.max=3 \
--conf spark.task.cpus=1 \
${TFoS_HOME}/examples/mnist/spark/mnist_spark.py \
--cluster_size 3 \
--images examples/mnist/csv/train/images \
--labels examples/mnist/csv/train/labels \
--format csv \
--mode train \
--model mnist_model
spark.cores.max/spark.task.cpus=workernumber,如果设置不满的话会出现无限等待的情况。
spark.cores.max(集群总核数)
spark.task.cpus(worker节点分配核数)
将mnist_dist.py 的logdir改为本地路径,如logdir=’/tmp/’+args.model
运行成功后,hdfs查看:
4. 预测模型
${SPARK_HOME}/bin/spark-submit \
--master spark://192.168.1.84:7077 \
--conf spark.executorEnv.LD_LIBRARY_PATH="${JAVA_HOME}/jre/lib/amd64/server" \
--conf spark.executorEnv.CLASSPATH="$($HADOOP_HOME/bin/hadoop classpath --glob):${CLASSPATH}" \
--py-files ${TFoS_HOME}/tfspark.zip,${TFoS_HOME}/examples/mnist/spark/mnist_dist.py \
--conf spark.cores.max=3 \
--conf spark.task.cpus=1 \
--conf spark.executorEnv.JAVA_HOME="$JAVA_HOME" \
${TFoS_HOME}/examples/mnist/spark/mnist_spark.py \
--cluster_size 3 \
--images examples/mnist/csv/test/images \
--labels examples/mnist/csv/test/labels \
--mode inference \
--format csv \
--model mnist_model \
--output predictions
终于成功了
在经历无数次才坑爬坑后,终于成功了,一定要多看日志,再坚持一下,就成功了。
下面,推荐几个较好的链接
tensorflowonspark standalone安装
官方安装文档github