ユーザー ケース | Ziroom マルチサービス シナリオでの Apache DolphinScheduler オフライン スケジューリングのアプリケーションと実践

ファイル

ユーザー事例 | Ziroom

Ziroom のビジネスの急速な発展に伴い、スケジューリング タスクの数は増え続け、10,000 を超えるタスクの在庫があるため、プラットフォームの安定性に対する要件がさらに高まっています。同時に、多くの非プロ開発者も、より「人に優しい」スケジューリング プラットフォーム エクスペリエンスを必要としています。

こうしたますます顕著になる需要にどのように対応するかは、間違いなく、Ziroom ビッグ データ プラットフォームの開発チームにとって大きな課題です。綿密な調査と比較の結果、チームは Apache DolphinScheduler が Ziroom の現在のコア要件をすべて満たすことができるプロジェクトであることを発見しました。

これまでのところ、チームは Apache DolphinScheduler の導入を開始し、SQL リネージ解析スケジュールの自動生成、Apache DolphinScheduler を管理するための Ambari のサポート、エンドツーエンドの可用性監視など、これに基づいて一連の変換と最適化を実行しました。コンポーネントのスケジューリング 企業のニーズをより適切に満たします。

この記事では、Ziroom での Apache DolphinScheduler のアプリケーションと進化について詳しく説明します。

著者について

Chen Zhuoyu 氏、Ziroom ビッグ データ プラットフォームの運用および保守、Ziroom オフライン データ スケジューリング担当、Apache StreamPark PPMC、Apache DolphinScheduler コントリビューター

ビジネス上の課題

  1. 複雑なビジネス シナリオ: Ziroom のデータ処理ビジネス シナリオは豊富かつ多様で、C および B 向けの高品質住宅製品、スマート リビング サービス、スマート ホーム改善、スマート コミュニティの組織と運営の 4 つの主要分野をカバーしています。
  2. 多数の過去のストック タスク: Ziroom は歴史上、多数のオフライン タスクを蓄積してきました。現在、蓄積されたオフライン スケジューリング タスクは 10,000 以上の規模に達しており、プラットフォームの安定性に対して非常に高い要件が提示されています。
  3. オフライン タスクの大幅な増加: 現在、Ziroom はまだ急速なビジネス開発段階にあり、オフライン タスクの数は増加し続けており、プラットフォームのスケーラビリティと処理能力に非常に高い課題をもたらしています。
  4. 非プロフェッショナル開発者の使いやすさ要件: フリー データ ユーザーには主に、オペレーター、アナリスト、製品 BP などの非プロフェッショナル開発者が含まれます。彼らは、構成スケジュールの使いやすさについて厳しい要件を持っており、SQL をサポートできる必要があります。ベースの操作、および「民間」エクスペリエンスを実現するためのユーザーフレンドリーな構成インターフェイス。

解決

Ziroom のスケジューリング テクノロジ選択に対する主な要求

Ziroom のスケジューリング技術の選択要件は 2 つの側面から分析できます。1 つはユーザー レベル、もう 1 つは技術的な運用および保守レベルです。

ユーザーレベルでは、ユーザーはプラットフォームが以下を提供することを期待しています。

  1. シンプルで使いやすい操作モード: ユーザーはデマンド ロジックの開発を迅速かつ効率的に開始できます。
  2. 豊富な実践例: ユーザーがプラットフォームをより深く理解し、使用できるようにするための参照および学習用。

技術的な運用および保守のレベルでは、当社の開発チームと運用および保守チームは、プラットフォームが以下を提供することを期待しています。

  1. ユニバーサル テクノロジー スタック: 二次開発に便利で、プロジェクトを無料のエンタープライズ エコシステムに迅速に統合します。
  2. 豊富なコンポーネント: さまざまなビジネス ニーズを満たすさまざまなタスク タイプをサポートします。
  3. 優れたアーキテクチャ設計: プロジェクトの高可用性、容易な拡張性、および大規模なタスクのスケジューリングをサポートする機能を確保します。
  4. 活発なオープンソース コミュニティ: 問題が発生した場合、チームはコミュニティから必要な支援を簡単かつ迅速に得ることができます。

上記の主要な要求に応えて、Ziroom チームは業界のすべての関連プロジェクトについて徹底的な調査を実施し、最終的に Apache DolphinScheduler が Ziroom チームのすべての主要な要求を満たすことができる唯一のプロジェクトであることを発見しました。したがって、無料のオフライン スケジューリング テクノロジー ソリューションとして Apache DolphinScheduler2.0.6 バージョンを選択しました。

