本文介绍如何在文件存储HDFS上使用TensorFlow。

背景信息

TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。
说明 由于TensorFlow对文件系统的schema有特别的指定,因此在文件存储HDFS上使用TensorFlow时需要修改TensorFlow源码,详情请参见配置TensorFlow支持文件存储HDFS

准备工作

  1. 开通文件存储HDFS服务并创建文件系统实例和挂载点,详情请参见HDFS快速入门
  2. 在Hadoop集群所有节点上安装JDK,版本不能低于1.8。
  3. 在Hadoop集群中配置文件存储HDFS实例,详情请参见挂载文件系统
  4. 根据您目前使用的TensorFlow版本下载源码,下载地址:官方链接
    本文档中使用的TensorFlow版本为1.15.0。

配置TensorFlow支持文件存储HDFS

  1. 在TensorFlow源码中添加对文件存储HDFS的支持,详情请参见tensorflow support aliyun HDFS
  2. 编译TensorFlow。
    编译步骤1中已修改的TensorFlow源码,详情请参见Build from source
  3. 验证配置结果。
    1. 在文件存储HDFS上创建测试文件。
      hadoop fs -mkdir  dfs://f-xxxx.cn-xxxx.dfs.aliyuncs.com:10290/test_tensorflow
      hadoop fs -touchz  dfs://f-xxxx.cn-xxxx.dfs.aliyuncs.com:10290/test_tensorflow/words
      echo "hello tensorflow" | hadoop fs -appendToFile - dfs://f-xxxx.cn-xxxx.dfs.aliyuncs.com:10290/test_tensorflow/words

      f-xxxx.cn-xxxx.dfs.aliyuncs.com为文件存储HDFS的挂载点域名,请根据实际情况替换。

    2. 使用TensorFlow的api gfile查看文件存储HDFS上的数据。

      如果显示HDFS上的数据,则表示配置成功。

      (base) root@zb3 ~# python
      Python 3.6.9 |Anaconda, Inc.| (default, Jul 30 2019, 19:07:31) 
      [GCC 7.3.0] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>> import tensorflow as tf
      >>> tf.io.gfile.listdir('dfs://f-xxxx.cn-xxxx.dfs.aliyuncs.com:10290/test_tensorflow')
      ['words']
      >>> with tf.gfile.Open('dfs://f-xxxx.cn-xxxx.dfs.aliyuncs.com:10290/test_tensorflow/words') as rf:
      ...     rf.read()
      'hello tensorflow\n'
      >>>