10 億レベルの大規模テーブルのミリ秒相関である Litchi Micro-class は、Tencent クラウド データ ウェアハウス Doris の統合リアルタイム データ ウェアハウス構築実践に基づいています。

ガイド

Tencent のクラウド データ ウェアハウスである Doris は、Litchi Microclass による標準化され統合されたリアルタイム データ ウェアハウス プラットフォームの構築を支援しました。現在、Tencent Cloud Data Warehouse Doris は、Litchi Micro クラス内のビジネス シナリオの 90% 以上をサポートしており、全体的なクエリ応答はミリ秒単位で達成でき、データの適時性は T+1 から分に向上しています。開発効率は50%を達成し、さまざまなビジネスシナリオのニーズに対応し、コスト削減と効率向上を達成した成長により、Shifang Ronghai のデータ部門から高く評価されました。

著者|Litchi Micro-class Data Central Group リーダー、Chen Cheng

Shenzhen Shifang Ronghai Technology Co., Ltd.は2016年に設立され、デジタル職業オンライン教育の大手企業であり、その事業内容は「デジタル職業スキルコース、知識共有プラットフォーム「Litchi Micro Class」、スマート教育ソリューション「Nuwa Cloud Classroom」をカバーしています。 「 」は、デジタル時代におけるユーザーのスキルアップとキャリアアップを支援するために、さまざまなデジタルリテラシーとデジタルスキルコースサービスを開始しました。2016年に開始したライチマイクロクラスは、中国でトップの知識共有プラットフォームに成長します。 Wayun教室は「教育とトレーニング」の統合モードを実現し、中国におけるオンライン教育と実践運営の脱線のギャップを埋めました。

事業紹介  

Litchi Micro-class は、Shenzhen Shifang Ronghai Technology Co., Ltd. に属し、無料で使用できるオンライン教育プラットフォームです。ライチのマイクロクラスには、ライブビデオ、録画ビデオ、音声などの形式を含む大量の知識コンテンツがあります。テクノロジーとデータの強化を通じて、ライチマイクロレクチャーの継続的なイノベーションが促進され、マイクロレクチャープラットフォームとビデオのイノベーションと販売におけるパートナーへの強力なサポートも提供されます。ビジネスを効率的に推進するには、ビジネスを運営する過程でユーザーを総合的に分析する必要があります。データプラットフォームは、さまざまなデータソースからのデータを統合し、データ資産を統合して形成し、ユーザーの完全なリンクライフサイクル、リアルタイムのインジケーター分析、タグサークルの選択などの分析サービスをビジネスに提供することを目的としています。

初期のアーキテクチャと問題点

56a157f3c7e657abc833d2694efe2e41.png

図1

初期のアーキテクチャでは、Hadoop エコシステム コンポーネントを選択し、Spark バッチ コンピューティング エンジンをコアとして独自のオフライン データ ウェアハウス アーキテクチャを構築し、Flink コンピューティング エンジンに基づいてリアルタイム処理を実行しました。ソースから収集されたビジネス データとログ データは、リアルタイム リンクとオフライン リンクに分割されます。リアルタイム部分では、ビジネス データベース データは Binlog を介してアクセスされ、ログ データは Flume-Kafka- を使用してリアルタイムで収集されます。シンクとフリンク データ計算を Kafka と MySQL に書き込みます。リアルタイム データ ウェアハウス内では、データ階層化の理論に従って、データを最大限に再利用します。

オフライン部分では、Sqoop と DataX を使用して完全および増分ビジネス データベースのデータを定期的に同期し、ログ データは Flume とログ サービスを通じて収集されます。さまざまなデータ ソースがオフライン データ ウェアハウスに入力される場合、まず Spark/Tez 上の Hive を使用してタイミング スケジューリング処理を行い、次にディメンションに従って ODS、DWD、DWS、ADS レイヤー データをモデル化します。これらのデータは HDFS とオブジェクト ストレージ COS に保存されます。最後に、Presto はデータのクエリと表示に使用され、Metabase は対話型の分析サービスを提供するために使用されます。同時に、データの整合性を確保するために、リアルタイムデータをオフラインデータで定期的に上書きします。

問題点と課題: Hadoop をベースにした初期のアーキテクチャは、初期のニーズを満たすことができますが、より複雑な分析要求に対処するには十分な力を持っていると思われます。ビジネスを強化し、ユーザー エクスペリエンスを向上させるために、ビジネス側もリアルタイム データ、可用性、応答速度に対するより高い要件を提示しています。これに関連して、初期のアーキテクチャによって明らかになった問題がますます明らかになりました。

1) コンポーネントが多く、メンテナンスが複雑で、運用保守が非常に困難

2) データ処理リンクが長すぎるため、クエリの待ち時間が長くなります。

