Hologres が MaxCompute の高性能ネイティブ アクセラレーションの中核原理を公開

Hologres が MaxCompute の高性能ネイティブ アクセラレーションの中核原理を公開

Hologres(中国語名:Interactive Analysis)は、Alibaba Cloud が開発したワンストップのリアルタイム データ ウェアハウスです。このクラウドネイティブ システムは、リアルタイム サービスとビッグ データ分析シナリオを統合します。 PostgreSQL プロトコルと完全に互換性があり、ビッグデータ エコシステムにシームレスに接続されます。同じデータ アーキテクチャを使用して、リアルタイム書き込み、リアルタイム クエリ、リアルタイム オフライン フェデレーション分析をサポートできます。その出現により、ビジネス アーキテクチャが簡素化されると同時に、ビジネスにリアルタイムの意思決定機能が提供され、ビッグ データがより大きな商業的価値を発揮できるようになります。アリババグループの誕生からクラウドでの商用化に至るまで、ビジネスの発展とテクノロジーの進化に伴い、Hologres もコアテクノロジーの競争力を継続的に最適化してきました。 Hologres についてより多くの方に知っていただくために、高性能ストレージ エンジンから高効率クエリ エンジン、高スループット書き込みから高 QPS クエリなど、Hologres の基盤となる技術原理シリーズを継続的に公開し、あらゆる側面から Hologres を解釈していく予定です。引き続きご注目ください!

今回は、Hologres の高性能ネイティブ高速クエリ MaxCompute の技術的原理を分析します。

データ収集方法が充実し、業界データが大量に蓄積されるにつれて、データ規模は従来のソフトウェア業界では耐えられないほどの大量データ(TB、PB、EB)のレベルにまで成長しました。こうして、MaxCompute (旧称 ODPS) が誕生しました。バッチ構造化データの保存と計算に取り組んでおり、大規模なデータ ウェアハウス ソリューションと分析およびモデリング サービスを提供しています。これは、高速で完全に管理された EB レベルのデータ ウェアハウス ソリューションです。

Hologres は、オフラインのビッグ データ シナリオで MaxCompute と自然かつシームレスに統合されます。データをインポートまたはエクスポートせずに、MaxCompute クエリを高速化できます。さまざまな MaxCompute ファイル形式へのアクセスと完全に互換性があり、PB レベルのオフライン データのミリ秒レベルのインタラクティブな分析を実装します。これらすべては、Hologres の背後にある実行プログラム SQE (S クエリ エンジン) と切り離せません。 SQE は MaxCompute へのネイティブ アクセスを実装し、それを Hologres の高性能分散実行エンジン HQE の処理と組み合わせて究極のパフォーマンスを実現します。

Hologres は、次の利点により MaxCompute のクエリを高速化します。

高性能: MaxCompute データは、1 秒未満のクエリ パフォーマンスで直接高速化してクエリできます。 OLAP シナリオでは、アドホック クエリを直接実行できるため、ほとんどのレポート作成やその他の分析シナリオのニーズを満たすことができます。
低コスト:数年にわたる開発を経て、ユーザーは大量のデータを MaxCompute に保存し、冗長ストレージなしで直接アクセスできるようになりました。一方、ユーザーは、一部の高パフォーマンス シナリオのデータを SSD に移行し、レポートなどの分析シナリオのデータを MaxCompute に保存することで、コストをさらに削減できます。
より効率的:データを移行またはインポートする必要なく、MaxCompute へのネイティブ アクセスが実現されます。さまざまな MaxCompute ファイル形式やハッシュ/範囲クラスター化テーブルなどの複雑なテーブルに、高いパフォーマンスと完全な互換性でアクセスできるため、ユーザーの使用コストが削減されます。

SQEアーキテクチャの紹介

上の図に示すように、これが SQE の全体的なアーキテクチャです。全体のアーキテクチャも非常にシンプルであることがわかります。 MaxCompute データは Pangu に均一に保存されます。 Hologres が MaxCompute データのクエリを高速化するためにクエリを実行すると、Hologres 側では次の処理が行われます。

