Apache Spark監視

Apache Spark――概要

Apache Sparkは、オープン ソースのビッグ データ処理フレームワークです。ストリーミング、SQL、機械学習、グラフ処理を、内蔵モジュールで高速実行します。Sparkには先進的なDAG実行エンジンがあり、非循環式データフローとイン メモリ コンピューティングをサポートしています。Sparkは、Hadoop、Mesos、スタンドアロン、クラウドで稼働し、HDFS、Cassandra、HBase、S3など多彩なデータ取得元で利用可能です。 

Apache Spark の監視ーー当社が提供すること

ここでは、Sparkの稼働状況をリアルタイムで把握するのに必要なことと、収集するパフォーマンス メトリックにくわえ、検索サーバーの安定運用確保をどのように実現するか、紹介します。

  • リソース利用率詳細:Applications ManagerはSparkコンポーネントの自動ディスカバリを実行、Sparkクラスターのメトリックを表示します(マスター ノードとワーカー ノード)。メモリとCPUを監視して、メモリ消費の変動は通知します。
  • リアルタイム データ:クラスター内の各コンポーネント(とりわけ、エグゼクターとドライバー)まで、ガベージ コレクションとメモリを追跡します。アプリケーションとコアの情報を確認可能です。
  • パフォーマンス低下を迅速に解決:パフォーマンスの問題があれば、直ちに通知が行われます。エンド ユーザー体感に問題が生じる前からボトルネックを把握し、すばやい是正措置が可能です。

 

Apache Spark――新規監視を追加するには

メモ
SPARK_HOME/conf/metrics.properties.templateファイルで次の行をコメント解除し、metrics.propertiesに保存、Apache Sparkインスタンスを再起動すると、メトリック収集が可能となります。
master.source.jvm.class=org.apache.spark.metrics.source.JvmSource
worker.source.jvm.class=org.apache.spark.metrics.source.JvmSource
driver.source.jvm.class=org.apache.spark.metrics.source.JvmSource
executor.source.jvm.class=org.apache.spark.metrics.source.JvmSource


Apache Sparkマスター配下のワーカー ノードを監視するには、すべてのノードのディスカバリをクリックしてください。

新規監視の作成手順

Apache Spark監視を作成するには、次の手順に従ってください。

  • 新規監視をクリックし、Apache Sparkを選択してください。
  • Apache Spark監視表示名を指定してください。
  • Apache Sparkマスターを実行しているホストのホスト名IPアドレスを入力してください。
  • Apache Sparkマスターポートを入力してください。デフォルトでは、8080です。
  • ポーリング間隔を入力してください(分)。
  • Sparkへのアクセスを確認するには、認証情報のテスト ボタンをクリックしてください。
  • Spark監視を関連付ける監視グループを、コンボボックスで選択します(任意項目)。監視は複数グループに関連付け可能です。
  • 監視の追加をクリックすると、SparKをネットワークから検出し、監視が始まります。

 

AddMonitor APIでApache Spark監視を追加する

REST APIで監視を追加する構文
http://[Host]:[Port]/AppManager/xml/AddMonitor?apikey=[API_KEY]&type=ApacheSparkMaster&displayname=[DISPLAY_NAME]&host=[HOST]&port=[PORT]&SSL=[true/false]&DiscoverAllNodes=[YES/NO]

リクエスト パラメーター

APIリクエストにかかわるパラメーターを下に記します。共通リクエスト パラメーターのリストも参照ください。

フィールド 説明
apikey 「管理」タブのAPIキーの作成で生成したキーを指定してください。
type 追加する監視のタイプです。値はApacheSparkMasterにしてください。
displayname Apache Spark監視の表示名です。
host Apache Sparkサーバーを実行しているホストの名前です。
port Apache Sparkサーバーを実行しているポートの番号です。
ssl SSLを有効にするか指定します。値はtruefalseです。
DiscoverAllNodes ワーカー ノードすべてをディスカバリするか、指定します。

 

監視対象のパラメーター