3) 新たなデータ要件が発生した場合、その影響は全身に及び、必要な開発サイクルは比較的長い

4) データの適時性が低く、T+1 のデータ要件しか満たせないため、データ分析の効率も低くなります。

テクノロジーの選択  

データの規模と初期アーキテクチャに存在する問題点を評価した結果、新しいデータ プラットフォームを構築するためにリアルタイム データ ウェアハウスを導入することを決定すると同時に、新しい OLAP エンジンが次の機能を備えられることを期待しています。

1) 結合操作をサポートし、さまざまなビジネスユーザーの柔軟な分析ニーズに対応できます。

2) 日常業務のレポート分析ニーズを満たすことができる、高同時クエリをサポートします。

3) 強力なパフォーマンスで、大規模なデータシナリオでも高速応答を実現できます。

4) 運用保守が簡単で、運用保守の人員の投入とコストを削減し、コスト削減と効率向上を実現します。

5) 統合されたデータウェアハウス構築により、煩雑なビッグデータソフトウェアスタックを簡素化

6) コミュニティが活発で、使用中に問題が発生した場合はすぐにコミュニティに連絡できます

上記の要件に基づいて、私たちはすぐに 2 つのオープンソース OLAP エンジン、Apache Doris と ClickHouse を位置づけました。どちらも現在広く使用されており、高い評価を得ています。調査では、ClickHouse はワイド テーブル クエリで優れたパフォーマンスを発揮し、書き込み速度が速く、大量のデータ更新には非常に実用的ですが、結合シナリオでは通常、より良いパフォーマンスを達成するために追加のチューニングが必要であることがわかりました。ほとんどのビジネス シナリオでは、詳細なデータに基づいて大量のデータを結合する必要がありますが、Apache Doris は強力なマルチテーブル結合機能と優れた高同時実行機能を備えており、日次ビジネス レポート分析のニーズを十分に満たすことができます。さらに、Apache Doris は、リアルタイム データ サービス、インタラクティブなデータ分析、オフライン データ処理の複数のシナリオを同時にサポートでき、統合されたデータ ポータルを実現できるマルチ カタログをサポートしており、これらの機能が当社が検討しているコア機能です。

同時に、Tencent Cloud Data Warehouse の Doris という製品についても学びました。Tencent Cloud Data Warehouse Doris は、オンライン ビジネスと多次元分析をサポートするリアルタイム データ ウェアハウス製品として、オープン ソースの Apache Doris と 100% 互換性があり、さまざまなビジネス データ分析シナリオを満たし、企業がデータ分析を迅速に構築できるように支援します。クラウド上のプラットフォーム。

マルチソース データ処理の点で、Flink はリアルタイム データ処理の需要を満たす優れたパフォーマンスを備えており、Tencent Cloud Big Data EMR-Flink を選択しました。Tencent Cloud EMR は、クラウドネイティブ テクノロジーと汎 Hadoop エコロジカル オープンソース テクノロジーをベースとした、安全、低コスト、信頼性の高いオープンソース ビッグ データ プラットフォームであり、豊富なコンポーネント オプションを提供します。クラウドネイティブのビッグデータ製品として、Tencent Cloud Data Warehouse Doris と EMR はシームレスに統合およびリンクできます。

上記の利点に基づいて、私たちは最終的に Tencent Cloud Big Data と協力し、Tencent Cloud Data Warehouse Doris + EMR を使用して新しいリアルタイム データ ウェアハウス アーキテクチャ システムを構築することを選択しました。

新しい構造とスキーム

ef910f0ce4b274a397398176401db903.png

図2

新しいアーキテクチャでは、Tencent Cloud Data Warehouse Doris と Tencent Cloud EMR-Flink を使用してリアルタイム データ ウェアハウスを構築し、さまざまなデータ ソースからのデータは Flink CDC または Flink によって処理され、Kafka と Doris に保存されます。統合されたクエリ サービス。データ同期に関しては、RDS データは通常 Flink CDC を通じてリアルタイムで Doris に同期され、Kafka ログ データは Flink を通じて Doris に処理され、重要なインデックス データは通常 Flink によって計算され、Kafka の階層化処理を通じて Doris に書き込まれます。

1) ストレージ媒体では、Tencent Cloud データ ウェアハウス Doris が主にストリーミング データとバッチ データの統合ストレージに使用されます。

2) アーキテクチャの利点: 標準化され統合されたリアルタイム データ ウェアハウス プラットフォームの構築に成功し、Tencent Cloud Data Warehouse Doris のマルチ カタログ機能により、さまざまなデータ ソースのエクスポートを統合し、フェデレーション クエリを実現できます。同時に、外部テーブルを挿入することで高速なデータの同期と修復が実行され、まさに統合されたデータ ポータルが実現されます。

