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を有効にするか指定します。値はtrueかfalseです。 |
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) | 利用済みプール メモリの総量です。 |
利用率(%) | 利用中のプール メモリの割合を表します(%)。 |
パラメーター | 説明 |
---|---|
コンパイル詳細 | |
平均コンパイル時間(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) | 利用中のプール メモリの総量です。 |
利用率(%) | 利用中のプール メモリの比率を表します(%)。 |
パラメーター | 説明 |
---|---|
コンパイル詳細 | |
平均コンパイル時間(Mean) | ソースコードのコンパイルにかかる時間を示します。 |
コンパイル数 | ファイル ローディング中に発生したコンパイルの総数を指します。 |
コンパイル詳細 | |
平均生成クラスサイズ(Mean) | 生成されたクラスのサイズです。 |
平均生成メソッド サイズ(Mean) | クラス内で生成された各メソッドのサイズを指します。 |
平均ソースコードサイズ(Mean) | コンパイルしたソースコードのテキスト サイズを表します。 |
生成クラス数 | 作成されたクラスの数です。 |
生成メソッド数 | クラス内で作成されたメソッドの数を表します。 |
ソースコード数 | コンパイルのためノードに読み込まれたソースコードファイルの総数です。 |
カウンター | |
ファイル キャッシュ ヒット | ファイル レベルのキャッシュ ヒットが発生した回数を指します。 |
ディスカバリ済みファイル | 検出したファイルの総数を示します。 |
Hiveクライアント呼び出し | クエリ処理のためHiveに送られたクライアント呼び出しの総数を表します。 |
並列リスティング ジョブ数 | 並列で実行するジョブの総数を表します。 |
取得済みパーティション | 取得済みパーティションの総数を表します。 |
パラメーター | 説明 |
---|---|
設定詳細 | |
ワーカーID | ワーカーへの言及に使うIDです。 |
マスターURL | マスター ノードのURLです。 |
マスターWeb UI URL | マスター ノードのWeb UIのURLです。 |
総メモリ | 特定ワーカー ノードに割り当て済みで利用可能なメモリの総量を示します。 |