監視タブをクリックすると監視カテゴリ ビューへ移動します。Webサーバー/サービス テーブルでApache SparkマスターかApache Sparkワーカーの監視をクリックしてください。Spark一括設定ビューが、3つのタブに分類・表示されます。

  • 可用性タブでは、過去24時間か30日の可用性履歴を表示します。
  • パフォーマンス タブでは、過去24時間か30日のステータスとイベントを表示します。
  • リスト ビューでは、一括管理設定が可能です。

 

監視名をクリックすると、全サーバーの詳細が次のタブで表示されます。

 

Apache Sparkマスター

概要

パラメーター 説明
ノード詳細
ノード名 Apache Sparkワーカー ノードの名前です。
利用済みメモリ(%) Sparkワーカー ノードがマシンで利用している総メモリの割合を表します(%)。
空きメモリ(%) マシンにある全空きメモリの割合を表します(%)。
メモリ利用率
利用済みメモリ Sparkマスター ノードがマシンで利用している総メモリの割合を表します(%)。
空きメモリ Sparkマスター ノードの総空きメモリの割合を表します(%)。
総メモリ Sparkアプリケーションがマシンで利用を許可されているメモリの総量です。
利用済みメモリ Sparkアプリケーションが利用しているメモリの総量です。
マスター概要
アライブ ワーカー Sparkクラスターにあるアライブ状態のワーカーの数を指します。このステータスであれば、アプリケーションの受け入れが可能です。
アクティブ アプリケーション Sparkインフで実行中のアクティブなアプリケーションの数です。
待機アプリケーション 待機中のアプリケーションの数を示します。
完了アプリケーション 完了したアプリケーションの数を示します。
利用コア Apache Sparkマスターで利用中のCPUコアの数です。

 

ワーカー

スタンドアロン モードでは、ワーカーは個別ノードごとで実行されるプロセスであり、ノードのリソース割り当てリクエストを管理しているほか、エグゼクターの監視を行っています。

CPUコア数は、ワーカー ノードごとに利用しているものの数を指します。

パラメーター 説明
ワーカー詳細
Web UIアドレス ワーカーWeb UIのURLです。Web UIは実行中のSparkアプリケーションのコンソール画面で、Sparkのジョブ実行を、ブラウザーから確認できます。
ID ワーカー ノードを一意に特定できるIDです。
利用済みコア
空きコア 利用されていない空きCPUコアの数です。
利用済みメモリ(GB) ワーカー ノードが利用している総メモリ量を指します。
空きメモリ(GB) ワーカー ノードに存在する空きメモリ総量を指します。
利用済みメモリ(%) ワーカー ノードが利用しているメモリの割合です(%)。
最新ハートビートからの経過時間(秒) 最新ハートビート以来の経過時間です。ワーカー ノードが最後にマスター ノードにコンタクトしてから過ぎた時間とも言えます。
ステータス ワーカー ノードの現在のステータスを表します(アライブ、デッド)。

 

アプリケーション

パラメーター 説明
アプリケーション詳細
アプリケーション名 アプリケーションの名前です。
ID アプリケーションを参照する時のIDです。
ユーザー 特定アプリケーションに関連付いたユーザーを指します。
スレーブごとの割り当てメモリ(GB) 各ワーカーに割り当てられたメモリの量を表します。
実行時間(分) アプリケーション起動以来の総実行時間です。
ステータス あるアプリケーションの現状ステータスを示します(待機中、実行中)。

 

メモリ

Sparkが利用できる最大ヒープ メモリを指します。

