本文介绍如何通过FUSE客户端访问JindoFS。FUSE支持Block和JFS Scheme的Cache两种模式。
前提条件
已创建集群,详情请参见创建集群。背景信息
FUSE是Linux系统内核提供的一种挂载文件系统的方式。通过JindoFS的FUSE客户端,将JindoFS集群上的文件映射到本地磁盘,您可以像访问本地磁盘一样访问JindoFS集群上的数据,无需再使用hadoop fs -ls jfs://<namespace>/方式访问数据。
挂载
说明 依次在每个节点上执行挂载操作。
- 使用SSH方式登录到集群主节点,详情请参见登录集群。
- 执行如下命令,新建目录。
mkdir /mnt/jfs - 执行如下命令,挂载目录。
jindofs-fuse /mnt/jfs/mnt/jfs作为FUSE的挂载目录。
读写文件
- 列出/mnt/jfs/下的所有目录。
ls /mnt/jfs/返回用户在服务端配置的所有命名空间列表。test testcache - 列出命名空间test下面的文件列表。
ls /mnt/jfs/test/ - 创建目录。
mkdir /mnt/jfs/test/dir1 ls /mnt/jfs/test/ - 写入文件。
echo "hello world" > /tmp/hello.txt cp /tmp/hello.txt /mnt/jfs/test/dir1/ - 读取文件。
cat /mnt/jfs/test/dir1/hello.txt返回如下信息。hello world
如果您想使用Python方式写入和读取文件,请参见如下示例:
- 使用Python写write.py文件,包含如下内容。
#!/usr/bin/env python36 with open("/mnt/jfs/test/test.txt",'w',encoding = 'utf-8') as f: f.write("my first file\n") f.write("This file\n\n") f.write("contains three lines\n") - 使用Python读文件。创建脚本read.py文件,包含如下内容。
#!/usr/bin/env python36 with open("/mnt/jfs/test/test.txt",'r',encoding = 'utf-8') as f: lines = f.readlines() [print(x, end = '') for x in lines]读取写入test.txt文件的内容。[hadoop@emr-header-1 ~]$ ./read.py返回如下信息。my first file This file
卸载
说明 依次在每个节点上执行卸载操作。
- 使用SSH方式登录到集群主节点,详情请参见登录集群。
- 执行如下命令,卸载FUSE。
umount jindofs-fuse如果出现
target is busy错误,请切换到其它目录,停止所有正在读写FUSE文件的程序,再执行卸载操作。
该文章对您有帮助吗?