一 目的
本文档主要介绍如何使用 Fuse-DFS 工具实现文件存储HDFS版在本地文件系统的映射。Fuse-DFS 工具在文件存储HDFS版上使用时需要额外的配置,详细操作步骤请参见章节:配置 Fuse-DFS。
二 准备工作
- 开通文件存储HDFS版服务并创建文件系统实例和挂载点,详情请参见:HDFS快速入门。
- 在 Hadoop 集群所有节点上安装JDK。版本不能低于1.8。
- 建议您使用的 Hadoop 版本不低于2.7.2,本文档中使用的 Hadoop 版本为 Apache Hadoop 2.8.5。
- 在 Hadoop 集群中配置好文件存储HDFS版实例,详情请参见:挂载文件系统。
- 下载与 Hadoop 集群版本相同的 Hadoop 源码包。下载地址:官方链接。
三 配置 Fuse-DFS
Fuse-DFS 是 Hadoop 项目自带的一个功能模块,提供了使用 FUSE(用户空间中的文件系统)在 UNIX 文件系统上映射 HDFS 的功能,在官方提供的 Hadoop 预编译版本中不包含 Fuse-DFS的功能模块,如需使用该功能需要手动编译该功能模块并添加到 Hadoop 客户端中。Fuse-DFS 官方介绍文档请参见:MountableHDFS。
- 在 Hadoop 客户端上安装依赖并载入 FUSE 模块
执行如下命令
yum -y install fuse fuse-devel fuse-libs modprobe fuse
- 解压 Hadoop 源码包
tar -zxf hadoop-2.8.5-src.tar.gz
- 修改代码并编译
在使用 fuse-dfs 挂载文件存储HDFS版到本地文件系统时,会将挂载点地址的前缀 "dfs://" 修改为 "hdfs://" ,导致挂载失败,因此需要修改代码重新编译,操作如下。
vim hadoop-2.8.5-src/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/fuse_options.c 将 #define NEW_HDFS_URI_LOCATION "hdfs://" 修改为 #define NEW_HDFS_URI_LOCATION "dfs://"
执行以下命令仅编译 Hadoop 源码中的 hadoop-hdfs-project
模块下的 hadoop-hdfs-native-client
子模块
cd hadoop-2.8.5-src/ mvn clean package -pl hadoop-hdfs-project/hadoop-hdfs-native-client -Pnative -DskipTests
注意:不同的 Hadoop 版本中子模块的 hadoop-hdfs-native-client
命名及位置可能不同 。在 Hadoop 2.7.x 版本中该模块包含在 hadoop-hdfs-project/hadoop-hdfs
子模块中,Hadoop 2.8.x 及之后的版本都在模块 hadoop-hdfs-project
下。
- 配置 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 客户端配置环境变量
vim /etc/profile export OS_ARCH=amd64 export LD_LIBRARY_PATH=${JAVA_HOME}/jre/lib/${OS_ARCH}/server:${HADOOP_HOME}/lib/native export CLASSPATH=$CLASSPATH:`${HADOOP_HOME}/bin/hadoop classpath --glob`
- 刷新环境变量
source /etc/profile
四 使用 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:10290 为文件存储HDFS版的挂载点,请根据您的实际情况替换。
查看映射到本地的目录
- 验证
cd /mnt/dfs_mount mkdir fuse_test echo "hello dfs" > fuse_test/fuse.txt
在文件存储HDFS版上查看创建的文件 fuse.txt
- 卸载挂载目录
fusermount -u /mnt/dfs_mount
注意事项:客户端重启之后需要您重新挂载文件存储HDFS版到本地,建议您配置开机自动挂载。
了解更多关于文件存储HDFS版的产品信息,欢迎访问https://www.aliyun.com/product/alidfs
如果您对文件存储HDFS版有任何问题,欢迎钉钉扫描以下二维码加入文件存储HDFS版技术交流群。