データ開発時に、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 データセットを使用します。China (Shanghai) リージョンに
datasets-ossという名前のバケットを作成し、/dataset01/v1ディレクトリを作成します。 -
データセットを作成します。
この例では、
datasets-ossという名前の OSS データセットを作成し、OSS パスoss://datasets-oss.oss-cn-shanghai.aliyuncs.com/dataset01/v1/を/mnt/data/dataset01にマウントします。
1. ノード向けデータセットの設定
Shell ノードまたは Python ノードの デバッグ設定 で、datasets-oss データセットを設定します。
-
ノードを公開する前に、スケジューリング設定 セクションにもデータセットを追加する必要があります。
-
データセットを使用するには、ノードに少なくとも 0.5 コンピューティングユニット (CU) を割り当てる必要があります。
|
パラメータ |
説明 |
|
[データセット] |
現在のノードのコードからアクセスできるデータセットを指定します。
この例では、DataWorks で作成した OSS データセット |
|
[マウントパス] |
ノードのコードがデータセットにアクセスするために使用するパスです。このフィールドには、データセット定義時に設定した デフォルトのマウントパス が自動的に入力されます。 重要
同じノードに複数のデータセットをマウントする場合、マウントパスが競合しないようにしてください。 |
|
[詳細設定] |
このパラメータは任意です。OSS データにアクセスするためのツールとパラメータ、または NAS ファイルシステムにアクセスするための設定を JSON 形式で指定できます。
|
|
[読み取り専用] |
デフォルトでは、現在のノードでデータセットの読み書きが可能です。このノードに対してデータセットを読み取り専用に設定すると、ノードコードからマウントディレクトリにデータを書き込めません。書き込もうとすると、権限エラーが発生します。 |
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 bytes、権限:rwxrwxrwx)、終了コードが 0、経過時間が 0.741 s、ステータスが 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 ベースのデータセットを使用します。China (Shanghai) リージョンに
datasets-nasという名前の NAS データセットを作成し、NAS パスnas://****.cn-shanghai.nas.aliyuncs.com/mnt/dataset02/v1/を/mnt/data/dataset02にマウントします。
1. 個人開発環境向けデータセットの設定
個人開発環境のインスタンスを作成し、既存の NAS データセット datasets-nas を選択します。
設定ページで、[データセット] ドロップダウンリストから datasets-nas を選択し、対応するマウントパスを指定します。
|
パラメータ |
説明 |
|
[データセット] |
インスタンスのコードからアクセスできるデータセットを指定します。個人開発環境インスタンスで選択した VPC が NAS マウントターゲットに接続できることを確認してください。 この例では、DataWorks で作成した NAS データセット |
|
[マウントパス] |
インスタンスのコードがデータセットにアクセスするために使用するパスです。 この例では、NAS データセットパス 重要
個人開発環境の同一インスタンスに複数のデータセットをマウントする場合、マウントパスが競合しないようにしてください。 |
|
[詳細設定] |
このパラメータは任意です。JSON を使用して、NFS プロトコルを使用する Apsara File Storage NAS (NAS) ファイルシステムにアクセスするための設定 (nasOptions パラメータ) を指定できます。次のコードはデフォルト設定を示します。「NFS ファイルシステムを手動でマウント」も参照して、パラメータ値をカスタマイズできます。 重要
|
|
[読み取り専用] |
デフォルトでは、インスタンスでデータセットの読み取りと書き込みができます。インスタンスに対してデータセットを読み取り専用に設定すると、インスタンス内のコードからマウントディレクトリにデータを書き込めません。書き込もうとすると、権限エラーが発生します。 |
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"The file is successfully written to {file_path}") except Exception as e: print(f"Failed to write the file: {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 を使用します。
1 つ目のコードスニペット:データセット内の指定パスにデータを書き込みます。
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"The file is successfully written to {file_path}") except Exception as e: print(f"Failed to write the file: {str(e)}")出力が
The file is successfully written to /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 ノードの右側で スケジューリング設定 をクリックし、データセットのオプションを追加します。個人開発環境インスタンスに設定したものと同じパラメータを使用してください。
詳細設定の例
データセットを設定する際に、JSON 形式で詳細設定を指定して関連パラメータをカスタマイズできます:
-
ノード向けデータセットの設定時に、詳細設定で OSS データの読み書きに使用するツールとパラメータ、または NAS ファイルシステム内のデータの読み書きに使用する設定を指定できます。
-
個人開発環境向けデータセットの設定時に、詳細パラメータで NAS ファイルシステム内のデータの読み書きに使用する設定を指定できます。
ossfs 2.0 を使用した OSS のマウント
ossfs 2.0 は、OSS をマウントして高性能にアクセスするためのクライアントです。高いシーケンシャル読み取り/書き込みスループットを実現し、OSS の帯域幅を最大限に活用します。AI トレーニングやビッグデータ処理など、高いシーケンシャル I/O 性能を必要とする計算集約型アプリケーションに適しています。これらのワークロードシナリオは主に、シーケンシャル/ランダム読み取りと、シーケンシャル (追記のみ) 書き込みを含み、完全な POSIX セマンティクスは必要としません。
詳細設定 で、詳細パラメータを設定できます。複数のオプションはカンマ (,) で区切ってください。詳細パラメータの使用方法と設定可能なオプションの詳細については、「ossfs 2.0 のマウントオプション」をご参照ください。次の例は、一般的なシナリオをいくつか示します:
-
不変データソース:読み取るすべてのファイルがタスクの実行中に変更されない場合、キャッシュ時間を長く設定してメタデータ要求数を削減できます。典型的なシナリオは、既存ファイルのバッチを読み取り、処理後に新しいファイルのバッチを生成するケースです。
{"mountOssType":"ossfs", "attr_timeout": "7200"} -
高速な読み書き:メタデータのキャッシュ時間を短くして、キャッシュ効率とデータの即時性のバランスを取ります。
{"mountOssType":"ossfs", "attr_timeout": "3", "negative_timeout":"0"} -
分散タスクでの一貫したビュー:デフォルトでは、ossfs はメタデータキャッシュに基づいてファイルデータを更新します。次の設定を使用して、複数ノード間で同期されたビューを実現します。
{ "mountOssType":"ossfs","negative_timeout": "0", "close_to_open":"false"} -
多数のファイルオープンによるメモリ不足 (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 にデータを書き込む必要がある場合。
詳細設定 で、詳細パラメータを設定できます。複数のオプションはカンマ (,) で区切ってください。次のコードは例です。パラメータの説明とその他の設定オプションについては、JindoFuse User Guide および Use JindoFuse to mount and access data を参照してください。
現在、DataWorks は key=value 形式のパラメーターのみをサポートしています。
{
"mountOssType":"jindofuse",
"fs.oss.download.thread.concurrency": "2 × number of CPU cores",
"fs.oss.upload.thread.concurrency": "2 × number of CPU cores",
"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"}
よくある質問
OSS データセットからデータを読み取る際に "FileNotFoundError: /etc/oss-secret/AccessKeyId" エラーが表示される場合の対処方法
このエラーは通常、DataWorks リソースグループが OSS にアクセスするために必要な認証情報の取得に失敗したことを示します。問題を切り分けるには、次の手順を実行してください:
-
データセット設定パネルで OSS の認可を完了していることを確認してください。データセットを初めて使用する際に、この認可を求めるプロンプトが表示されます。
-
サーバーレスリソースグループが正常な状態であり、停止されていないことを確認してください。
-
認可とリソースグループの状態がいずれも正常であるにもかかわらずエラーが解消しない場合は、テクニカルサポートに連絡し、ossfs の認証情報注入プロセスのトラブルシューティングを依頼してください。