1.7.4.4 使用HDFS FUSE存储

优质
小牛编辑
134浏览
2023-12-01

简介

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

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

  1. Tensorflow 1.6.0-xm1.0.0 (docker image名称:cnbj6-repo.cloud.mi.com/cloud-ml/tensorflow-gpu:1.6.0-xm1.0.0)
  2. Tensorflow 1.7.0-xm1.0.0 (docker image名称:cnbj6-repo.cloud.mi.com/cloud-ml/tensorflow-gpu:1.7.0-xm1.0.0)
  3. Tensorflow 1.8.0-xm1.0.0 (docker image名称:cnbj6-repo.cloud.mi.com/cloud-ml/tensorflow-gpu:1.8.0-xm1.0.0)
  4. Tensorflow 1.9.0-xm1.0.0 (docker image名称:cnbj6-repo.cloud.mi.com/cloud-ml/tensorflow-gpu:1.9.0-xm1.0.0)

可以在CLI或WEB创建训练任务时,指定HDFS FUSE参数。

创建时自动挂载HDFS存储

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

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

  3. -hkp HDFS_KRB_PASSWORD, --hdfs_krb_password HDFS_KRB_PASSWORD: 指定HDFS的kerberos密码;

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

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

手工挂载HDFS存储

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

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

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

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

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

export XIAOMI_HDFS_ENDPOINT="hdfs://c3prc-hadoop"
export XIAOMI_HDFS_KRB_ACCOUNT="s_test@XIAOMI.HADOOP"
export XIAOMI_HDFS_KRB_PASSWORD="myhdfspassword"
mkdir /hdfs
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_ACCOUNTXIAOMI_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上存储的文件不会删除。

umount [本地目录名]

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

umount /hdfs

使用限制

暂无