Hologres フロントエンドは、RPC を介して SQE マスターからメタ情報およびその他の関連情報を要求します。
Hologres Blackhole は、RPC を介して特定のデータ関連情報を取得するように SQE Executor に要求します。
SQE は次の 2 つの役割で構成されます。
SQE マスターはメタ関連のリクエストの処理を担当し、主にテーブルとパーティションのメタデータの取得、認証、およびファイルのシャーディングを担当します。
SQE のコアである SQE Executor は、ブロック キャッシュ、事前読み取り、UDF 処理、式プッシュダウン処理、インデックス処理、メトリック、メーターなどの機能を含む特定のデータ読み取り要求を担当します。

MaxCompute 外部テーブルエンジンのコア技術革新

SQE アーキテクチャは、主に次の技術革新の利点に基づいて、MaxCompute データの高性能な高速クエリを可能にします。

1) 抽象的な分散表示

Hologres は、MaxCompute の分散機能を組み合わせて、分散外部テーブルを抽象化し、MaxCompute 分散データへのアクセスをサポートします。現在、クラスター全体にわたる MaxCompute 分散 Pangu ファイルへのアクセスと、最も近い MaxCompute コンピューティング クラスターに基づく読み取りをサポートしています。

2) MaxCompute Metaとのシームレスな相互運用性、バージョンによるメタデータのキャッシュをサポート

SQE と MaxCompute の Meta はシームレスに相互運用し、Meta と Data のリアルタイム取得を可能にします。これは、外部スキーマのインポート コマンドを通じて、MaxCompute メタデータを Hologres の外部テーブルに自動的に同期することをサポートし、外部テーブルの自動作成と構造の自動更新を実装します。

3) UDF/式プッシュダウンをサポート

SQE は、UDF/式のプッシュダウンをサポートすることで、ユーザー定義の UDF 計算を実装します。式をプッシュダウンすると、無駄なデータ転送によって発生するオーバーヘッドが削減され、パフォーマンスがさらに向上します。

4) 非同期ORCリーダー、非同期プリフェッチ

現在、MaxCompute のデータのほとんどは ORC 形式です。 Hologres V0.10 以降では、Hologres の実行エンジンが更新され、非同期リーダーを使用して非同期読み取りの効率が向上し、非同期プリフェッチがサポートされて読み取りの待ち時間もさらに短縮されました。さらに、Hologres は、IO マージ、LazyRead、Lazy Decoding などの一連の最適化テクノロジをサポートしており、クエリ全体の IO レイテンシを削減して究極のパフォーマンスを実現します。

5) ブロックキャッシュをサポート

毎回ファイルからデータを取得するために IO を使用するのを避けるために、SQE は BlockCache を使用して頻繁に使用されるデータと最近使用されたデータをメモリに保存し、不要な IO を削減して読み取りパフォーマンスを高速化します。同じノードでは、同じアクセスされたデータが、一貫性のあるハッシュを通じてブロック キャッシュを共有します。たとえば、スキャン シナリオでは、パフォーマンスが 2 倍以上向上し、クエリ パフォーマンスが大幅に向上します。

6) スケジューリングのオーバーヘッドを削減するための常駐プロセス

従来のプロセス モデルやその他のアーキテクチャでは、動的プロセス作成やリアルタイム プロセス作成などのスケジューリング操作が必要であり、大きなスケジューリング オーバーヘッドが発生します。 SQE は、不要なスケジューリングのオーバーヘッドを回避するために常駐プロセス モードを採用しています。さらに、ブロックキャッシュのヒット率と有効利用率を大幅に向上させることができます。

7) ディスクオーバーヘッドを削減するためのネットワークシャッフル

ネットワーク シャッフルでは、高速かつ安定したフォールト トレラント メカニズムを提供する必要があります。ネットワーク シャッフルでは、データ シャッフルを完了するために、送信プロセスと受信プロセスの両方が同時に稼働していることを確認する必要があります。同様に、ディスクにフラッシュする従来の方法を使用して Network Shuffle を再試行すると、安定性は保証されますが、再試行プロセス中のディスク IO によりパフォーマンスのオーバーヘッドが大きく発生する可能性があります。この問題を解決するために、段階的なスケジューリングを最適化し、高速かつ安定したフォールト トレランスの問題を解決しました。

