本文介紹如何通過FUSE用戶端訪問JindoFS。FUSE支援Block和JFS Scheme的Cache兩種模式。
前提條件
已建立叢集,詳情請參見建立叢集。背景資訊
FUSE是Linux系統核心提供的一種掛載檔案系統的方式。通過JindoFS的FUSE用戶端,將JindoFS叢集上的檔案對應到本地磁碟,您可以像訪問本地磁碟一樣訪問JindoFS叢集上的資料,無需再使用hadoop fs -ls jfs://<namespace>/方式訪問資料。
掛載
說明 依次在每個節點上執行掛載操作。
- 使用SSH方式登入到叢集主節點,詳情請參見登入叢集。
- 執行如下命令,建立目錄。
mkdir /mnt/jfs - 執行如下命令,掛載目錄。
jindofs-fuse /mnt/jfs/mnt/jfs作為FUSE的掛載目錄。
讀寫檔案
- 列出/mnt/jfs/下的所有目錄。
ls /mnt/jfs/返回使用者在服務端配置的所有命名空間列表。test testcache - 列出命名空間test下面的檔案清單。
ls /mnt/jfs/test/ - 建立目錄。
mkdir /mnt/jfs/test/dir1 ls /mnt/jfs/test/ - 寫入檔案。
echo "hello world" > /tmp/hello.txt cp /tmp/hello.txt /mnt/jfs/test/dir1/ - 讀取檔案。
cat /mnt/jfs/test/dir1/hello.txt返回如下資訊。hello world
如果您想使用Python方式寫入和讀取檔案,請參見如下樣本:
- 使用Python寫write.py檔案,包含如下內容。
#!/usr/bin/env python36 with open("/mnt/jfs/test/test.txt",'w',encoding = 'utf-8') as f: f.write("my first file\n") f.write("This file\n\n") f.write("contains three lines\n") - 使用Python讀檔案。建立指令碼read.py檔案,包含如下內容。
#!/usr/bin/env python36 with open("/mnt/jfs/test/test.txt",'r',encoding = 'utf-8') as f: lines = f.readlines() [print(x, end = '') for x in lines]讀取寫入test.txt檔案的內容。[hadoop@emr-header-1 ~]$ ./read.py返回如下資訊。my first file This file
卸載
說明 依次在每個節點上執行卸載操作。
- 使用SSH方式登入到叢集主節點,詳情請參見登入叢集。
- 執行如下命令,卸載FUSE。
umount jindofs-fuse如果出現
target is busy錯誤,請切換到其它目錄,停止所有正在讀寫FUSE檔案的程式,再執行卸載操作。