How to run TensorFlow on Hadoop(如何在Hadoop上运行TensorFlow)

How to run TensorFlow on Hadoop

本文档介绍如何在Hadoop上运行TensorFlow。它将被扩展为描述在各种集群管理器上运行,但目前仅描述在HDFS上运行。

HDFS

我们假设您熟悉阅读数据

要将HDFS与TensorFlow一起使用,请更改用于读取和写入数据到HDFS路径的文件路径。例如:

filename_queue = tf.train.string_input_producer([ "hdfs://namenode:8020/path/to/file1.csv", "hdfs://namenode:8020/path/to/file2.csv", ])

如果您想要使用HDFS配置文件中指定的namenode,则将文件前缀更改为hdfs://default/

启动TensorFlow程序时,必须设置以下环境变量:

  • JAVA_HOME:Java安装的位置。

  • HADOOP_HDFS_HOME:HDFS安装的位置。您还可以运行以下命令来设置此环境变量:

shell source ${HADOOP_HOME}/libexec/hadoop-config.sh

  • LD_LIBRARY_PATH:包含libjvm.so的路径,以及可选的libhdfs.so路径(如果您的Hadoop发行版不安装libhdfs.so)$HADOOP_HDFS_HOME/lib/native。在Linux上: shell export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${JAVA_HOME}/jre/lib/amd64/server

  • CLASSPATH:必须在运行TensorFlow程序之前添加Hadoop。CLASSPATH设置${HADOOP_HOME}/libexec/hadoop-config.sh是不足的。Glob必须按照libhdfs文档中的描述进行扩展:

shell CLASSPATH=$(${HADOOP_HDFS_HOME}/bin/hadoop classpath --glob) python your_script.py对于旧版本的Hadoop / libhdfs(早于2.6.0),您必须手动扩展类路径通配符。有关更多详细信息,请参阅HADOOP-10903。

如果Hadoop集群处于安全模式,则必须设置以下环境变量:

  • KRB5CCNAME:Kerberos票据缓存文件的路径。例如:

shell export KRB5CCNAME=/tmp/krb5cc_10002

如果您正在运行Distributed TensorFlow,则所有工作人员必须设置环境变量并安装Hadoop。