本文主要介紹如何使用Fuse-DFS工具實現文件存儲 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。
本示例以CentOS 7操作系統為例,進行配置和使用Fuse-DFS。
步驟一:Hadoop集群掛載文件存儲 HDFS 版實例
在Hadoop集群中配置文件存儲 HDFS 版實例。具體操作,請參見掛載文件存儲 HDFS 版文件系統。
步驟二:配置Fuse-DFS
在Hadoop客戶端上安裝依賴并載入FUSE模塊。
執行以下命令,安裝依賴。
yum -y install fuse fuse-devel fuse-libs
執行以下命令,載入FUSE模塊。
modprobe fuse
解壓Hadoop源碼包。
tar -zxvf hadoop-2.8.5-src.tar.gz
修改代碼并編譯。
使用Fuse-DFS掛載文件存儲 HDFS 版到本地文件系統時,系統會將掛載點地址的前綴
dfs://
修改為hdfs://
,導致掛載失敗,因此需要修改代碼重新編譯,操作如下。執行以下命令,打開fuse_options.c文件,并將
#define NEW_HDFS_URI_LOCATION "hdfs://"
修改為#define NEW_HDFS_URI_LOCATION "dfs://"
。vim hadoop-2.8.5-src/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/fuse_options.c
執行以下命令編譯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
為您文件存儲 HDFS 版的掛載點地址,請根據實際情況替換。驗證掛載結果。
如果您在本地目錄中可以查看文件存儲HDFS版中的文件和目錄,則表示掛載成功。
重要客戶端重啟后,您需要重新掛載文件存儲 HDFS 版文件系統到本地,建議您配置開機自動掛載。
掛載成功后,您可以在本地訪問文件存儲 HDFS 版文件系統,執行讀取或寫入操作。
執行以下命令在已映射文件存儲 HDFS 版文件系統的本地目錄中創建文件,創建成功后,您可以在文件存儲 HDFS 版文件系統上查看到該文件。
cd /mnt/dfs_mount
mkdir fuse_test
echo "hello dfs" > fuse_test/fuse.txt
可選:卸載掛載目錄。
fusermount -u /mnt/dfs_mount