すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:JindoFS FUSE の使用

最終更新日:Apr 14, 2025

このトピックでは、Filesystem in Userspace (FUSE) クライアントから JindoFileSystem (JindoFS) にアクセスする方法について説明します。FUSE を使用すると、ブロックストレージモードとキャッシュモード(JFS スキームのみサポート)で JindoFS を使用できます。

前提条件

E-MapReduce (EMR) クラスタが作成されていること。詳細については、クラスタの作成 をご参照ください。

背景情報

FUSE は、ファイルシステムをマウントするために Linux カーネルによって提供される方法です。 FUSE クライアントを使用すると、JindoFS クラスタ内のファイルをローカルディスクにマップできます。その後、hadoop fs -ls jfs://<namespace>/ コマンドを使用せずに、JindoFS クラスタ内のデータに直接アクセスできます。

ディレクトリのマウント

説明 クラスタの各ノードで、以下の手順を順番に実行します。
  1. SSH モードでクラスタのマスターノードにログオンします。詳細については、クラスタへのログオン をご参照ください。
  2. 次のコマンドを実行して、ディレクトリを作成します:
    mkdir /mnt/jfs
  3. 次のコマンドを実行して、ディレクトリをマウントします:
    jindofs-fuse /mnt/jfs

    この例では、/mnt/jfs/ ディレクトリがマウントされています。

ファイルの読み書き

  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

FUSE のアンマウント

説明 クラスタの各ノードで、以下の手順を順番に実行します。
  1. SSH モードでクラスタのマスターノードにログオンします。詳細については、クラスタへのログオン をご参照ください。
  2. 次のコマンドを実行して、FUSE をアンマウントします:
    umount jindofs-fuse

    target is busy エラーが返された場合は、別のディレクトリに切り替え、FUSE ファイルの読み書きを行っているすべてのプログラムを停止してから、FUSE をアンマウントします。