2017年12月7日0件のコメント皆さんこんにちは、GMOアドマーケティングのS.Rです。SparkのProgramを開発する上で、Performanceの改良やInstanceの設定のTuningはかなり重要です。これらのチューニングはSparkのWebUIを使えばかなり簡単に制御できます。そこで、今回はSparkのWebUIを皆さんへ紹介致します。※この記事を理解するには、Spark、Hadoop、Linuxのshellコマンドの基本知識が必要です。Sparkとは?Sparkの概要は以下のWikipediaの記事を参考にして下さい。Sparkはオープンソースのクラスタコンピューティングフレームワークである。カリフォルニア大学バークレー校のAMPLabで開発されたコードが、管理元のApacheソフトウェア財団に寄贈された。Spark、2014年5月30日、ウィキペディア日本語版、https://ja.wikipedia.org/wiki/Apache_Spark)。Sparkのインストール:Sparkの公式ダウンロードサイトで任意のバージョンをダウンロードします。今回は例として最新のSpark2.2.0、Pre-bulit版をダウンロードしました。Sparkのモードを選びます。Sparkには3つの起動モードがあります。今回は例としてこのモードで説明します。Yarnで起動します。)は、Hadoopクラスタのリソース管理、ジョブスケジューリングを担当するモジュールです(YARN、2014年5月30日、ウィキペディア日本語版、https://ja.wikipedia.org/wiki/Apache_Hadoop#Yet_Another_Resource_Negotiator_.28YARN.29)。Mesosで起動します。https://en.wikipedia.org/wiki/Apache_Mesos)。SparkのShellを起動します。今回は例としてScalaのShellを起動します。WebUIへアクセス:今回は二つモード(StandaloneとDataproc)でSparkのWebUIをアクセスする方法を紹介します。Standalone:例としてStandaloneモードでSparkの公式サイトに記載されているLinearRegressionのSampleCodeを実行します。Code、Data)からDownloadしてください。今回はWebUIを確認しやすくするために、ソースコードの最後に下記の”halting”のコードを追加します。sleepsleep(400)操作の手順は以下の通りです:Sparkをインストールします。LinearRegressionのSampleCodeをsubmitします。NodeのIPやPortを入力してWebUIへアクセスします(Standaloneの場合はhttp://127.0.0.1:4040/jobs/を入力します)。WebUIのアクセスに成功すると図2のような画面を確認することが出来ます。WebUIの各部については第3章で詳しく説明します。マネージドサービスであるDataprocのWebUIにアクセスする方法を紹介します。Cloudの公式サイトを参考にしてください。DataprocのInstanceを立ち上げます。使うCommandは下記の通りです。tunnelを作ります。使うCommandは下記の通りです。Cloudの公式サイトを参考にしてください。Sparkのapplicationをsubmitします。今回は例としてLinearRegressionのSampleCodeをsubmitします。使うCommandは下記の通りです。Line(Window)でChromeを起動します。使うCommandは下記の通りです。Pathは表1の通りです。(x86)\Google\Chrome\Application\chrome.exe起動したChromeでhttp://[MasterNodeのInstance名]:8088へアクセスします。アクセスすると、DataprocのWebUIを確認することができます(図3)。DataprocのWebUIの項目「TrackingUI」から「History」をクリックすることで、図3の様なSparkのWebUIに遷移できます。6つのTabがあります。JobでJobのListが確認できます(図4)。JobのDescriptionをクリックすることでさらに詳細のJobを確認することができます。LinearRegression.scala:696)をクリックしてみます。詳細Jobの詳細画面にはstageが並んでいます。気になるstageのDescription項目をクリックするとさらに詳細な情報を確認することができます(図5)。Stagesで全てのStagesのListが確認できます。気になるStagesをクリックすることで、そのStageの詳細を確認することができます(図6)。StagesStorageStorageで当InstanceのStorageの状況を確認できます。CodeではRDDの詳細はないのでStorgeの詳細画面はBlankになりました(図7)。詳細ExecutorsExecutorsで当Executorsの詳細状況を確認できます(図8)。詳細SQLSQLでSubmitしたCodeで実行されたSQLの詳細状況を確認できます(図9)。気になるStepのDescriptionをクリックして当Stepの詳細情報を確認できます。LinearRegression.scala:198)をクリックしてみました。図10はクリック後の遷移画面です。まとめ今回はSparkのWebUIについて紹介しました。いかがだったでしょうか。私は以前、大規模なデータのSparkのProgramを開発していたときに一番悩んだのは、メモリ不足によるエラーを解決することでした。利用することでProgramの各部分の処理時間、メモリの使用量などの状況を全て確認できるようになりました。これにより、Programのエラー解決がスムーズになるので、皆さん興味があればSparkのProgramを開発する時にぜひ試してください。@gmoap_engineer本ブログで発信される情報は、各エンジニア個人の見解であり、弊社の公式見解ではありません。本ブログに掲載、引用等をしている商品またはサービス等の名称は、各社の商標または登録商標です。その他の事項について一切責任を負いかねます。発表する情報には注意を払っておりますが、公式発表、見解については、弊社WEBサイトおよびプレスリリースなどをご確認ください。GMOインターネットグループにおけるソーシャルメディア運用ポリシーについては次のページをご確認ください。本ブログに掲載のあるソフトウェアのダウンロードは自己責任で御願い致します。ソフトウェアのダウンロードの結果、ご利用者に何らかの損失・損害が生じたといえども、当社ではその責任を負いかねます。本ブログに掲載のあるソフトウェアを扱う際は、各ソフトウェアの公式リファレンスを参照のもとご使用下さい。ソフトウェアの実行の結果、ご利用者に何らかの損失・損害が生じたといえども、当社ではその責任を負いかねます。