3) データのリアルタイム パフォーマンスが効果的に向上 Flink + Doris アーキテクチャにより、リアルタイム パフォーマンスが初期の T+1 から分レベルの遅延まで短縮されます。強力な同時実行機能により、より多くのビジネス シナリオをカバーできます。

4) 運用保守コストを大幅に削減 Doris は FE と BE の 2 プロセスのみのシンプルなアーキテクチャであり、他のシステムに依存せず、またクラスタの拡張・縮小も非常に簡単で、ユーザは手間をかけずに拡張を実現できます。感知。

5) 開発サイクルが週レベルから日レベルに短縮され、開発サイクルが大幅に短縮され、開発効率が従来比50%向上しました。

経験を積む

1. データモデリング

Tencent Cloud Data Warehouse Doris の特性と組み合わせて、従来のデータ ウェアハウスと同様の方法でデータ ウェアハウスをモデル化しました。

1) ODS レイヤー: ODS レイヤーのログデータは、Duplicate モデルのパーティションテーブルを選択します. パーティションテーブルはデータ修復に便利であり、Duplicate モデルは不必要な圧縮も削減できます。ODS レイヤーのビジネス データベース データは独自のデータ モデルを採用しています (ビジネス データベース MySQL の単一テーブル データは Flink CDC を通じてリアルタイムで Doris に同期され、Kafka ログ データは Flink によってクリーンアップされ、Doris のルーチン ロードを通じて ODS レイヤーとして Doris に書き込まれます)。 、特定のビジネス シナリオに従ってハッシュ キーによって配布されます。次のビジネス シナリオから選択します。

マシン リソースを考慮する場合、均等に分散された KEY を選択してタブレット データを均等に分散できるようにすることで、クエリ中に各 BE リソースを最大限に活用してバレル効果を回避できます。

大きなテーブルの結合パフォーマンスを考慮する場合は、Colocate Join 機能に基づいてテーブルを作成し、結合クエリをより効率的に行うことができます。

Doris 1.2 バージョンでは、Unqiue モデルが Merge On Write のサポートを開始し、Unique モデルのクエリ パフォーマンスがさらに向上しました。

2) DWD レイヤー: Flink を介した結合拡張処理を通じてデータが Doris と Kafka に書き込まれるシナリオでは、Unique データ モデルが選択されます。

高頻度のクエリを含む幅の広いテーブルの場合は、Doris の集計モデルを選択し、REPLACE_IF_NOT_NULL フィールド タイプを使用し、複数のファクト テーブルを挿入します。Doris の圧縮メカニズムを通じて、履歴データが時間内に更新されないという問題を効果的に軽減できます。フリンク状態 TTL。

3) DWS 層と ADS 層: 独自のデータ モデルが主に使用され、DWS 層はデータ量に応じて日と月で分割されます。さらに、INSERT INTO ステートメントを使用して 5 分間のタスクのスケジュール設定と T+1 タスクの修復を行い、データ ウェアハウスの階層化を実行します。これにより、要件の迅速な開発とリアルタイムのデータ修復が容易になります。Duplicate モデルのデータ テーブルについては、ロールアップ マテリアライズド ビューを作成します。これにより、マテリアライズド ビュー クエリをヒットすることで、上位テーブルのクエリ効率が向上します。

2. データ開発

ライチのマイクロコース ビジネスでは、オペレーターは、ライブ コース情報の調整や列名の変更などの操作を行うことがよくあります。ディメンションは急速に変化するが、ビジネスに適切に対応するために、ワイド テーブルのディメンション列が時間内に更新されないシナリオの場合Doris Aggregate モデルの REPLACE_IF_NOT_NULL フィールド機能は、Flink CDC マルチテーブルを通じて Doris ディメンション テーブルの一部の列に書き込まれます。コース ディメンション テーブルのデータが変更された場合は、上位ディメンション (列とライブ ルーム) をクエリし、ディメンション テーブルを完成させてから、そのデータを Doris に挿入する必要があります。上位ディメンション (列とライブ ルーム) が変更された場合は、次の操作を行う必要があります。ドリルダウン カリキュラムをクエリし、対応するコース ID を入力して、データを Doris に挿入します。このようにして、ディメンション テーブル内のすべてのフィールドのリアルタイム パフォーマンスが保証されます。データがクエリされると、ワイド テーブルを使用してディメンション テーブルが関連付けられ、データを表示するディメンション フィールドが完成します。   

4ecc46a43006a30771718783d97294d4.png

画像3

3. ライブラリテーブルの設計

初期設計段階では、Tencent Cloud Data Warehouse Doris が提供するコロケーション結合機能をより有効に活用するために、次の図に示すように、ファクト テーブルの主キーを特別に設計しました。

d904dc889e0b038b870563ded98bb6ad.jpeg

図4