MaxCompute 外部エンジンが HQE にアップグレードされました

前述のように、MaxCompute 外部テーブルのクエリを高速化するために SQE を使用します。 SQE クエリのパフォーマンスは非常に優れていますが、Hologres と対話するときには、中間に RPC 対話のレイヤーが存在します。データ量が多い場合、ネットワークに一定のボトルネックが発生します。

そのため、Hologres の既存の機能に基づいて、Hologres V0.10 以降の実行エンジンを最適化し、Hologres HQE クエリ エンジンが MaxCompute テーブルを直接読み取ることをサポートしました。これにより、SQE 読み取りと比較してパフォーマンスが 30% 以上向上します。

これは主に以下の点によるものです。

1) SQE と Hologres 間の RPC 対話が節約されます。これは、1 つのデータ シリアル化とデシリアル化を節約することと同等であり、パフォーマンスがさらに向上します。

2) Hologres のブロック キャッシュを再利用できるため、2 番目のクエリはストレージにアクセスする必要がなくなり、ストレージ IO を回避し、メモリから直接データにアクセスして、クエリの速度を向上させることができます。

3) 既存のフィルター プッシュダウン機能を再利用して、処理する必要があるデータの量を削減できます。

4) スキャンのパフォーマンスをさらに高速化するために、基盤となる IO 層で事前読み取りとキャッシュが実装されています。

以下は、顧客の実際のオンライン ビジネス クエリのパフォーマンス データです。

817 個の SQL ステートメントが実行され、全体的なパフォーマンスが 70% 向上し、長いクエリでは 80% 以上向上しました。

注: この最適化は Hologres V0.10 で開始されました。ドキュメントを表示するにはクリックしてください。

MaxCompute アクセラレーション シナリオの選択

Hologres で MaxCompute クエリを高速化する方法には 2 つあります。

1) 外部テーブルを作成します (データは引き続き MaxCompute に保存されます)。 MaxCompute でクエリを実行する場合よりもパフォーマンスが 2 ~ 5 倍向上します。

2) 内部テーブルをインポートすると、外部テーブルに比べてパフォーマンスが約10~100倍向上します。

外部テーブルを作成する原理は、PostgreSQL の外部データ ラッパーであり、外部アクセス インターフェイスを介して外部に保存されたデータにアクセスします。外部テーブルを作成するには、より便利な IMPORT FOREIGN SCHEMA メソッドを使用することをお勧めします。これにより、メタデータの同期が簡素化され、フィールド タイプのマッピングについて心配する必要がなくなります。

外部テーブル結合を直接作成する方法は、実際にはクエリ エンジンの最適化機能を利用して効率を向上させますが、Hologres のインデックス作成機能は利用しません。したがって、外部テーブルを内部テーブルにインポートするときに、クエリ方法に応じて内部テーブルのインデックス構造を指定し、これらのインデックス機能を使用して、より高いクエリパフォーマンスを実現できます。このため、外部テーブルを内部テーブルにインポートすると内部テーブルのパフォーマンスが向上し、データ ウェアハウスのインデックス最適化機能を最大限に活用できます。

これら 2 つの方法の主な比較は次のとおりです。

上記の比較から次のことがわかります。

大量のデータがあり、高いパフォーマンス要件 (100 ミリ秒以内など) があり、クエリのレイテンシに敏感で、クエリに SLA 要件がある場合は、クエリ アクセス用にデータを Hologres 内部テーブルにインポートすることをお勧めします。
一時的な探索的分析や、レイテンシの影響を受けない社内業務の場合は、MaxCompute 外部テーブル方式を使用してデータの移動を減らすことができます。
上記のシナリオに加えて、特定のビジネス状況に基づいて適切な使用シナリオを選択できます。

MaxComputeとHologresの組み合わせ

上記では、Hologres 外部テーブル クエリ エンジンが MaxCompute クエリを高速化する方法についてのさまざまなシナリオについて説明しましたが、これはすべての種類のクエリが Hologres 外部テーブル エンジンでの実行に適していることを意味するものではありません。

