作者: チェヤン
以前のレビュー:
このシリーズでは、ACK Fluid に基づいてハイブリッド クラウド データ アクセス シナリオをサポートおよび最適化する方法を紹介します。関連記事を参照してください。
ACK Fluid に基づいたハイブリッド クラウドの最適化されたデータ アクセス (1): シナリオとアーキテクチャ
ACK Fluid に基づいたハイブリッド クラウドの最適化されたデータ アクセス (2): エラスティック コンピューティング インスタンスとサードパーティ ストレージ間のブリッジの構築
前回の記事「エラスティック コンピューティング インスタンスとサードパーティ ストレージ間のブリッジの構築」では、エラスティック コンピューティング インスタンス ECI および ECS とクラウド ストレージ システム間のアクセスと通信を実現できる ACK Fluid を介してサードパーティ分散ストレージにアクセスする方法を紹介しました。 . データ送信。クラウド移行の最初のフェーズである接続を実際に解決します。
運用環境では、クラウド コンピューティングによるオフクラウド ストレージ システムへのアクセスが標準になると、パフォーマンス、コスト、安定性を考慮する必要があります。たとえば、クラウド上のオフライン データにアクセスするための専用線の年間コストはいくらですか? クラウド コンピューティング タスクの消費時間と元の IDC コンピューティング タスクの間に大きなギャップはありますか? また、専用線に問題が発生した場合、クラウド上でのコンピューティングタスクの損失をどのように軽減するか?
この記事では、サードパーティのストレージ アクセスを高速化し、パフォーマンスの向上、コストの削減、専用線の安定性への依存を軽減する方法に焦点を当てます。
概要
クラウド コンピューティングが Kubernetes の標準化プロトコル PV ストレージ ボリュームを使用して企業のオフライン ストレージにアクセスできるとしても、パフォーマンスとコストの面での課題と要件を避けることはできません。
- 限られたデータ アクセス帯域幅と高い遅延:オンクラウド コンピューティングによるオフクラウド ストレージへのアクセスによって生じるデータ アクセスの遅延と帯域幅により、ハイ パフォーマンス コンピューティングに時間がかかり、コンピューティング リソースの使用率が低くなります。
- 冗長なデータ読み取りと高価なネットワーク コスト:深層学習モデルのハイパーパラメーター調整および自動パラメーター調整深層学習タスクの実行中に、同じデータが繰り返しアクセスされます。ただし、Kubernetes ネイティブ スケジューラーはデータ キャッシュのステータスを感知できないため、アプリケーションのスケジューリング結果は悪く、キャッシュは再利用できません。その結果、データを繰り返しプルするための外部ネットワークと専用線のコストが増加します。
- オフライン分散ストレージは同時データ アクセスのボトルネックであり、パフォーマンスと安定性の課題に直面しています。大規模なコンピューティング能力がオフライン ストレージに同時にアクセスし、ディープ ラーニング トレーニングの IO プレッシャーが増大すると、オフライン分散ストレージはパフォーマンスのボトルネックになりやすくなります。これはコンピューティング タスクに影響を与え、さらにはコンピューティング クラスター全体に障害が発生する可能性があります。
- ネットワークの安定性による深刻な影響:パブリック クラウドとデータ センター間のネットワークが十分に安定しないと、データ同期エラーが発生し、アプリケーションが使用できなくなります。
- データ セキュリティ要件:メタデータとデータは保護される必要があり、クラウド ディスクに永続化することは許可されません。
ACK Fluid は、JindoRuntime に基づいて PV ストレージ ボリュームの一般的な高速化機能を提供します。これは、PVC に適合するサードパーティ製ストレージをサポートし、分散キャッシュを通じてデータ アクセス アクセラレーション機能を簡単、迅速、安全に取得できます。これにより、次の利点が得られます。
1. 適応コストゼロ: CSI プロトコルに PVC のサードパーティ ストレージを実装するだけで済み、追加の開発を行わずにすぐに使用できます。
2. データ アクセス パフォーマンスが大幅に向上し、エンジニアリング効率が向上しました: a. アクセス ベースおよびポリシー ベースのデータ予熱により、クラウド下のデータにアクセスするパフォーマンスは、クラウド コンピューティング クラスター上のデータと同等になります。柔軟なデータ アクセス帯域幅により、高い同時実行性とデータ アクセスに対応でき、スループットを数百 Gbps まで高めることができ、容量をゼロにすることもでき、低コストと高スループットの動的なバランスを実現します。
c. データ キャッシュ アフィニティを意識したスケジューリングにより、ネットワークを越えたデータ アクセスを回避し、遅延を削減します。
3. ホットスポット データの繰り返し読み取りを回避し、ネットワーク コストを節約します。ホットスポット データは分散キャッシュを通じてクラウドに保存されるため、データ読み取りとネットワーク トラフィックが削減されます。
4. データ中心の自動運用と保守により、効率的なデータ アクセスが可能になり、運用と保守の効率が向上します。これには、データの繰り返しの取得を避けるための自動化およびスケジュールされたデータ キャッシュのウォームアップが含まれます。また、データ キャッシュの拡張、縮小、クリーンアップもサポートし、データ キャッシュの自動管理を実現します。
5. 分散メモリ キャッシュを通じてメタデータとデータがディスクにドロップされるのを回避し、より安全にします。データ セキュリティに敏感なユーザー向けに、ACK-Fluid は優れたパフォーマンスを備えた分散メモリ キャッシュを提供し、データがディスクにドロップされるというユーザーの心配を回避します。 。
概要: *ACK Fluidは、すぐに使用できる高性能、低コスト、自動化、およびデータ ディスク不要の*クラウド コンピューティング用サードパーティ ストレージ PVC へのアクセスの利点を提供します。
デモ
1. 前提条件
- ACK Pro バージョンのクラスターが作成されており、クラスターのバージョンは 1.18 以降です。特定の操作については、「ACK Pro Edition クラスターの作成[ 1]」を参照してください。
- クラウド ネイティブ AI スイートがインストールされ、ack-fluid コンポーネントがデプロイされました。重要: オープンソースの Fluid をインストールしている場合は、ack-fluid コンポーネントをデプロイする前にアンインストールしてください。
<!---->
- クラウド ネイティブ AI スイートがインストールされていません。インストール中に流体データ アクセラレーションを有効にします。特定の操作については、「Cloud Native AI Suite のインストール[ 2]」を参照してください。
- クラウド ネイティブ AI スイートがインストールされています。Container Service 管理コンソールのクラウド ネイティブ AI スイート ページに ack-fluid をデプロイします。
<!---->
- ACK クラスターは kubectl を介して接続されています。特定の操作については、「kubectl ツールを使用したクラスターへの接続[ 3]」を参照してください。
- アクセスする必要があるストレージ システムに対応する PV ストレージ ボリュームおよび PVC ストレージ ボリューム要求が作成されています。Kubernetes環境では、ストレージシステムごとにストレージボリュームの作成方法が異なるため、ストレージシステムとKubernetesクラスタ間の接続を安定させるために、対応するストレージシステムの公式ドキュメントに従って準備してください。注:ハイブリッド クラウドのシナリオでは、データのセキュリティとパフォーマンスを確保するために、データ アクセス モードを読み取り専用に構成することをお勧めします。
2. PV ストレージボリュームと PVC ストレージボリュームによって宣言された情報を照会します
以下のコマンドを実行して、Kubernetes の PV ストレージボリュームおよび PVC ストレージボリュームによって宣言された情報を照会します。
$ kubectl get pvc,pv
期待される出力:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/demo-pvc Bound demo-pv 5Gi ROX 19h
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
persistentvolume/demo-pv 30Gi ROX Retain Bound default/demo-pvc 19h
PV ストレージ ボリューム Demon-pv の容量は 30GB で、RWX アクセス モードをサポートし、PVC 名デモ -pvc を持つストレージ ボリューム ステートメントにバインドされており、通常どおり使用できます。
3. データセットとJindoRuntimeの作成
1) dataset.yaml ファイルを作成します。次の Yaml ファイルには、作成する 2 つの Fluid リソース オブジェクト、つまり Dataset と JindoRuntime が含まれています。
- データセット:マウントされる PVC ストレージ ボリュームの宣言情報。
- JindoRuntime:開始される JindoFS 分散キャッシュ システム構成 (キャッシュ システム ワーカー コンポーネントのコピー数と各ワーカー コンポーネントの最大利用可能なキャッシュ容量を含む)。
apiVersion: data.fluid.io/v1alpha1
kind: Dataset
metadata:
name: pv-demo-dataset
spec:
mounts:
- mountPoint: pvc://demo-pvc
name: data
path: /
accessModes:
- ReadOnlyMany
---
apiVersion: data.fluid.io/v1alpha1
kind: JindoRuntime
metadata:
name: pv-demo-dataset
spec:
replicas: 2
tieredstore:
levels:
- mediumtype: MEM
path: /dev/shm
quota: 10Gi
high: "0.9"
low: "0.8"
設定ファイル内のリソースオブジェクトの詳細パラメータについては、以下で説明します。
2) 次のコマンドを実行して、Dataset および JindoRuntime リソース オブジェクトを作成します。
$ kubectl create -f dataset.yaml
3) 以下のコマンドを実行してデータセットのデプロイ状況を確認します。
$ kubectl get dataset pv-demo-dataset
予期される出力: 説明: JindoFS キャッシュ システムの最初の起動にはイメージの取得プロセスが含まれます。ネットワーク環境などの要因により、これには 2 ~ 3 分かかる場合があります。データセットはバインド状態にあり、JindoFS キャッシュ システムがクラスター内で正常に起動されており、アプリケーション ポッドがデータセットで定義されたデータに正常にアクセスできることを示します。
4. キャッシュのウォームアップを実行するための DataLoad を作成します。
最初のアクセスはデータ キャッシュにヒットできないため、アプリケーション Pod のデータ アクセス効率が低い可能性があります。Fluid は、最初のデータ アクセスの効率を向上させるために、DataLoad キャッシュのウォームアップ操作を提供します。
1) dataload.yaml ファイルを作成します。コード例は次のとおりです。
apiVersion: data.fluid.io/v1alpha1
kind: DataLoad
metadata:
name: dataset-warmup
spec:
dataset:
name: pv-demo-dataset
namespace: default
loadMetadata: true
target:
- path: /
replicas: 1
上記のリソースオブジェクトの詳細なパラメータの説明は次のとおりです。
2) 次のコマンドを実行して DataLoad オブジェクトを作成します
$ kubectl create -f dataload.yaml
3) 以下のコマンドを実行して、DataLoad のステータスを確認します。
$ kubectl get dataload dataset-warmup
期待される出力:
NAME DATASET PHASE AGE DURATION
dataset-warmup pv-demo-dataset Complete 62s 12s
4) 以下のコマンドを実行してデータキャッシュの状態を確認します。
$ kubectl get dataset
期待される出力:
NAME UFS TOTAL SIZE CACHED CACHE CAPACITY CACHED PERCENTAGE PHASE AGE
pv-demo-dataset 10.96GiB 10.96GiB 20.00GiB 100.0% Bound 3m13s
DataLoad キャッシュのウォームアップ操作が完了すると、データ セットのキャッシュ データ量 (CACHED) がデータ セット全体のサイズに更新されます。これは、データ セット全体がキャッシュされたことを意味し、キャッシュのパーセンテージ (キャッシュされた割合) は 100.0% です。
5. アプリケーションコンテナを作成し、PV ストレージボリューム内のデータにアクセスします
1) 次の YAML を使用して pod.yaml ファイルを作成し、YAML ファイル内のclaimName 名を手順 2 で作成したデータセット名と同じになるように変更します。
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
command:
- "bash"
- "-c"
- "sleep inf"
volumeMounts:
- mountPath: /data
name: data-vol
volumes:
- name: data-vol
persistentVolumeClaim:
claimName: pv-demo-dataset # 名称需要与Dataset相同。
2) 以下のコマンドを実行してアプリケーション Pod を作成します
$ kubectl create -f pod.yaml
3) 次のコマンドを実行してポッドにログインし、データにアクセスします。
$ kubectl exec -it nginx bash
期待される出力:
# Nginx Pod中,/data目录下有一个名为demofile的文件,大小为11 GB。
$ ls -lh /data
total 11G
-rw-r----- 1 root root 11G Jul 28 2023 demofile
# 执行cat /data/demofile > /dev/null命令,将demofile文件中的内容读取并写入/dev/null设备中,用时11.004秒。
$ time cat /data/demofile > /dev/null
real 0m11.004s
user 0m0.065s
sys 0m3.089s
データセット内のすべてのデータは分散キャッシュシステムにキャッシュされているため、データを読み取る際には、リモートストレージシステムではなくキャッシュから読み取られるため、ネットワーク伝送が削減され、データアクセス効率が向上します。
関連リンク:
[1] ACK Pro バージョンのクラスターの作成https://help.aliyun.com/zh/ack/ack-managed-and-ack-dicate/user-guide/create-an-ack-managed-cluster-2#task- skz-qwk-qfb
[2] クラウド ネイティブ AI スイートのインストールhttps://help.aliyun.com/zh/ack/cloud-native-ai-suite/user-guide/deploy-the-cloud-native-ai-suite#task-2038811
[3] kubectl ツール* を介してクラスターに接続します。
オープンソース フレームワーク NanUI の作者がスチールの販売に切り替えたため、プロジェクトは中断されました。Apple App Store の無料リストのナンバー 1 はポルノ ソフトウェア TypeScript です。人気が出てきたばかりなのに、なぜ大手はそれを放棄し始めるのでしょうか。 ? TIOBE 10月リスト:Javaが最大の下落、C#はJavaに迫る Rust 1.73.0リリース AIガールフレンドにイギリス女王暗殺を勧められた男性に懲役9年の実刑判決 Qt 6.6正式リリース ロイター:RISC-Vテクノロジーが中米テクノロジー戦争の鍵となる 新たな戦場 RISC-V: 単一の企業や国に支配されない レノボ、Android PC の発売を計画