業務データベースではカリキュラムAとカリキュラムBの関係はA.id=B.lecture_idとなっており、コロケーション結合を実現するためにBのハッシュキーで配布されたものをlecture_idとして設定します。複数ファクトのテーブルに直面した場合は、最初にコロケーション結合を実行し、次にバケット シャッフル結合をディメンション化して、高速なクエリ応答を実現します。この方法を使用すると、選択したlecture_idがDISTRIBUTED BYの場合、データベースの主キーIDが均一に分散されず、データ量が多い場合にデータの偏りが発生する可能性や、各マシンのタブレットサイズが不均一になる可能性があります。同時実行性の高いクエリの間、BE マシンのリソースのバランスが崩れ、クエリの安定性に影響を及ぼし、リソースの無駄が発生する可能性があります。

上記の問題に基づいて、調整を試み、クエリ効率とマシン リソース占有率を評価および比較検討し、最終的にクエリ効率にできるだけ影響を与えずにリソース使用率を可能な限り改善することにしました。リソース使用率の観点からは、テーブルを構築するときに colocate_with 属性を使用して、異なる数と種類の分散キーを持つ異なるグループを作成し、マシン リソースを最大限に活用できるようにします。

クエリ効率の観点から、ビジネスシナリオやニーズに合わせてプレフィックスインデックスのフィールドの順序を調整し、必須や高頻度のクエリ条件の場合はフィールドをUNIQUE KEYの前に配置し、フィールドをUNIQUE KEYから順に設計します。寸法に応じて高から低まで。次に、マテリアライズド ビューを使用してフィールドの順序を調整し、クエリにプレフィックス インデックスをできる限り使用してデータ クエリを高速化します。さらに、月と日ごとにデータ量を分割し、詳細データをバケット化し、合理的なデータベース テーブル設計を通じて FE メタデータへの負担を軽減します。

4. データ管理

データ管理に関しては、次のことを実施しました。

1) 監視と警告: 重要な単一テーブルについては、通常、Tencent Cloud データ ウェアハウス Doris を通じて外部テーブルを作成し、データ品質監視を通じてビジネス データベース データと Doris データを比較して、データ品質検査と警告を実行します。

2) データのバックアップとリカバリ: データの偶発的な削除や損失を避けるために、定期的に Doris データを HDFS にインポートしてバックアップします。たとえば、Flink 同期タスクが何らかの理由で失敗し、チェックポイントから開始できない場合、同期のために最新のデータを読み取ることができ、失われた履歴データは外部テーブルを通じて修復されるため、同期タスクを迅速に復元できます。

特典の概要

新しいアーキテクチャでは、Hadoop エコロジーから Flink + Doris に完全に移行し、セルフサービス レポート、セルフサービス データ抽出、データ大画面、ビジネス警告などのさまざまなデータ アプリケーションを上位層に構築しました。 Dorisアプリケーション層インターフェイスを通じて外部サービス プロジェクトを統合 API クエリを提供します。新しいアーキテクチャの適用により、多くのメリットももたらされました。Litchi Micro クラスのビジネス シナリオの 90% 以上をサポートし、全体的なクエリ応答をサポートします。ミリ秒レベルに達する可能性があります。

1) 数千万、さらには数億の大規模なテーブル関連付けクエリをサポートし、2 秒、さらにはミリ秒の応答を実現できます。

2) Doris はデータ ソースのエクスポートを統合し、クエリ効率を大幅に向上させ、複数データのフェデレーション クエリをサポートし、複数データ クエリの複雑さとデータ リンク処理のコストを削減します。

3) Doris は、ビッグ データ アーキテクチャ システムを大幅に簡素化するシンプルなアーキテクチャを備えており、MySQL 構文との互換性が高く、開発者のアクセス コストを大幅に削減します。

これからの計画

Tencent Cloud データ ウェアハウス Doris の導入後、Litchi Micro-class は社内で広く使用され、さまざまなビジネス シナリオのニーズを満たし、コストを削減し、効率を向上させ、Shifang Ronghai のデータ部門から高く評価されています。将来的には、Tencent Cloud Data Warehouse Doris が、固有モデルの部分的な列更新、単一テーブルのマテリアライズド ビューのコンピューティングの強化、自動増分更新を備えた複数テーブルのマテリアライズド ビューなど、リアルタイム データ処理シナリオでの機能がさらに向上すると予想されます。 、など、継続的な反復更新により、リアルタイム データ ウェアハウスの構築が簡単かつ使いやすくなります。最後に、問題への素早い対応と積極的な技術サポートをしていただいた Tencent Cloud Big Data チームと selectDB チームに感謝いたします。同時に、Tencent Cloud は引き続き製品を改良し、より多くの業界シナリオにメリットをもたらすクラウド実践の道を模索していきます。

おすすめ

転載: blog.csdn.net/cloudbigdata/article/details/131336150