著者 | 火山エンジン EMR チーム
周知のとおり、Hadoop ベースの EMR システムの開発は多くの段階を経てきました。CDH を介して展開する IDC コンピュータ ルームに基づく 1.0 段階から、パブリック クラウド上のストレージとコンピューティングの分離に基づく 2.0 段階に進化しました。
これらの基盤に基づいて、Volcano Engine デジタル インテリジェンス プラットフォーム VeDI の EMR チームは、ステートレス EMR 3.0 の進化段階を調査してきました。先月末、Volcano Engine EMR は新しい一時クラスター機能を正式に開始しました。この機能は業界をリードする EMR ステートレス概念に基づいており、クラスターレベルの柔軟なスケーリング、つまり業務がないときにクラスターを解放することができます。これにより、企業は製品の使用量とプラットフォームの運用および保守コストを大幅に削減できます。
一時クラスタとは何ですか? ステートレス概念とは何ですか? この記事では、EMR ステートレスの革新的な概念とアプリケーションを、基本概念、アーキテクチャ システム、進化プロセス、実際のアプリケーション シナリオと使用価値などの複数の観点から包括的に紹介します。
ステートレスとは何ですか?
ステートレス - その本質は一時クラスターの概念ですが、完全に一時クラスターというわけではなく、軽量でステートレスな一時クラスターが提供されます。では、ステートレス一時クラスターとは何を意味するのでしょうか?
まず、ステートレス クラスターは、ストレージとコンピューティングの分離に基づいてさらに進化した一時的なクラスターです。Hadoop システム内の関連コンテンツなど、通常のストレージとコンピューティングの分離クラスターはクラスターにバインドされており、これらのステートフル コンテンツは独立したサービスに完全に分離されていません。ステートレス サービスの Hive Metastore と History Server。これは、これらをコンピューティング クラスターから分離することを意味します。
ステートレスのサポートにより、Hadoop システム内のマスター、コア、タスク、およびその他のノードが、いつでも作成または解放でき、複数のコピーを持つステートレス軽量一時クラスターを形成すると呼びます。これにより、クラスターのパフォーマンスが向上することは間違いありません。スケーラビリティ。これに基づいて、クラウド ネイティブおよびクラスターの観点から、機能をより適切に拡張し、コストを最適化できます。
次に、ステートフル モードとステートレス モードを比較してみましょう。両者の一般的な違いは何でしょうか?
左側のフローチャートは、従来のステートフル モデルです。
このモードでは、タスクを送信するためのデータ プロセスは通常次のようになります。まず、長時間実行されるクラスターが必要です。クラスターが確立された後、タスクが送信され、その後 IO を通じて直接返されるかどうか、どちらかの書き込みが行われます。データを HDFS またはオブジェクト ストレージに保存すると、実行後に履歴結果が得られます。
ビッグデータの保守の観点から見ると、長期稼働クラスターの運用保守には、タスクの投入プロセスが完了した後、クラスターの実行状況を監視して障害が発生していないかどうかを監視したり、既存のサービスのメンテナンスを実行したりすることが含まれます。一定の運用保守コストが発生します。同時に、タスクが終了すると、これらのクラスターは実際には空のクラスターになります。トータルコスト許容度の観点からは実は不利な選択肢 上記は典型的なステートフルモデルです。
ステートレス モードでは、これらすべてが変わります。
まず、操作の最初のステップは直接タスクの送信になります。タスクが送信されると、クラスターはタスクの実行に間に合うようにオンデマンドで作成されます。タスクの実行が終了すると、クラスターが解放されます。ユーザーが計算結果を取得すると、タスクの送信プロセス全体が終了したことになります。
このプロセスでは、ステートレスは、ログ サービスなどの状態属性を持つ機能をクラスターに外部化します。クラスターが解放された後も、ユーザーはステートレス クラスター テンプレートに基づいてクラスター内で実行されたタスクの結果を、ログ サービスを通じて任意の期間にクエリできます。
このようなプロセスでは、ユーザーは実行クラスターを運用および保守する必要がありません。これがステートフルとステートレスの最大の違いです。
上記の内容を読んだ後、必ずいくつかの疑問が生じると思いますが、よくある概念的な疑問がいくつかありますので、ここで最初に説明します。
1. ステートレスとサーバーレスの違いは何ですか?
まず、ステートレスと比較すると、サーバーレスは実際にはフルマネージドとセミマネージドの違いになります。準管理の場合、ユーザーは一部のクラスター リソースとクラスター構成関連のコンテンツを自分で操作および保守する必要があります。フル ホスティングの場合、ユーザーはこの部分の構成を省略できますが、カスタマイズされた構成の一部も失われます。 . クラスターの柔軟性。
ステートレスは実際にはセミマネージド シナリオ、つまりクラスター形式に基づくクラウドネイティブの最適化システムであり、フルマネージド形式のサーバーレスとは本質的な関係がありません。それらの類似点は、リソースの使用が比較的十分であり、コンピューティング リソースはタスクを実行する場合にのみ存在するという点です。
2. ステートレス一時クラスター、一時クラスターをどのように理解しますか?
この問題に関して、さらに深いところは過渡状態ですが、どのような時間粒度であれば過渡状態と言えるのでしょうか。
まず、一時的なクラスターと通常のクラウド EMR クラスターを比較してみましょう。通常の EMR クラスターは長期間にわたって展開され、1 週間または 2 週間、あるいは 1 か月または 2 か月にわたって展開される場合もあります。一時的なクラスターでは、タスクが到着すると、これらのタスク用にクラスターを作成し、タスクの実行後にクラスターを解放します。
2回目作成時も同様に、クラスタの構成や仕様は前回と同様で、レプリケーションと同様の操作を直接行うことができます。ユーザーにとって、このレベルを達成するためにコストはかかりません。ユーザーはこのクラスターを定義するだけで済み、ステートレスはそのような一時クラスターをオンデマンドで作成できます。この一時クラスターの時間粒度は分レベルであり、間隔が長すぎる場合にどのようなエラーが発生するかを考慮する必要はありません。
3.ステートレスはどのようなビジネスシナリオに適していますか?
実際のシナリオに基づくと、まず、ストレージと計算を分離する必要があるユーザーに適しており、オフライン バッチ実行シナリオにより適しています。計算量が比較的大きく、潮汐特性が明らかな場合、コストの削減は非常に明白です。
4. ステートレスでは、ユーザーは使用習慣を変える必要がありますか?
ユーザーの使用に関しては、プロセスを変更する必要はありません。ステートレスは、クラウド ネイティブの管理と制御のレベルでのみ最適化され、ステートレス サービス ストリップのレベルでも最適化されます。ユーザーインターフェイスに関しては、オープンソースのWeb UIであろうと、オープンソースエンジンの外部インターフェイスであろうと、タスクのサブミットプロセスに変更はなく、完全にオープンソース互換であり、誰もが常に提供される技術的恩恵を享受できます。オープンソースコミュニティバージョンの反復。
ステートレスビッグデータシステム
上記の内容を理解した上で、ステートレスについての予備的な理解を行ってください。その後、システムがどのように実装されているかを紹介します。
まず、ステートレス アーキテクチャ システムでは、ユーザー クラスターには、オフライン分析 (Hadoop システム)、リアルタイム コンピューティング (Flink システム)、対話型分析、NoSQL データベース、機械学習およびその他の関連コンテンツが含まれます。これはコンピューティング機能を備えたクラスターであり、状態部分を含むすべてのコンテンツが削除されます。ステートレスは、History Server と UI 関連のコンテンツを、Spark History Server、Presto History Server、YARN Timeline Server などの独立したサービスに分離します。これらのサービスは、クラスターが存在するかどうかに関係なく存在します。
次に、統合されたスケジューリングと開発パッケージが Open API を通じて実行されます。同時に、EMR Studio をサービスにします (EMR Studio は、Oozie、Airflow、DolphinScheduler などと同様のスケジューリング エンジンとして理解できます)。ユーザーは、展開用のマシンを送信することなく、Volcano Engine EMR 上でこれらのサービスを直接使用できます。
Volcano Engine の豊富なクラウド エコシステムに依存して、Stateless はデータ研究開発製品とシームレスに接続することもできます。さらに、Hive Metastore の組み込みメタデータ データベース、外部 RDS などの EMR メタデータも統合サービスに抽出されます。Hive Metastore を使用している友人は、Metastore の RDS に騙されたと思います。RDS に障害が発生すると、Hive Metastore に問題が発生しますが、これらの問題はクラウド ネイティブ サービスによって効果的に解決できるようになりました。
同時に、構成センターは、クラスター構成、必要なコンポーネントなど、クラスター用のクラスター化レイヤーも構築し、仮想形式で保管されます。同時に、エンジンのメタデータは、権限制御、ユーザー システムなどを含むサービス指向になっています。
最後に、ステートレスは、ログがローカル ディスクをいっぱいにするという、運用と保守にとって非常に厄介な問題を解決します。ステートレスシステムでは、このような問題はなくなり、TOS オブジェクトストレージを通じて、ログはすべてオンデマンドのオブジェクトストレージに配置されます。オブジェクト ストレージは無限であると考えられるため、オブジェクト ストレージが占有するディスク領域を心配する必要はなく、ライフ サイクルが定義されている限り、この問題は解決できます。
ステートレスをベースとしたビッグデータシステムについては上で触れましたが、ここからはステートフローを例にして先ほどのシステムを説明するリンクに入ります。
まず、上の図からわかるように、点線で囲まれた部分はステートレスがエンティティクラスターから抽象化したもので、Web UIやOpen APIを含むメタデータサービスや管理・制御サービスなどの一連のサービスが含まれます。 。これらのオープン API は、クラスターの作成と破棄を制御するトリガーとして使用され、関連する命令が Airflow、DolphinScheduler などのスケジューリング プラットフォームに渡されます。タスクを送信すると、スケジューリング プラットフォームはインターフェイスを通じてクラスターのライフ サイクルにある程度の影響を与えます。
2 番目に、トリガー レベルでは、主にクラウド ネイティブが提供する Open API を通じてクラスターを制御できます。タスクをサブミットする場合は、新しいクラスターを作成し、タスクがどのようなクラスター構成を希望するかを示すクラスターのステータスを復元します。この設定は、バージョン パラメータである場合もあれば、一部のモデルの設定である場合もあります。どのような構成であっても、ステートレスはクラスターを忠実に初期状態に復元できます。クラスターはステートレスであるため、実行ジョブが完了すると、エンティティのクラスターが解放され、そのライフサイクルが終了します。
上記のケースは、単一のタスクの送信に関するものです。ただし、実際には複数のタスクがクラスターに送信される場合があり、この場合、すべてのタスクが実行されるまでエンティティ クラスターは解放されます。クラスタ解放後に投入が必要なタスクがある場合も、同様に同じ構成でクラスタを起動し、再度タスクを実行し、実行完了後にリリースするだけで済みます。これがステートレスシステムの運用の大まかな流れです。
ステートレスな進化プロセス
概念と構造の内容を理解した後、EMR Stateless の進化のプロセスを共有しましょう。EMR ステートレスは比較的新しいもののように思えますが、なぜこれを行うのでしょうか?
最初に、Hadoop ベースの EMR システムの多くの段階について説明しました。
1 つ目は、CDH を介した IDC コンピュータ ルームに基づく 1.0 段階の導入であり、現在に至るまで多くのユーザーが 1.0 システムに基づいて運用されています。また、リソースの追加でもその他の操作でも完全に制御できるという利点もあります。もちろん、運用と保守の複雑さが非常に高いことや、統合されたストレージとコンピューティング アーキテクチャにより、大量のコンピューティング リソースがアイドル状態になり、実行する方法がないなど、多くの問題もあります。デマンド コンピューティング シナリオ。
これらの問題を踏まえ、ストレージとコンピューティングの分離に基づくパブリック クラウド上での構築の 2.0 段階が進化しました。ストレージリソースとコンピューティングリソースを分離することで、コンピューティングリソースを可能な限りオンデマンドで割り当てることができます。もちろん、これにも制限と前提条件があり、そのコンピューティング リソースはノードに基づいて柔軟です。したがって、2.0 時代に解決される最も基本的な問題は、コンピューティングとストレージ間の分離です。
しかし、Volcano Engine の EMR チームは 2.0 時代にいくつかの問題を発見し、日常の運用とメンテナンス、およびクラスターの安定性に影響を及ぼしました。この 2 つの点に基づいて、まず弾力性を考慮し、クラスター全体の弾力的なスケーリングを行いました。その前提条件として、クラスターと関連するクラスターのメタデータを分離することでした。これに基づいて、クラスターをステートレス化しました。 、クラスターサービスの分離。
こうなると、実はステートレスのメリットが反映されます。まず、ステートレス クラスターは実行時に一時的にのみ表示されるため、運用とメンテナンスが 100% 不要です。次に、ユーザーはクラスター サービスについて心配する必要がなく、セミマネージド モデルの利点も維持されます。技術調査と総合的な判断の結果、EMR 1.0 時代の IDC コンピュータ ルームのオフライン導入モデルと比較して、EMR ステートレスを使用するリソース コストは 40% 以上最適化できました。
以上がEMR Statelessの進化過程と、Statelessに対するVolcano Engine EMRチームの考え方とプロセスです。
次に、各機能がどのように進化するかを詳しく説明します。
まず、ストレージと計算の分離は、実際には EMR 2.0 時代の産物です。ステートレス環境では、まず、EMR 2.0 のいくつかの機能が保持されます。新しいレイヤーでは、負荷の最適化と高速化が最も重要な機能であり、これはローカル バッファーとして考えられ、速度が向上します。
さらに、ホットおよびコールド成層の管理を提供します。これにより、ホットおよびコールド成層の動作を直接制御および定義できます。これは、コスト削減の前提条件でもあります。コンピューティング リソースは極限まで最適化されているため、ストレージ リソースも適時に最適化する必要があります。
まず、プラットフォームはユーザーのホット層とコールド層を自動的に診断します。診断の前提条件は何ですか? 上の図から、Volcano EMR 側のユーザーのすべての読み取りおよび書き込み動作は、Metastore サービスを経由して、どのデータがコールド データでどのデータがホット データであるかを理解します。
ユーザーによるテーブルの定義に基づいて、自動診断が実行され、これらの診断と予測が運用および保守担当者に公開され、診断結果を確認してプラットフォームの推奨事項を提示できるようになります。次に、手動判断を使用して、コールド データが最終目的地を見つけます。この点に関して、ステートレスは、標準から低頻度、アーカイブ、冷凍、そして最終的には削除に至るまで、さまざまなレベルのコールド データの階層化を提供し、さまざまな特性を持つデータに最適なストレージ ポイントを見つけることができます。これは、Stateless によるユーザーへの権限付与の側面でもあります。
柔軟なスケーリングも、ステートレスの進化によってもたらされた主要な機能です。
伸縮性のあるスケーリングには、主流は 2 つのタイプに分けられ、1 つは時間ベースの伸縮性スケーリングで、たとえば、運用保守担当者は、いつがピークで、いつが谷であるかを把握します。2 番目のタイプは、負荷インジケーターに基づく弾力的なスケーリングです。これは、時間範囲内で値が突然大きくなったり小さくなったりするなど、特殊な状況が存在する可能性があるため、または負荷条件に基づいて行われるためです。
この点で、Volcano Engine EMR には、時間と負荷を組み合わせるために使用できる独自の設定があります。さらに、このようなハイブリッド弾性モードは、Hadoop クラスターのノードに作用するだけでなく、一時クラスター全体にも作用することができます。
Hive Metastore サービスについても上で説明しましたが、オフライン タスクのメタデータであっても、リアルタイムおよびリアルタイムのオフライン混合展開であっても、そのメタデータは実際に Hive Metastore でホストできます。
現在、Stateless は一連の Public History Server サービスを実装しています。これはクラスター エンティティとは独立して存在でき、クラスターの実行中、これらのジョブはデータを Public History Server サービスに報告します。ユーザーは、IP をバインドする複雑な手順を行わずに、ドメイン名を通じて直接アクセスできます。
Stateless は、クラウド上の製品エコロジーを利用して、OpenSearch に基づくログ サービスもアップグレードし、最終データは TOS に保存されます。データの損失やデータディスクの影響に直面しても、これらのユーザーは考慮して運用する必要はありませんが、この部分の機能はまだ完全には成熟しておらず、改善には時間がかかります。
スケジューリング サービスに関しては、DolphinScheduler、Airflow などのスケジューリング機能を備えたサービスも統合しています。これは、これらのコンポーネントがクラスターを作成する API タスクをスケジュールし、スケジューリング システムのタスクが送信されるとトリガーされるためです。ステートレスは、これらすべてのメソッドをサービスに統合します。ユーザーは、それらを自分でデプロイする必要はなく、直接使用できます。箱から出してます。
最終的には、ユーザーサービスと認証サービスの内容が統合され、全員で共有されます。1 つ目は、ユーザーへのサービスとユーザーの権利へのサービスです。ユーザー サービスは、LDAP を統合ユーザー管理サービスに統合します。もちろん、LDAP レベルは保持されており、例えば、LDAP UI の使用に慣れているユーザーであれば、ユーザー自身が操作することに問題はありません。ユーザーのシステムをインポートするためにクラスターを繰り返し操作する必要はありません。最大のメリット。
同様に、ステートレス認証サービスは Ranger を使用します。Ranger は RBAC の概念であり、ステートレスは RBAC の概念を抽象化し、ユーザーがより豊富なアクセス許可のセットを構成できるようにします。さらに、この権限はユーザーのシステムと相互運用可能であるため、1 セットのユーザー システムと 1 セットの権限で、ユーザーとロールの権限に関連するすべての RPC モデルをカバーできます。これは、ステートレスの進化において非常に重要な機能でもあります。
ステートレスなビジネス価値
最後に、Stateless のビジネス価値についてお話したいと思います。
まず、ビジネス価値を反映する典型的なシナリオを紹介します—
ステートレスクラスターとはどのようなクラスターですか? コストを最適化するには?
まず、ユーザー用にステートレス クラスターを作成する場合、選択したクラウド サーバー モデルが異なる可能性があります。まずピラミッド構造になっていて、最下位レベルではまずユーザーのコンピューティングリソースが保証されます。
2 番目に、ユーザーのコンピューティング特性を満たすように努めます。たとえば、ワード数や CPU 負荷の高い計算ではメモリはあまり使用されないため、ユーザーがメモリ リソースを節約し、CPU とメモリの比率が近いモデルを選択できるよう最善を尽くします。
第三に、ユーザーがコストを最適化できるように支援します。料金モデルには 2 つあり、1 つはオンデマンドで、もう 1 つは入札です。原理的には入札の方がオンデマンドよりも安価であり、ステートレスクラスタリングは時間がかかるため、ユーザーにとってより安価なモデルを選択するよう最善を尽くします。例えば、ユーザーの好みのモデルが在庫切れだった場合はどうすればよいでしょうか。当社は、ユーザーのコンピューティング タスクを確実に実行できるように、価格と構成の点でユーザーが定義したモデルと同様のモデルを選択するよう最善を尽くします。
最後に簡単にまとめると、ステートレスのメリットは何でしょうか?
まず第一に、支払いは実際には非常に簡単です。オンデマンドで作成され、自動的に破棄されます。クラスタはタスクとともに常に存在するため、ユーザーはクラスタのステータスを気にする必要がありません。第二に、それは常に反復状態にあり、オープンソース コミュニティ バージョンの反復によってもたらされる配当を誰もが常に享受できます。なぜなら、私たちは常にオープンソースを受け入れるからです。これは、私たちの Volcano Engine EMR が諦めない本来の意図でもあります。 。
次に、ストレージとコンピューティングの分離、および弾力的な拡張があります。弾力的な拡張には特定の高度な機能があり、クラスターの強度に応じて完了できます。ログは冪等でクラウド上にアップロードされており、いつでも閲覧できるため、ユーザーはログに対して過剰な操作やメンテナンスを行う必要がありません。
最後に、運用と保守に関しては、ステートレスはステートフル サービスを抽出します。ユーザーはクラスター サービスに関連するコンテンツを気にする必要はなくなり、計算の実行、計算のデバッグ、および計算の診断のみを気にする必要があります。
「2022-2023 中国開発者アンケート」が開始されました。下の QR コードをスキャンしてアンケートにご参加ください。iPad などの豪華なプレゼントがあなたを待っています。
☞蚂蚁集团强化与阿里隔离:马云不再是实际控制人;iPhone 15 Pro将独占6大功能;Linux 4.9正式EOL|极客头条
☞C++:在“替代”中迎来“转机”的 2022 年!
☞以防作弊,ChatGPT 遭教育部“拉黑”:师生禁用!