使用Fuse-DFS挂载文件存储 HDFS-后端存储ceph

发布于:2025-03-01 ⋅ 阅读:(89) ⋅ 点赞:(0)

1. 编译环境准备

yum install cmake3
ln -s /usr/bin/cmake3 /usr/bin/cmake
yum install gcc-c++

安装挂载依赖

yum -y install fuse fuse-devel fuse-libs

执行以下命令,载入FUSE模块

modprobe fuse

2. 下载源码包

hadoop-3.3.4-src.tar.gz解压后执行以下命令
打开fuse_options.c文件,并将#define NEW_HDFS_URI_LOCATION "hdfs://"修改为#define NEW_HDFS_URI_LOCATION “ceph://”

cd hadoop-3.3.4-src
vi hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/fuse_options.c

修改maven-surefire-plugin依赖版本号

vi hadoop-project/pom.xml
<maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>

3.编译Hadoop源码
编译hadoop-hdfs-project模块下的hadoop-hdfs-native-client子模块

mvn clean package -pl hadoop-hdfs-project/hadoop-hdfs-native-client -Pnative -DskipTests -Drequire.fuse=true
编译后的fuse_dfs 拷贝至客户端${HADOOP_HOME}/bin
hadoop-3.3.4-src/hadoop-hdfs-project/hadoop-hdfs-native-client/target/main/native/fuse-dfs/ fuse_dfs  拷贝至客户端${HADOOP_HOME}/bin

打开配置文件,添加如下内容

vi ~/.bash_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 ~/.bash_profile ~/.bashrc

4.挂载ceph目录

mkdir /mnt/dfs_mount
fuse_dfs ceph://192.168.252.12:6789/ /mnt/dfs_mount

挂载成功后,您可以在本地访问文件存储 HDFS 版文件系统,执行读取或写入操作。
执行以下命令在已映射文件存储 HDFS 版文件系统的本地目录中创建文件,创建成功后,您可以在文件存储 HDFS 版文件系统上查看到该文件。

cd /mnt/dfs_mount
mkdir fuse_test
echo "hello dfs" > fuse_test/fuse.txt

可选:卸载挂载目录

fusermount -u /mnt/dfs_mount