本文主要介绍如何使用Fuse-DFS工具实现文件存储HDFS版在本地文件系统的映射。
前提条件
- 已开通文件存储HDFS版服务并创建文件系统实例和挂载点。具体操作,请参见文件存储HDFS版快速入门。
- 已为Hadoop集群所有节点安装JDK,且JDK版本不低于1.8。建议您使用的Hadoop版本不低于2.7.2,本文使用的Hadoop版本为Apache Hadoop 2.8.5。
- 已下载与Hadoop集群版本相同的Hadoop源码包。具体下载地址请参见下载Hadoop源码包。
背景信息
Fuse-DFS是Hadoop项目自带的一个功能模块,提供了使用FUSE(用户空间中的文件系统)在UNIX文件系统上映射HDFS的功能,在官方提供的Hadoop预编译版本中不包含Fuse-DFS的功能模块,如需使用该功能需要手动编译该功能模块并添加到Hadoop客户端中。Fuse-DFS官方文档请参见MountableHDFS。
说明 Fuse-DFS工具在阿里云文件存储HDFS版上使用时需要额外的配置。具体操作,请参见步骤二:配置Fuse-DFS。
步骤一:Hadoop集群挂载文件存储HDFS版实例
在Hadoop集群中配置文件存储HDFS版实例。具体操作,请参见挂载HDFS文件系统。
步骤二:配置Fuse-DFS
- 在Hadoop客户端上安装依赖并载入FUSE模块。
- 解压Hadoop源码包。
tar -zxvf hadoop-2.8.5-src.tar.gz
- 修改代码并编译。
使用Fuse-DFS挂载文件存储HDFS版到本地文件系统时,系统会将挂载点地址的前缀
dfs://
修改为hdfs://
,导致挂载失败,因此需要修改代码重新编译,操作如下。 - 配置Fuse-DFS。
将编译出来的Fuse-DFS包拷贝到Hadoop客户端的bin目录下。示例命令如下:
cp hadoop-2.8.5-src/hadoop-hdfs-project/hadoop-hdfs-native-client/target/main/native/fuse-dfs/fuse_dfs ${HADOOP_HOME}/bin
- 为Hadoop客户端配置环境变量。
步骤三:使用Fuse-DFS
- 创建目录。
mkdir /mnt/dfs_mount
- 挂载文件存储HDFS版至本地文件系统。
fuse_dfs dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com:10290/ /mnt/dfs_mount
其中,
dfs://f-xxxxx.cn-xxx.dfs.aliyuncs.com
为您的文件存储HDFS版的挂载点地址,请根据实际情况替换。 - 验证挂载结果。
如果您在本地目录中可以查看文件存储HDFS版中的文件和目录,则表示挂载成功。
- 挂载成功后,您可以在本地访问文件存储HDFS版,执行读取或写入操作。
执行以下命令在已映射文件存储HDFS版的本地目录中创建文件,创建成功后,您可以在文件存储HDFS版上查看到该文件。
cd /mnt/dfs_mount
mkdir fuse_test
echo "hello dfs" > fuse_test/fuse.txt
- 卸载挂载目录。
fusermount -u /mnt/dfs_mount
重要 客户端重启之后,您需要重新挂载文件存储HDFS版到本地,建议您配置开机自动挂载。