建築デザイン

現在、Ziroomは社内の研究開発により、グループ全体で利用できるビッグデータプラットフォームの構築に成功しました。オフライン データ ウェアハウスの垂直分野のニーズにさらに応えるために、Ziroom は統合と拡張に Apache DolphinScheduler を使用することを選択しました。この改善は、プラットフォーム全体の機能を強化し、グループ内のさまざまな事業部門により強力なデータ処理およびデータ オーケストレーション機能を提供できるようにすることを目的としています。

ファイル

図に示すように、データ スケジューリングは Ziroom データ開発プロセスの 4 番目のリンクであり、プロセス全体の中核に属します。プロセスの上流では、Hetu のリネージ機能 (データ リネージ クエリ サービス) と Hue のクエリ機能が共同で SQL ビジネス ロジックの生成をサポートし、データ スケジューリングの役割はこれらの SQL ロジックを整理して処理することです。

プロセスの下流では、最初はデータ品質モジュールです。このモジュールの中核となる役割は、スケジューリング出力の精度を保証することであり、これを「品質」保証と呼びます。このリンクを通じて、データの品質を保証し、次のステップに向けた信頼できる基盤を提供します。2 つ目はデータ サービス モジュールです。このモジュールの主なタスクは、スケジュール結果を再度要約して処理して、インデックス レベルでの期待を満たすようにし、ユーザーが使用できる標準化された Restful サービスの形式で提供することです。

二次開発の実践

リネージュ分析によりスケジューリングが自動的に生成されます

ファイル

上の図に示すように、SQL タスク ノードの複雑さは、関係する多くの上流の依存テーブル リレーションシップからわかります。30 近くのテーブル リレーションシップが相互に絡み合っています。このような複雑な依存関係に直面して、ビジネス担当者のみがこれを行う場合、会社の関連するビジネスラインテーブル間の関係を理解するのに多くの時間を費やすだけでなく、DolphinScheduler の構成と使用法を習得する必要もあります。 . 負担が大きいと言われています。

そこで、Ziroom チームは、系統分析によってスケジュールを自動的に生成するという新しいソリューションを見つけました。このソリューションの中核となる価値は、ビジネス担当者を面倒なスケジュール設定から完全に解放することです。SQL ステートメントを指定するだけで、プログラムが SQL を読み取り、解析し、スケジュールに必要な入力テーブルと出力テーブルを取得します。解析された結果は、スケジューラーを自動的に生成および構成するために使用されます。

ファイル

図に示すように、ユーザーは、Hue でデバッグされた SQL をワンクリックでスケジューリング プラットフォームに同期するだけで済みます。ここで、「解決」ボタンをクリックするだけで、システムは SQL の血縁関係に従って関連するすべての依存関係を自動的に解決し、この情報に基づいてタスクの有向非巡回グラフ (DAG) を自動的に生成します。この設計は、タスクのスケジュール設定の正確さと効率を確保しながら、ユーザーの操作手順を最大限に簡素化することを目的としています。

したがって、元の複雑な構成プロセスはユーザーに SQL ステートメントを提供するために簡素化され、残りはシステムによって実行されます。このようにして、ビジネス担当者は、ビジネス ニーズを満たすために複雑な構成や技術的な詳細に悩まされることなく、ビジネス ニーズに集中して効率的かつ簡潔に作業を完了するだけで済みます。

混合データ依存関係とタスク依存関係をサポート

ファイル

Ziroom の内部履歴には 10,000 近くのスケジューリング タスクがあり、これらのタスクは自社開発のビジネス ラインのスケジューリングや Airflow スケジューリングなどの複数のスケジューリング プラットフォームに分散しています。チームは、これらの過去のストック タスクを新しいスケジューリング プラットフォームに一律に移行するつもりはなく、新しい要件を満たしながら現状を維持することを望んでいます。この考慮事項に基づいて、Ziroom は DolphinScheduler 上で「データ依存関係」機能を設計および実装しました。これにより、DolphinScheduler が混合依存関係モードをサポートできるようになり、スケジューリング プラットフォームの互換性が向上しました。

