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