Shell、Python、Notebook などのノードでデータセットを使用して、データ開発中に Object Storage Service (OSS) または Apsara File Storage NAS (NAS) のデータを読み書きすることができます。また、パーソナル開発環境のインスタンスを作成する際に、データセットをストレージとしてマウントすることもできます。
データセットの作成方法については、「データセットの管理」をご参照ください。
概要
データセットを使用すると、DataWorks から OSS および NAS に保存されているデータの読み取りと書き込みができます。複数のデータセットバージョンを作成し、変更を追跡し、必要に応じて以前のバージョンに復元できます。
制限事項
-
データセットは、新しいバージョンの DataStudio でのみサポートされています。
-
リソースグループ:データ開発ノードからデータセットには、サーバーレスリソースグループを介してのみアクセスできます。
-
サポート対象オブジェクト:データセットは、Shell ノード、Python ノード、基本開発用 Notebook、および パーソナル開発環境でのみサポートされています。各オブジェクトには最大 5 個のデータセットをマウントできます。
-
ストレージタイプ:データセットは、Object Storage Service (OSS) および NFS プロトコルを使用する Apsara File Storage NAS (NAS) をサポートしています。
-
権限:データセットのマウントターゲットが読み取り専用に設定されている場合、その中のフォルダやファイルを変更または削除することはできません。これを行うと、権限エラーが発生します。
ノードでのデータセットの使用
このセクションでは、OSS データセットをノードにマウントする方法について説明します。この例では、OSS ベースの DataWorks データセットを作成し、OSS パス oss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/ をデータセットのマウントパス /mnt/data/dataset01 にマウントし、ノードコードでデータを読み書きします。
前提条件:データセットの作成
-
バケットを作成するか、ファイルシステムを作成します。
この例では、OSS データセットを使用します。中国 (上海) リージョンに
datasets-ossという名前のバケットを作成し、/dataset01/v1ディレクトリを作成します。 -
データセットを作成します。
この例では、
datasets-ossという名前の OSS データセットを作成し、OSS パスoss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/を/mnt/data/dataset01にマウントします。
1. ノード用のデータセットの構成
シェルまたは Python ノードのDebug Configurationで、datasets-oss データセットを設定します。
-
ノードを公開する前に、Scheduling Settings セクションでデータセットも追加する必要があります。
-
データセットを使用するには、ノードに少なくとも 0.5 コンピューティングユニット (CU) を割り当てる必要があります。
|
パラメーター |
説明 |
|
[データセット] |
現在のノードのコードからアクセスできるデータセットを指定します。
この例では、DataWorks で作成した OSS データセット |
|
[Mount Path] |
ノードのコードがデータセットにアクセスするために使用するパスです。 このフィールドには、データセットの定義時に設定されたDefault Mount Pathが自動的に入力されます。 重要
同じノードに複数のデータセットをマウントする場合、それらのマウントパスが競合しないようにする必要があります。 |
|
[Advanced Settings] |
このパラメーターはオプションです。JSON 形式で、OSS データへのアクセスに使用するツールとパラメーター、または NAS ファイルシステムにアクセスするための設定を指定できます。
|
|
[Read Only] |
デフォルトでは、現在のノードでデータセットの読み取りと書き込みができます。このノードでデータセットが読み取り専用に設定されている場合、ノードコードからマウントディレクトリにデータを書き込むことはできません。書き込みを試みると、権限エラーが発生します。 |
2. ノードでのデータセットの使用
この例では、Shell ノードを使用します。OSS データセットを Shell ノードにアタッチすると、Shell ノードコードで OSS データをローカルファイルのように管理できます。次の例では、デフォルトの ossfs 2.0 ツールを使用して、file01.txt ファイルを OSS データセット datasets-oss のマウントパス /mnt/data/dataset01 に書き込みます。
サンプルコード:
echo "Hello World" > /mnt/data/dataset01/file01.txt
ls -tl /mnt/data/dataset01
右側の [デバッグ構成] パネルで、[データセット] タブを開き、カスタムデータセット datasets-oss/V1 を選択します。リソースグループ承認成功のメッセージを確認し、[読み取り専用] スイッチがオフになっていることを確認します。ノードを実行すると、ログに file01.txt が作成されたこと (12 バイト、権限: rwxrwxrwx)、終了コードが 0、経過時間が 0.741 秒、ステータスが FINISH であることが表示されます。
実行時に Job Submit Failed! submit job failed directly! Caused by: execute task failed, exception: [103:ILLEGAL_TASK]:Task with dataset need 0.5cu at least! というエラーメッセージが表示された場合、タスクの CU が不足しています。リソースグループの CU 割り当てを少なくとも 0.5 に増やしてください。
3. OSS でのデータの確認
「2. ノードでのデータセットの使用」のコードを実行すると、ファイルはデータセットのマウントパスに対応する OSS ストレージパスに自動的に書き込まれます。OSS ストレージパスでファイルを確認できます。この例では、OSS データセット datasets-oss のマウントパス /mnt/data/dataset01 が oss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/ にマッピングされます。次の図は、OSS パスに書き込まれたデータの例を示しています。
このパスで、書き込まれたファイル file01.txt (0.012 KB、標準ストレージ) を確認できます。
パーソナル開発環境でのデータセットの使用
データセットを定義したら、パーソナル開発環境インスタンスの作成時または変更時にデータセットをマウントできます。その後、パーソナルディレクトリ内のターミナルまたは Notebook でデータセットのデータに直接アクセスできます。
前提条件:データセットの作成
-
バケットを作成するか、ファイルシステムを作成します。
-
データセットを作成します。
この例では、NAS ベースのデータセットを使用します。中国 (上海) リージョンに NAS データセット
datasets-nasを作成し、NAS パスnas://****.cn-shanghai.nas.aliyuncs.com/mnt/dataset02/v1/を/mnt/data/dataset02にマウントします。
1. パーソナル環境用のデータセットの構成
パーソナル開発環境のインスタンスを作成し、既存の NAS データセット datasets-nas を選択します。
設定ページで、[データセット] ドロップダウンリストから datasets-nas を選択し、対応するマウントパスを指定します。
|
パラメーター |
説明 |
|
[データセット] |
インスタンスのコードがアクセスできるデータセットを指定します。パーソナル開発環境インスタンス用に選択した VPC が NAS マウントターゲットに接続できることを確認してください。 この例では、DataWorks で作成した NAS データセット |
|
[Mount Path] |
インスタンスのコードがデータセットにアクセスする際に使用するパスです。 この例では、NAS データセットパス 重要
同じパーソナル開発環境インスタンスに複数のデータセットをマウントする場合、それらのマウントパスが競合しないようにする必要があります。 |
|
[Advanced Settings] |
このパラメーターはオプションです。JSON を使用して、NFS プロトコルを使用する Apsara File Storage NAS (NAS) ファイルシステムにアクセスするための設定 (nasOptions パラメーター) を指定できます。次のコードは、デフォルト設定を示しています。パラメーター値をカスタマイズするには、「NFS ファイルシステムの手動マウント」をご参照ください。 重要
|
|
[Read Only] |
デフォルトでは、インスタンスでデータセットの読み取りと書き込みができます。インスタンスでデータセットが読み取り専用に設定されている場合、インスタンス内のコードからマウントディレクトリにデータを書き込むことはできません。書き込みを試みると、権限エラーが発生します。 |
2. Notebook でのデータセットの使用
-
DataStudio ページの上部で、パーソナル開発環境インスタンスに切り替え、基本開発用 Notebook を作成します。
-
Notebook に次の内容を追加します。
-
データセット内の指定されたパスにデータを書き込みます。
import os # 宛先パスとファイル名を定義します file_path = "/mnt/data/dataset02/file02.txt" # ディレクトリが存在することを確認します。存在しない場合は作成します。 os.makedirs(os.path.dirname(file_path),exist_ok=True) # 内容を書き込みます content = "Hello World!" try: with open(file_path, "w", encoding="utf-8") as file: file.write(content) print(f"ファイルが正常に {file_path} に書き込まれました") except Exception as e: print(f"ファイルの書き込みに失敗しました: {str(e)}") -
データセット内の指定されたパスからデータを読み取ります。
file_path = "/mnt/data/dataset02/file02.txt" with open(file_path, "r") as file: content = file.read() content
-
-
2 つの Python コードスニペットを個別に実行します。
説明コードを実行する前に、正しい Python カーネルを選択していることを確認してください。この例では、Python 3.11.9 を使用します。
最初のコードスニペット: データセット内の指定されたパスにデータを書き込みます。
import os # 宛先パスとファイル名を定義します file_path = "/mnt/data/dataset02/file02.txt" # ディレクトリが存在することを確認します。存在しない場合は作成します。 os.makedirs(os.path.dirname(file_path),exist_ok=True) # 内容を書き込みます content = "Hello World!" try: with open(file_path, "w", encoding="utf-8") as file: file.write(content) print(f"ファイルが正常に {file_path} に書き込まれました") except Exception as e: print(f"ファイルの書き込みに失敗しました: {str(e)}")出力が
ファイルが正常に /mnt/data/dataset02/file02.txt に書き込まれましたの場合、書き込み操作は成功しました。2 番目のコードスニペット: データセット内の指定されたパスからデータを読み取ります。file_path = "/mnt/data/dataset02/file02.txt" with open(file_path, "r") as file: content = file.read() content出力が
'Hello World!'の場合、読み取り操作は成功しました。
3. スケジューリングの構成
Notebook ノードの右側で、Scheduling Settings をクリックし、データセットオプションを追加します。個人開発環境インスタンスに設定されているものと同じパラメーターを使用します。
詳細設定の例
データセットを設定する際、[詳細設定] を使用して、JSON 形式で関連パラメータをカスタマイズできます。
-
ノード用のデータセットの構成を行う際、[詳細設定] を使用して、OSS データの読み取りおよび書き込みに使用するツールとパラメータ、または NAS ファイルシステムでのデータの読み取りおよび書き込み用の設定を指定できます。
-
パーソナル開発環境用のデータセットの構成を行う際、[詳細設定] で、NAS ファイルシステムでのデータの読み取りおよび書き込み用の設定を指定できます。
ossfs 2.0 を使用した OSS のマウント
ossfs 2.0 は、高性能なアクセスを実現するために OSS をマウントするクライアントです。高いシーケンシャル読み取り/書き込みスループットを実現し、OSS 帯域幅を最大限に活用します。AI トレーニングやビッグデータ処理など、高いシーケンシャル I/O パフォーマンスを必要とするコンピューティング集約型アプリケーションに適しています。これらのワークロードシナリオには、主にシーケンシャルおよびランダムな読み取りとシーケンシャル (追加のみ) 書き込みが含まれ、完全な POSIX セマンティクスは必要ありません。
Advanced Settings では、高度なパラメーターを設定できます。 複数のオプションはコンマ (,) で区切ります。 高度なパラメーターの使用方法およびその他の設定オプションについては、「ossfs 2.0 マウントオプション」をご参照ください。 以下に、一般的なシナリオの例をいくつか示します。
-
不変のデータソース:読み取るすべてのファイルがタスク中に変更されない場合、キャッシュの有効期間を長く設定することで、メタデータリクエストの数を減らすことができます。典型的なシナリオは、既存のファイルのバッチを読み取り、処理後に新しいファイルのバッチを生成することです。
{"mountOssType": "ossfs", "attr_timeout": "7200"} -
高速な読み取りおよび書き込み操作:短いメタデータキャッシュ時間を使用して、キャッシュ効率とデータの適時性のバランスを取ります。
{"mountOssType": "ossfs", "attr_timeout": "3", "negative_timeout": "0"} -
分散タスクの一貫性のあるビュー:デフォルトでは、ossfs はメタデータキャッシュに基づいてファイルデータを更新します。次の設定を使用して、複数のノード間で同期されたビューを実現します。
{ "mountOssType": "ossfs", "negative_timeout": "0" } -
開いているファイルが多すぎることによるメモリ不足 (OOM):タスクの同時実行性が高く、同時に開いているファイルの数が多いと、メモリ不足 (OOM) の問題を引き起こす可能性があります。次の設定を使用して、メモリ負荷を軽減します。
{"mountOssType": "ossfs", "readdirplus": "false", "inode_cache_eviction_threshold": "300000"}
ossfs 1.0 を使用した OSS のマウント
ossfs 1.0 は、OSS バケットを Linux システム上のローカルファイルシステムとしてマウントします。ossfs 2.0 と比較して、ossfs 1.0 はファイル操作をより包括的にサポートします。ossfs 2.0 でファイル操作の非互換性が発生した場合は、代わりに ossfs 1.0 を使用してみてください。
ossfs 1.0 を使用したマウントに必要なパラメータの詳細については、「ossfs 1.0 マウントオプション」をご参照ください。
JindoFuse を使用した OSS のマウント
JindoFuse コンポーネントを使用して、OSS データセットをコンテナ内の指定されたパスにマウントできます。このツールは、次のシナリオに適しています。
-
OSS データをローカルデータセットのように読み取りたい場合、またはデータセットが JindoFuse のローカルキャッシュアクセラレーションの恩恵を受けるのに十分小さい場合。
-
OSS にデータを書き込む必要がある場合。
で、Advanced Settings の詳細パラメーターを設定できます。 複数のオプションは、コンマ (,) で区切ります。 次のコードは一例です。 パラメーターの説明およびその他の設定オプションについては、「JindoFuse ユーザーガイド」と「JindoFuse を使用したデータのマウントとアクセス」をご参照ください。
現在、DataWorks は key=value 形式のパラメータのみをサポートしています。
{
"mountOssType": "jindofuse",
"fs.oss.download.thread.concurrency": 16,
"fs.oss.upload.thread.concurrency": 16,
"attr_timeout": 3,
"entry_timeout": 0,
"negative_timeout": 0
}
NAS データセットの使用
NAS ベースのデータセットの場合、NFS ベースの Apsara File Storage NAS (NAS) ファイルシステムにアクセスするための設定 (nasOptions パラメータを使用) を指定できます。次のコードは、デフォルト設定を示しています。パラメーター値をカスタマイズするには、「NFS ファイルシステムの手動マウント」をご参照ください。
-
マウントできるのは、NFS プロトコルを使用する NAS ファイルシステムのみです。
-
NAS の場合、サポートされている詳細設定パラメーターは
nasOptionsのみです。NAS マウントパラメーターをカスタマイズするには、[詳細設定] を{"nasOptions": "<ParameterName1=ParameterValue>,<ParameterName2=ParameterValue>,..."}に設定します。
{"nasOptions": "vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport"}