ACK Fluid に基づいたハイブリッド クラウドの最適化されたデータ アクセス (3): サードパーティ ストレージへの読み取りアクセスを高速化し、コストを削減し、並行して効率を向上させます。

作者: チェヤン

以前のレビュー:

このシリーズでは、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 ツール* を介してクラスターに接続します。

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dicate/user-guide/obtain-the-kubeconfig-file-of-a-cluster-and-use-kubectl-to-クラスターへの接続#task-ubf-lhg-vdb

オープンソース フレームワーク 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 の発売を計画
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/3874284/blog/10117044