Yige

Yige

Build

Livyシリーズ - Livyのコア機能とモジュールの概要

Livy シリーズ - Livy のコア機能とモジュールの概要#

内容整理自:

  1. Apache Livy 実現思路及模块概述

Livy のコア機能点#

  1. http リクエストを通じてタスクを Livy サーバーに送信
  2. Livy サーバー側がユーザーのリクエストを受け取り、適切なルーティングを行って特定のクラスの特定のメソッドを呼び出す
  3. 認証(オプション)
  4. タスクリクエストに基づいて Spark アプリケーションサービスを起動
  5. ユーザーが指定したタスクを実行し、実行状態の取得、実行結果の取得、SparkContext の共有、正常停止などの機能を提供
  6. フォールトトレランス機能、タスクは失敗前の状態に復元可能

モジュール概要#

上記の機能点に基づいて以下のモジュールをまとめることができます:

  • クライアント
  • ルーター
  • アクセス管理
  • Spark アプリの生成
  • インタラクティブドライバー(セッションタスクのみ、バッチにはなし)
  • 状態データストレージ

image.png

ルーター#

Livy サーバーが提供する API は REST API であり、クライアントが送信するリクエストも各リソース(URI)に対する CRUD 操作です。ルーターの主な責任は、どのリソースに対してどの操作をどのクラスのどの関数に割り当てるかを管理することです。
このモジュールのコアクラスはSessionServletで、2 つのサブクラス:InteractiveSessionServletBatchSessionServletがあり、それぞれセッションおよびバッチ関連のリクエストをルーティングします。

アクセス管理#

アクセスは AccessManager クラスによって管理され、いくつかの異なるレベルのユーザーを維持します:

  • superUser
  • modifyUser
  • viewUser
  • allowedUser

および異なるレベルの ACL(アクセス制御リスト):

  • viewAcls:superUsers ++ modifyUsers ++ viewUsers、対応する閲覧権限
  • modifyAcls:superUsers ++ modifyUsers、対応する変更権限(kill 権限を含む)
  • superAcls:superUsers、すべての権限を持つ
  • allowedAcls:superUsers ++ modifyUsers ++ viewUsers ++ allowedUsers、ACL の全集を示す

Spark アプリの生成#

セッションとバッチのタスクに対して、Spark アプリを生成するロジックと最終的に生成される Spark アプリは異なります。

バッチの Spark アプリ生成に関与する主なクラス:

  • SparkProcessBuilder:livyConf から Spark アプリを実行するために必要なすべてを抽出するために使用され、mainClass、executableFile、deployMode、conf、master、queue、env、およびドライバーとエグゼキュータのリソース構成などを含み、最終的に Spark アプリを起動するための spark-submit コマンドを生成します。

  • SparkYarnApp:SparkProcessBuilder が生成した起動コマンドを実行し、起動した Spark アプリを監視・管理します。状態、ログ、診断情報、kill などを取得します(現在、Livy は local と yarn の 2 つのモードのみをサポートしています)。

セッションの Spark アプリ生成に関与する主なクラス:

  • ContextLauncher:新しい Spark アプリを起動するために使用され(SparkLauncher を通じて)、そのドライバーに接続する方法(アドレス、clientId、およびシークレット)を取得します。

  • RSCClient:Spark ドライバーと接続を確立し、作成、状態結果ログの表示、statement の変更、ジョブなどのリクエストを送信し、応答を取得します。

インタラクティブドライバー#

コアクラスはRSCDriverで、RpcDispatcherを継承しています。RpcDispatcher はRSCClientから送信された RPC リクエストを受信し、リクエストのタイプに応じてRSCDriverの対応するメソッドを呼び出してリクエストに含まれる具体的な情報を処理します。最も重要な実行コードスニペット(statement)リクエストについては、repl/Sessionを呼び出して処理し、repl/Session は異なるsession kindに応じて異なるInterpreterを呼び出して実際のコードを実行します。

状態データストレージ#

コアクラスはStateStoreで、状態データのストレージはすべてキー - バリュー形式であり、現在はfilesystemファイルシステムZookeeperに基づく実装があります。また、SessionStoreはこのクラスを継承し、セッションのストレージと復元のための高階 API を提供します。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。