このように、DolphinScheduler は「タスクの依存関係」と「データの依存関係」の両方を扱うことができます。「タスクの依存関係」とは、タスクが正常に実行されたかどうかを検出することでワークフローの実行をトリガーすることを指し、「データの依存関係」は、データパーティションが生成されるかどうかを検出することで、ワークフローが下位に実行されるかどうかを決定します。この混合依存関係の処理方法により、DolphinScheduler はビジネスライン間の新しいタスクと過去のスケジューリング タスクを効果的にリンクして、統合された効率的なスケジューリング システムを形成できます。

タスクの依存関係のリファクタリング

DolphinScheduler は DEPENDENT プラグインを使用してタスク間の依存関係を実装します。しかし、ここで隠れた問題が発生します。それは、タスク間の依存関係がワークフローで定義されたコードコードに基づいて確立されるということです。ods->dwd->ads->xxxx などのデータ ウェアハウス階層化に基づいて複雑なタスク フローを構築する場合、ユーザーが誤って上流の ods タスクを削除してタスクを再作成すると、依存関係が正しく構築されません。同じタスク名にもかかわらず、コードが変更されました。この問題を解決するために、タスクの依存関係メカニズムをリファクタリングしました。代わりに、タスク名に基づいて依存関係を確立し、タスクの作成時にルール検証を実行して、タスク名がクラスター全体で一意であることを確認します。このようにすると、ユーザーが誤ってタスクを削除して再作成した場合でも、依存関係を正しくマウントできます。

この改善により、スケジューリング システム全体のタスク間の依存関係の正確さと安定性が保証されます。ユーザーは、誤って削除したために依存関係を確立できないという問題を心配する必要がなくなりました。このようにして、ユーザーは複雑なタスク フローをより自信を持って構築でき、タスク間の依存関係が正しく確立および維持されるようになります。

構成ベースのスケジュール生成をサポート

実際の業務では、SQL は理解できないが、データを処理して使用する必要があるユーザーもいます。この部分のユーザーを満足させるために、構成ベースのスケジュール生成モードを実装しました。このモードの設計思想は、ユーザーが複雑な SQL ステートメントを記述せずに、シンプルな構成でデータの処理と処理のプロセスを定義できるようにすることです。

ファイル

ファイル

テーブル、テーブルの関係、フィルター条件、ターゲットなどの情報を含む構成を選択すると、プラットフォームはユーザーが選択した情報に基づいて、対応する SQL ステートメントを自動的に生成できます。次に、生成された SQL ステートメントに従って、前述の SQL 解析およびスケジューリング構成のステップが実行され、スケジューリング タスクの構成プロセスが完了します。

この構成ベースのスケジューリング生成モードにより、SQL 言語を理解していないユーザーでもデータの処理と使用を簡単に完了できるため、学習と使用のしきい値が大幅に削減されます。同時に、開発効率も向上し、エラーの可能性も減ります。この設計により、さまざまな技術レベルのユーザーをより適切にカバーし、そのニーズを満たすことができます。

Ambari 管理 DS のサポート

  1. パラメータ設定の一元管理と複数バージョンの比較

DolphinScheduler は分散アプリケーションとして、構成ファイルが変更されるたびにノード間で同期する必要があります。このプロセスは面倒なだけでなく、過去の変更を追跡することもできません。特にオンラインサービスの構成では、わずかな変更がサービスの麻痺につながる可能性があります。これらの問題を考慮して、私たちのチームは構成アイテムの明確な表示、構成のロールバック、および履歴バージョンの比較を提供できるツールを緊急に必要としています。

Ambari はそのようなソリューションを提供します。したがって、すべての設定項目の統合管理を実現するプラグインを作成して、DolphinScheduler と Ambari を統合します。この統合された方法により、運用および保守担当者の作業プレッシャーが軽減されるだけでなく、サービスの安定性も向上し、システムの堅牢性と信頼性が強力に保証されます。

構成アイテムの一元管理:ファイル

構成アイテムの変更されたバージョンの比較:ファイル ファイル

  1. 視覚的なワンクリッククラスターの開始と停止

Ambari の管理インターフェイスでは、ユーザーは各ノードの実行ステータスを含むクラスター全体のステータスを明確に表示できます。簡単なワンクリック操作で、ユーザーは複数のサーバー ノードに展開されたクラスター全体を開始または停止できるため、クラスター管理がより直観的かつ便利になります。

ファイル

  1. 自動サービス障害「自己修復」のサポート