パラメーター 説明
ヒープ メモリ
利用済みヒープ 総利用ヒープ メモリの比率を表します(%)。
空きヒープ 空きヒープ メモリの比率を表します(%)。
最大ヒープ サイズ
初期ヒープ サイズ 割り当てのあった最小ヒープ メモリです。
コミット済みヒープ サイズ コミット済みヒープ メモリの総量です。
利用済みヒープ サイズ 利用中の総ヒープ メモリを指します。
非ヒープ メモリ
利用済み非ヒープ 利用中の非ヒープ メモリの比率を表します(%)。
空き非ヒープ 空き非ヒープ メモリの比率を表します(%)。
最大非ヒープ サイズ Sparkが利用できる最大非ヒープ メモリを指します。
初期非ヒープ サイズ 割り当てのあった最小非ヒープ メモリを表します。
コミット済み非ヒープ サイズ コミット済み非ヒープ メモリの総量です。
利用済み非ヒープ サイズ 利用中の非ヒープ メモリ総量を指します。
JVM
利用済みJVM 利用中のJVMメモリ量を指します(MB)。
空きJVM JVMで利用できるメモリの量を指します(MB)。
最大JVMサイズ メモリ管理に使える最大ヒープを表します(GB)。
初期JVMサイズ Java仮想マシンが初めにOSにリクエストするヒープの量を示します(MB)。
コミット済みJVMサイズ コミット済みJVMメモリの総量です。
利用JVMサイズ 利用済みJVMメモリの総量です。
MarkSweepとScavenge
MarkSweep数 MarkSweep GCでのガベージ コレクション発生回数を表します。
MarkSweep時間 MarkSweep GCでのガベージ コレクションに、かかった時間を表します。
Scavenge数 Scavenge GCでのガベージ コレクション発生回数を表します。
Scavenge時間 Scavenge GCでのガベージ コレクションに、かかった時間を表します。
メモリ プール詳細
メモリ プール メモリ プールの名前です。
最大(MB) 最大プール メモリ割り当て量を示します(MB)。
コミット済み(MB) コミット済みプール メモリの総量です。
初期(MB) 最初にOSにリクエストするプール メモリの量を示します(MB)。
利用済み(MB) 利用済みプール メモリの総量です。
利用率(%) 利用中のプール メモリの割合を表します(%)。

 

RDD詳細

パラメーター 説明
コンパイル詳細
平均コンパイル時間(Mean) ソースコードのコンパイルにかかる時間を示します。
コンパイル数 ファイル ローディング中に発生したコンパイルの総数を指します。
コンパイル詳細
平均生成クラスサイズ(Mean) 生成されたクラスのサイズを指します。
平均生成メソッド サイズ(Mean) クラス内で生成された各メソッドのサイズを指します。
平均ソースコードサイズ(Mean) ソースコードのコンパイルにかかる時間を示します。
生成クラス数 作成されたクラスの数です。
生成メソッド数 クラス内で作成されたメソッドの数を表します。
ソースコード数 コンパイルのためノードに読み込まれたソースコードファイルの総数です。
カウンター
ファイル キャッシュ ヒット ファイル レベルのキャッシュ ヒットが発生した回数を指します。
ディスカバリ済みファイル 検出したファイルの総数を示します。
Hiveクライアント呼び出し クエリ処理のためHiveに送られたクライアント呼び出しの総数を表します。
並列リスティング ジョブ数 並列で実行するジョブの総数を表します。
取得済みパーティション 取得済みパーティションの総数を表します。

 

設定

パラメーター 説明
設定詳細
マスターURL マスター ノードのURLです。
総ワーカー数 クラスター内でプロビジョンされているワーカーの総数です。
総メモリ Sparkマスター ノードに割り当てられた総メモリを指します。

 

Apache Sparkワーカー

概要

パラメーター 説明
メモリ利用率
利用済みメモリ率(%) Sparkワーカー ノードがマシンで利用している総メモリの割合を表します(%)。
空きメモリ率(%) マシンにある全空きメモリの割合を表します(%)。
利用済みメモリ 利用可能なメモリのうち、ワーカー ノードが実際に利用している分を指します。
空きメモリ ワーカー ノードで利用できる、空きメモリの総量を指します。
ワーカー概要
アクティブなエグゼクター アクティブなエグゼクターの数です。
Finishedエグゼクター 終了したエグゼクターの数を表します。Sparkエグゼクターはエラーの際も、関連付いているアプリケーションが終了した際も、停止します。
空きコア 特定ワーカーで利用できる空きコアの総数です。
利用コア 特定ワーカーで利用しているコア総数です。

 

エグゼクター

パラメーター 説明
エグゼクター詳細
エグゼクターID 特定エグゼクターの一意のIDです。
エグゼクター メモリ(GB) 特定エグゼクターで利用できる総メモリ量を示します。
アプリケーションID エグゼクターに関連付いたアプリケーションの、一意のIDを意味します。
アプリケーション名 特定アプリケーションの名前です。
ユーザー 特定アプリケーションに関連付いたユーザーを指します。
スレーブごとの割り当てメモリ(GB) 各ワーカーに割り当てられたメモリの量を表します。

 