Hologres は、インタラクティブな分析シナリオ向けに設計された同期クエリ エンジンです。これは、ビッグデータ入力とスモールデータ出力のシナリオを対象としており、通常はサービス提供および分析のシナリオで使用されます。 MaxCompute は、大規模なデータ処理シナリオ向けに設計された非同期データ処理エンジンです。これは、ビッグデータの入出力を伴うシナリオを対象としており、通常は ETL シナリオで使用されます。 ETL シナリオでは、ジョブは非同期に送信され、IO インターフェイスはスキャン用に最適化され、コンピューティング プロセスでは高可用性をサポートするために冗長ノード設計が必要であり、障害が発生した場合に自動的に再試行できるようにコンピューティング ステータスをディスクに書き込む必要があります。これらはHologresにはない機能です。したがって、MaxCompute と Hologres を組み合わせることで、データ処理とサービスのワンストップ エクスペリエンスが形成され、データの分離と冗長性が削減され、ビッグ データ ウェアハウスに合理的なソリューション アーキテクチャが提供され、リアルタイムのオフライン統合開発エクスペリエンスがサポートされます。

要約する

Hologres は、SQE と MaxCompute の緊密な統合を通じて、Hologres と MaxCompute の利点を最大限に活用します。究極のパフォーマンスを目標とし、MaxCompute データのクエリを直接加速し、ユーザーがより便利かつ効率的にインタラクティブな分析を実行できるようにします。同時に、分析コストも大幅に削減され、オフライン データ ウェアハウス サービスの統合も実現します。

<<:  CIO Timesと工業情報化部標準化研究所が共同で新創システム認証トレーニングを開始

>>:  プライベート クラウドは完璧ではありません。安全に展開するためにはこれらの点に注意してください。

推薦する

インターネット後半では、ARM クラウドが新たな活路となるでしょうか?

2018年を振り返ると、寒くて忘れられない年でした。過去 20 年間で、インターネット従事者をこれほ...

App.net: ウェブサイトの構築は広告の販売ではない

一般的に言えば、App.net と Twitter は同じ位置づけにあります。Web サイトにはソー...

Centos8にVDOをインストールして設定し、ストレージスペースを最適化する

[[400325]] Virtual Data Optimizer (VDO) は、透過的なデータ重...

Xiaomi ルーターが 404 ページを「ハイジャック」される危険にさらされる

最近、一部のメディアは、Xiaomiルーターが使用中にHTTP403および404ページをハイジャック...

Kubernetesのステートフルアプリケーション管理について話す

「Kubernetes ワークロード管理」では、主にステートレスアプリケーションの管理について紹介し...

AWS IoT デバイス管理の概要

AWS IoT Device Management を使用すると、大規模な IoT デバイスを簡単か...

Baidu 中国語単語分割ランキングアルゴリズムの実用的クラッキング

Baidu の中国語単語セグメンテーションは、SEO に携わる人にとっては間違いなく馴染み深いもので...

「知乎チャンネル配信戦略」を徹底分析!

ご質問がある場合は、Zhihu までお問い合わせください。このスローガンはますます多くの人々に知られ...

SEO 最適化におけるよくある間違いとその回避方法

SEO を行っている同僚たちは、常にウェブサイトのキーワードランキングを比較してきました。ランキング...

分析データの氾濫を克服するクラウドコンピューティングの役割

情報インフラストラクチャを近代化する戦略の一環として、企業はクラウド コンピューティングをより有効に...

raksmart: 米国西海岸サーバー、1G帯域幅で50Tトラフィックが449元から、1Gおよび10Gbps帯域幅無制限トラフィックプロモーション

コンピュータ ルーム (米国西海岸のサンノゼ) では、5 月に特別な独立サーバーのプロモーションを目...

APIServer ソースコード分析ルーティング登録

Kube APIServer と go-restful のエントリ ポイントの基本を理解したので、A...

PaaS は SaaS にとって大きな参入障壁であり、技術的なギャップなのでしょうか?

クラウド コンピューティングは、IaaS、PaaS、SaaS の 3 つの層に分かれています。多くの...

かわいいマーケティング手法

数日前、外で誰かを待っていて退屈していたとき、KFCのレストランに入り、誰かを待っている間にインター...