Ambari プラットフォームでは、DolphinScheduler サービスの「自己修復」を実装するのは非常に簡単です。プラットフォーム上で監視が必要なDolphinSchedulerサービスを選択するだけで、Ambariのサービス自動開始機能を利用して簡単に実装できます。DolphinScheduler サービスが何らかの異常な状況によりダウンした場合、サービス自動開始は自動的かつ継続的にサービスの再起動を試みます。これにより、DolphinScheduler サービスの高可用性が確保され、システムの安定性が大幅に向上します。

ファイル

エンドツーエンドのスケジューリング コンポーネントの可用性監視 WatchDog

DolphinScheduler にはタスクの耐障害性メカニズムと高可用性メカニズムがすでに備わっていますが、実際の実行プロセスでは、Hiveserver2、ClickHouse などの多くの外部サービスを関与させる必要があります。このような複雑な環境では、運用および保守担当者の主な目標は、システムに 100% 障害がないことを要求することではなく、問題が発生したときに即座に対応して、運用および保守担当者が適切に介入できるようにすることです。できるだけ早く問題を解決してください。問題を解決してください。そこで、Ziroom はエンドツーエンドのフルリンク ユーザビリティ テスト タスク、WatchDog を開発しました。

WatchDog の目標は、スケジューリング プロセス全体の可用性を監視し、問題が見つかった場合は運用および保守スタッフに直ちに警告することです。これにより、トラブルへの対応速度とシステムの安定性が大幅に向上し、運用保守担当者の負担が軽減され、システム全体の稼働状態の管理能力が向上します。ファイル

内部コアロジック「埋め込みポイント」

DolphinScheduler (バージョン 2.0.6) を実際に使用する初期段階では、多くの問題が発生したことは周知の事実です。しかし、これらの問題がチームを落胆させることはありませんでした。チームは、DolphinScheduler が比較的新しいスケジューリング製品であるため、さまざまな問題が発生するのはごく普通のことであることも十分に理解していました。したがって、DolphinScheduler がスムーズに「安定」できるように、これらの問題を修正することにしました。

このプロセスでは、多くの課題に直面しました。たとえば、スケジューリング システムが実行されている場合、数百または数千のタスクが同時に並行して実行される可能性があり、各ワークフローはスレッド オブジェクトと組み込みのストレージ キューに対応します。さらに、リモート Netty 通信トリガー フローには多くのバックグラウンド スレッドとロジックが絡み合っており、問題の特定に大きな困難をもたらしています。

この問題を解決するために、特別な例外アノテーションを開発しました。メソッドにこのアノテーションが付けられると、例外が発生すると、入力パラメータ、出力パラメータ、スレッド名、実行時間、メソッドが配置されているサーバー ノード、および詳細な例外スタック情報が記録されます。その後、社内の WeChat や電話アラームを通じて、その情報が運用保守担当者に即座に通知され、タイムリーな問題の特定と処理が実現されます。したがって、開始、停止、補完、フォールト トレランス、タイミング スケジューリングなど、スケジューリング プロセスの主要なリンクに注釈を付けてカバーします。このアプローチにより、システムの動作状態の制御が大幅に強化され、問題をより迅速に特定して解決できるようになります。

JVMパラメータ最適化監視

JVM チューニングの鍵は「バランス」を追求することであり、ガベージ コレクションの頻度と期間のバランスを取るためにメモリ サイズを調整します。

私たちの最適化の目標は、第 1 にサービスのスループットを確保すること、第 2 にサービスの一時停止時間を短縮することです。同時に、DolphinScheduler でメモリ リークが発生する可能性のあるコードを修正し、特にメモリ リークを回避するためにいくつかの静的属性をローカル変数に変更しました。これは、ローカル変数はコード ブロック内でのみ機能するのに対し、静的プロパティはクラス オブジェクトに関連するためです。JVM ではクラスのアンロード条件が非常に厳しく、アプリケーションはシステムクラスローダーによってロードされるため、ロードされたクラスはアンロードされません。これは、オブジェクトがクラス ローダーでハングしている場合、そのオブジェクトは解放されないことを意味します。対照的に、ローカル変数は使用後すぐに割り当てが解除されます。したがって、私たちの目標は、JVM プロセス内のコレクションまたは重量オブジェクトの静的マーキングを回避することです。

