本文介紹如何通過FUSE客戶端訪問JindoFS。FUSE支持Block和JFS Scheme的Cache兩種模式。

前提條件

已創建集群,詳情請參見創建集群

背景信息

FUSE是Linux系統內核提供的一種掛載文件系統的方式。通過JindoFS的FUSE客戶端,將JindoFS集群上的文件映射到本地磁盤,您可以像訪問本地磁盤一樣訪問JindoFS集群上的數據,無需再使用hadoop fs -ls jfs://<namespace>/方式訪問數據。

掛載

說明 依次在每個節點上執行掛載操作。
  1. 使用SSH方式登錄到集群主節點,詳情請參見使用SSH連接主節點
  2. 執行如下命令,新建目錄。
    mkdir /mnt/jfs
  3. 執行如下命令,掛載目錄。
    jindofs-fuse /mnt/jfs

    /mnt/jfs作為FUSE的掛載目錄。

讀寫文件

  1. 列出/mnt/jfs/下的所有目錄。
    ls /mnt/jfs/
    返回用戶在服務端配置的所有命名空間列表。
    test  testcache
  2. 列出命名空間test下面的文件列表。
    ls /mnt/jfs/test/
  3. 創建目錄。
    mkdir /mnt/jfs/test/dir1
    ls /mnt/jfs/test/
  4. 寫入文件。
    echo "hello world" > /tmp/hello.txt
    cp /tmp/hello.txt /mnt/jfs/test/dir1/
  5. 讀取文件。
    cat /mnt/jfs/test/dir1/hello.txt
    返回如下信息。
    hello world
如果您想使用Python方式寫入和讀取文件,請參見如下示例:
  1. 使用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")
  2. 使用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

卸載

說明 依次在每個節點上執行卸載操作。
  1. 使用SSH方式登錄到集群主節點,詳情請參見使用SSH連接主節點
  2. 執行如下命令,卸載FUSE。
    umount jindofs-fuse

    如果出現target is busy錯誤,請切換到其它目錄,停止所有正在讀寫FUSE文件的程序,再執行卸載操作。