メモリ

パラメーター 説明
ヒープ メモリ
利用済みヒープ 総利用ヒープ メモリの比率を表します(%)。
空きヒープ 空きヒープ メモリの比率を表します(%)。
最大ヒープ サイズ Sparkが利用できる最大ヒープ メモリを指します。
初期ヒープ サイズ 割り当てのあった最小ヒープ メモリです。
コミット済みヒープ サイズ コミット済みヒープ メモリの総量です。
利用済みヒープ サイズ 利用中の総ヒープ メモリを指します。
非ヒープ メモリ
利用済み非ヒープ 利用中の非ヒープ メモリの比率を表します(%)。
空き非ヒープ 空き非ヒープ メモリの比率を表します(%)。
最大非ヒープ サイズ Sparkが利用できる最大非ヒープ メモリです。
初期非ヒープ サイズ 割り当てのあった最小非ヒープ メモリを表します。
コミット済み非ヒープ サイズ コミット済み非ヒープ メモリの総量です。
利用済み非ヒープ サイズ 利用中の非ヒープ メモリ総量を指します。
JVM
利用JVM 利用中のJVMメモリ量を指します(MB)。
空きJVM JVMで利用できるメモリの量を指します(MB)。
最大JVMサイズ メモリ管理に利用できる最大ヒープ量を示します(GB)。
初期JVMサイズ Java仮想マシンが最初にOSにリクエストするヒープの量を示します。(MB)
コミット済みJVMサイズ コミット済みJVMメモリの総量です。
利用済みJVMサイズ 利用中のJVMメモリの総量です。
MarkSweepとScavenge
MarkSweep数 MarkSweep GCで発生したガベージ コレクションの回数を示します。
MarkSweep時間 MarkSweep GCでのガベージ コレクションに、かかった時間を表します。
Scavenge数 Scavenge GCで発生したガベージ コレクションの回数を示します。
Scavenge時間 Scavenge GCでのガベージ コレクションに、かかった時間を表します。
メモリ プール詳細
最大(MB) 割り当てられた最大プール メモリを指します(MB)。
初期(MB) 最初にOSにリクエストするプール メモリの量を示します(MB)。
コミット済み(MB) コミット済みプール メモリの総量を指します。
利用済み(MB) 利用中のプール メモリの総量です。
利用率(%) 利用中のプール メモリの比率を表します(%)。

 

RDD詳細

パラメーター 説明
コンパイル詳細
平均コンパイル時間(Mean) ソースコードのコンパイルにかかる時間を示します。
コンパイル数 ファイル ローディング中に発生したコンパイルの総数を指します。
コンパイル詳細
平均生成クラスサイズ(Mean) 生成されたクラスのサイズです。
平均生成メソッド サイズ(Mean) クラス内で生成された各メソッドのサイズを指します。
平均ソースコードサイズ(Mean) コンパイルしたソースコードのテキスト サイズを表します。
生成クラス数 作成されたクラスの数です。
生成メソッド数 クラス内で作成されたメソッドの数を表します。
ソースコード数 コンパイルのためノードに読み込まれたソースコードファイルの総数です。
カウンター
ファイル キャッシュ ヒット ファイル レベルのキャッシュ ヒットが発生した回数を指します。
ディスカバリ済みファイル 検出したファイルの総数を示します。
Hiveクライアント呼び出し クエリ処理のためHiveに送られたクライアント呼び出しの総数を表します。
並列リスティング ジョブ数 並列で実行するジョブの総数を表します。
取得済みパーティション 取得済みパーティションの総数を表します。

 

設定

パラメーター 説明
設定詳細
ワーカーID ワーカーへの言及に使うIDです。
マスターURL マスター ノードのURLです。
マスターWeb UI URL マスター ノードのWeb UIのURLです。
総メモリ 特定ワーカー ノードに割り当て済みで利用可能なメモリの総量を示します。