以下は、読者の参考のために、JVM パラメーターの最適化に関して作成した JVM 構成です。

  • XX:+UseG1GC: G1 ガベージ コレクターを使用します。
  • XX:MaxGCPauseMillis=500: 最大 GC 一時停止時間を 500 ミリ秒に設定します。
  • XX:+PrintGC詳細
  • XX:+PrintGCTimeStamps
  • XX:+PrintGCCause: GC の詳細、タイムスタンプ、GC 理由を出力します。
  • XX:+UseGCLogFileRotation
  • XX:GCLogFilesの数=10
  • XX:GCLogFileSize=10M: GC ログ ファイルのローテーションを有効にし、10 個のファイルを保持します。各ファイル サイズは 10 メガバイトです。
  • XX:+HeapDumpOnOutOfMemoryError、
  • XX:+HeapDumpBeforeFullGC: OutOfMemoryError 発生時にヒープ ダンプ ファイルを生成し、フル GC を実行する前にヒープ ダンプ ファイルを生成します。
  • Xmx16g、-Xms16g: ヒープの最大サイズと初期サイズを 16GB に設定します。
  • XX:メタスペースサイズ=512m
  • XX:MaxMetaspaceSize=512m: メタスペースの初期サイズと最大サイズを 512MB に設定します。

さらに、javaAgent を使用して JVM 関連のインジケーターを収集し、それらを Prometheus にレポートして、より包括的な監視を確立します。

権限制御

スケジューリング権限の管理は、主に HQL タスクの実行キューを制御することで実現されます。まず、ログイン プロセス中に、スケジューリング プラットフォームは LDAP を通じてユーザーを認証します。サーバーはユーザーの LDAP が配置されている部門を取得し、部門名に従ってスケジューリング プラットフォーム上に対応するプロジェクトを作成します。つまり、LDAP 上のユーザーの部門が DolphinScheduler 上の項目スペースにマッピングされます。

次に、各プロジェクトは特定の Hive データ ソースに関連付けられます。各データ ソースはキュー設定が異なります。データ ソースが関連付けられているため、さまざまな部門のタスクが対応する Yarn キューに送信されるため、この設定により、各部門のリソース使用量に価格を設定し、効果的に管理することができます。

これにより、スケジュール権限を厳密に管理すると同時に、部門リソースの正確な計算と効率的な管理を実現します。

ユーザーの収入

  1. 業務担当者、アナリスト、製品BPのデータ処理・利用ニーズに応える:構成ベースのスケジューリング生成モードとSQ​​L自動生成機能により、業務担当者、アナリスト、製品BPのデータ処理・利用ニーズに応えます。 SQL 言語を理解していないため、処理と使用の要件が異なります。複雑な SQL ステートメントを記述することなく、簡単な構成でデータ処理プロセスを定義できます。これにより、データを迅速かつ簡単に処理して使用できるようになり、生産性が向上します。
  2. 複雑なデータ スケジュールを維持する運用および保守担当者のニーズを満たす: 運用および保守担当者にとって、複雑なデータ スケジュール タスクを維持することは困難な作業です。ただし、当社のスケジューリング プラットフォームを使用すると、運用および保守担当者はこれらのスケジューリング タスクをより簡単に管理および維持できます。このプラットフォームは、視覚的な操作インターフェイスと、構成のロールバックや履歴バージョンの比較などの豊富な機能を提供し、運用保守担当者がタスクを簡単に管理および保守できるようにします。同時に、エンドツーエンドの可用性監視ツール WatchDog もシステム障害を適時に検出できるため、スケジューリング システムの安定性と信頼性が向上します。

ビジネス担当者、アナリスト、製品 BP のデータ処理と使用のニーズ、および複雑なデータ スケジューリングを維持するための運用保守担当者のニーズを満たすことにより、Apache DolphinScheduler に基づいたアップグレードされたスケジューリング プラットフォームは、各役割と業務に包括的なサポートを提供できます。ビジネスの円滑かつ効率的な運用と保守を促進します。

この記事はBeluga オープンソース テクノロジーによってサポートされています。

iQIYI クライアントの「ホワイト」テレビ、背景が TIOBE の 7 月のリストをフルスピードでアップロード: C++ が C を超えようとしている、JavaScript がトップ 6 に入る GPT-4 モデル アーキテクチャのリーク: 混合エキスパート モデル (MoE) を使用した 1 兆 8,000 億のパラメータが含まれている CURD は苦しんでいるフロントエンドの中間およびバックステージで長期間使用され、Koala Formは 30年間使用され、Linux市場シェアは3%に達する マスク氏がxAI会社の設立を発表ChatGPTトラフィックは10 % 減少 SUSEは10ドルを費やす広範囲にわたるデータ盗難で数百万ドル、RHEL をフォーク
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/dailidong/blog/10088291