使用HDFS FUSE存储

简介

HDFS FUSE是基于FUSE的文件系统,允许挂载HDFS上的文件目录到本地文件系统。用户读写本地文件,后台会自动同步到HDFS上。开发环境中使用HDFS FUSE用法与训练任务类似,训练任务中对应部分可参考 在TrainJob中使用HDFS FUSE

目前,下列框架和版本中已经集成了HDFS FUSE功能。

  • Tensorflow 1.0.0-xm1.0.0-c3prc-hadoop(docker image名称:cnbj6-repo.cloud.mi.com/cloud-ml/tensorflow-gpu:1.0.0-xm1.0.0-c3prc-hadoop)
  • Tensorflow 1.3.0-xm1.0.0(docker image名称:cnbj6-repo.cloud.mi.com/cloud-ml/tensorflow-gpu:1.3.0-xm1.0.0)
  • Tensorflow 1.6.0-xm1.0.0(docker image名称:cnbj6-repo.cloud.mi.com/cloud-ml/tensorflow-gpu:1.6.0-xm1.0.0)
  • Tensorflow 1.7.0-xm1.0.0(docker image名称:cnbj6-repo.cloud.mi.com/cloud-ml/tensorflow-gpu:1.7.0-xm1.0.0)
    可以在CLI或WEB创建训练任务时,指定HDFS FUSE参数。

创建时自动挂载HDFS存储

创建开发环境时,可以指定FDS bucket参数,开发环境创建成功后会自动挂载该bucket到系统中(默认/hdfs目录)。

  • 使用命令行工具创建开发环境时,使用下列参数:
    cloudml dev create -n mydev -p mypassword -hka s_test@XIAOMI.HADOOP -hkp myhdfspassword -fc hdfs://c3prc-hadoop -d cnbj6-repo.cloud.mi.com/cloud-ml/tensorflow-gpu:1.3.0-xm1.0.0
  • -hka HDFS_KRB_ACCOUNT, —hdfs_krb_account HDFS_KRB_ACCOUNT: 指定HDFS的kerberos账号;

  • -hkp HDFS_KRB_PASSWORD, —hdfs_krb_password HDFS_KRB_PASSWORD: 指定HDFS的kerberos密码;

  • -he HDFS_ENDPOINT, —hdfs_endpoint HDFS_ENDPOINT: 指定HDFS集群地址,例如HDFS C3机房地址是hdfs://c3prc-hadoop。

  • 使用WEB控制台创建开发环境时,选择HDFS Region,并填写hdfs kerberos账户名和密码。dev web hdfs fuse

手工挂载HDFS存储

对运行状态的开发环境,可以登录到环境中,手工挂载HDFS存储。

  • 首先,SSH连接登录到开发环境内部

  • 我们已经预装了挂载HDFS FUSE需要的软件,只需要设置环境变量,执行下面的命令即可。

$HADOOP_ROOT/fuse-dfs/fuse_dfs_wrapper.sh [HDFS Region] [本地目录名] [OPTION]

例如, 执行下列命令挂载C3机房中账户s_test@XIAOMI.HADOOP的HDFS目录到本地/hdfs目录

  1. export XIAOMI_HDFS_ENDPOINT="hdfs://c3prc-hadoop"
  2. export XIAOMI_HDFS_KRB_ACCOUNT="s_test@XIAOMI.HADOOP"
  3. export XIAOMI_HDFS_KRB_PASSWORD="myhdfspassword"
  4. mkdir /hdfs
  5. echo $XIAOMI_HDFS_KRB_PASSWORD | kinit $XIAOMI_HDFS_KRB_ACCOUNT && $HADOOP_ROOT/fuse-dfs/fuse_dfs_wrapper.sh $XIAOMI_HDFS_ENDPOINT /hdfs -o allow_other
  • XIAOMI_HDFS_ENDPOINT 是HDFS集群地址,例如HDFS C3机房地址是hdfs://c3prc-hadoop。
  • XIAOMI_HDFS_KRB_ACCOUNT,XIAOMI_HDFS_KRB_PASSWORD是HDFS kerberos账户名称和密码。
  • /hdfs 是本地挂载点目录,和普通数据卷的挂载点相同,用户可以使用任意本地目录作为挂载点。

  • 挂载完成后,可以使用Linux df命令查看挂载是否成功。出现类似下面类型是fdsfuse,并且对应挂载点的文件系统即表示挂载成功。用户就可以进入本地挂载目录去访问存储在HDFS中的对象。

root@1d33c0a7ff91:/# df -h
Filesystem Size Used Avail Use% Mounted on
none 902G 344G 513G 41% /
tmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
shm 64M 0 64M 0% /dev/shm
fdsfuse 256T 0 256T 0% /hdfs

卸载已挂载的HDFS存储

执行umount命令可以卸载已经挂载的HDFS存储。卸载后,HDFS上存储的文件不会删除。

  1. umount [本地目录名]

例如, 执行下列命令卸载已挂载到/hdfs目录的HDFS FUSE存储

  1. umount /hdfs

使用限制

暂无

原文: http://docs.api.xiaomi.com/cloud-ml/devenv/0403_use_hdfs_fuse.html