使用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账户名和密码。
手工挂载HDFS存储
对运行状态的开发环境,可以登录到环境中,手工挂载HDFS存储。
首先,SSH连接登录到开发环境内部
我们已经预装了挂载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_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上存储的文件不会删除。
umount [本地目录名]
例如, 执行下列命令卸载已挂载到/hdfs
目录的HDFS FUSE存储
umount /hdfs
使用限制
暂无
原文: http://docs.api.xiaomi.com/cloud-ml/devenv/0403_use_hdfs_fuse.html