EMR Controls, Debugging, Monitoring アマゾンデータサービスジャパン株式会社
このセッションの目的 EMR 環境の運用方法を講義とハンズオンを通して理解する デバッグ 調査の方法 モニタリングの方法 Copyright 2012 Amazon Web Services
アジェンダ デバッグ 調査 ログの仕様 ログ確認方法モニタリング Management Console (CloudWatch,etc) Haddop UI ハンズオン サンプル Job Flowの実行 Webプロキシ設定 各種閲覧 Copyright 2012 Amazon Web Services
EMR ジョブの構成 Hadoopクラスターの開始 終了 EMRではjob flowと呼ぶ job flowを構成するもの Bootstrap Action Hadoop 起動前 ( クラスタ起動後 ) に実行するプログラム群 追加ソフトウェアのインストール Hadoopの設定等 起動パラメータで指定 Job flow 稼働中の実行は不可 Step Hadoopに投げるジョブの構成要素 ステップはJob flow 稼働中に追加可能 Task 各 Step を構成する MapReduce 処理の実体
コンソールでのログ閲覧 Enable Debugging で制御 No の場合 Step レベルの情報 ログのみ閲覧可能 Yes の場合 Step レベルに加えて Hadoop レベルの情報 ログを閲覧可能
マスタノード上のログ EMR のログはマスタノードに集約されている /mnt/var/log/ hadoop/ *.log steps/ マスタノードのデーモンプロセスログ類 ステップ毎のログ ( ) ( ) Management Console からも閲覧可能
S3 上のログ --log-uri で指定した S3 の格納先に保存 マスタノードに集約されたログが保存される ( 約 5 分後 ) <job id>/ s3n://<< 指定したバケツ名 >>/<job id> daemons/ <node id> ノード毎のデーモンプロセスのログ jobs/ Job 毎のログ nodes/ <node id> ノード毎のログ steps/ task-attempts/ <step no> yyyymmddhhmmxxxx/ ステップ毎のログ ( ) タスク毎の実行ログ ( ) ( ) Management Console からも閲覧可能
ステップログの種類 ステップログは以下の4 種類 controller ステップ起動準備から完了までのログ stdout Mapper/Reducerの実行されたステータスなど stderr ステップの標準的なエラーメッセージ syslog AWS 提供ソフトウェア以外のログ情報を含む
アジェンダ デバッグ 調査 ログの仕様 ログ確認方法モニタリング Management Console (CloudWatch,etc) Haddop UI ハンズオン サンプル Job Flowの実行 Webプロキシ設定 各種閲覧 Copyright 2012 Amazon Web Services
EMR ジョブの管理 モニタリング方法 AWS Management Console Job の起動 停止や クラスターのモニタリング EMR Ruby Client (CLI) EMR クラスターを完全に管理可能 開始 変更 step 追加 リサイズ 停止 一覧 SSH ログインやログ取得も可能 自作管理用スクリプトに組み込み可能 EMR マスターノード Hadoop ツール Hadoop UI サードパーティツール Ganglia 等
EMR ジョブ管理用ツール AWS EMR Management Console クラスタの管理 とジョブの状況確認
AWS CloudWatch ジョブの進捗状況 クラスタの状況 リソース状況 各インスタンスの状況 http://aws.typepad.com/aws_japan/2012/02/new-elastic-mapreducefeatures-metrics-updates-vpc-and-cluster-compute-support-guestpost.html
CloudWatch Alarm 通知設定例 HDFS 利用率 80% 以上 クラスターがアイドル状態
EMR ジョブ管理用ツール Hadoop UI (Job Tracker, NameNode) 実行中のジョブの状況 HDFSの状況を閲覧可能 JobTracker http://<< マスタノード >>:9100/ NameNode http://<< マスタノード >>:9101/
EMR ジョブ管理用ツール Hadoop UI(JobTracker) で確認できる項目 Cluster Summary 稼働中のスレーブノードの状況閲覧 Scheduling Information Hadoop ジョブスケジュールの進捗状況閲覧 Running Jobs 処理中ジョブの進捗状況閲覧 Completed Jobs タスク完了ジョブ一覧 Failed Jobs 処理中に失敗したジョブの状況閲覧 Local Logs ローカルログ ジョブトラッカーの履歴閲覧
EMR ジョブ管理用ツール マスターノード 指定したkey pairsを使って hadoopユーザでsshログイン /var/mnt/log/ 配下のログ閲覧 Parallel jobも可能 テキストブラウザでのHadoop UI 閲覧
Tools for Debugging EMR Jobs Ganglia bootstrap action でインストール可能
Tools for Debugging EMR Jobs collectd デフォルトで全ノードにインストール済み S3に出力するように設定済み 多数のフォーマットをサポート ( 例 : csv, rrd, )
モニタリング IF の比較 モニタリングツールを使い分けることで障害調査をより柔軟に行うことが可能 ステータス パフォーマンス Job Flow Step Task node スループットリソース AWS Management Console Ruby CLI Hadoop WebUI Ganglia
アジェンダ デバッグ 調査 ログの仕様 ログ確認方法モニタリング Management Console (CloudWatch,etc) Haddop UI ハンズオン サンプル Job Flowの実行 Webプロキシ設定 各種閲覧 Copyright 2012 Amazon Web Services
ハンズオンの流れ EMR クラスタでサンプルのジョブフローを実行 Amazon CloudFront (CDN) のログを解析するサンプル http://aws.amazon.com/articles/2440 WebUI 閲覧設定 FoxyProxy 設定 Putty SSH トンネリング設定各種メトリクス ログを確認 Management Console ログ CloudWatch Hadoop UI ノード数やインスタンスタイプを変えて再実行し各種参照余力があれば CloudWatch の Alarm を作ってみる http://docs.amazonwebservices.com/elasticmapreduce/lates t/developerguide/usingemr_viewingmetrics.html
サンプル Job Flow 実行 実行する Job Flow CloudFront HTTP Log Analyzer CloudFront で生成されたアクセスログを集計するデータ Input: HTTP ログ (CloudFront 形式 : 〇〇 GB) Output の一部 5 分毎のリクエスト数ヒストグラム (1.9KB) 5 分毎のレスポンスコード別のリクエスト数 (4.5KB) エッジロケーション毎の転送バイト数合計 (195byte) IP アドレス毎のリクエスト数 (215byte) IP アドレス毎のレスポンスコード別リクエスト数 (546byte) IP アドレス毎の転送バイト数 (268byte)
サンプル Job Flow 実行 手順 http://aws.amazon.com/articles/2440 確認項目 コンソールの振る舞い確認 各 IFでのログの出力 内容確認 CloudWatchでのメトリクス確認 Hadoop UIでのタスク進捗確認可変パラメータ Enable Debugging:Yes/Noで得られるログの違いを確認 インスタンス数 タイプ : 負荷 処理速度の違いを見てみる
Hadoop UI 閲覧方法 EMR の JobTracker と NameNode マスタノード上で ローカルからのみ閲覧可能 閲覧方法 マスタノード上でテキストブラウザ Lynx を使う # linux http://localhost:9100/ (JobTracker) # linux http://localhost:9101/ (NameNode) SSH トンネリングを使う SSH トンネリング + プロキシを使う ブラウザアドオン FoxyProxy を利用 Ssh/Putty 等でトンネリング
Putty での SSH トンネリング ( その 1) SSH 接続時に トンネリングを設定 Connection->SSH- >Tunnles Source Port に 8157 を指定し ADD を押下 Forwarded Port に D8157 が表示されていることを確認 ユーザ名 hadoop でマスターノードにログイン
Putty での SSH トンネリング ( その 2) FoxyProxy をインストール Firefox に FoxyProxy Standard 3.4 をインストール http://getfoxyproxy.org/downloads.html FoxyProxy 設定 Tool -> FoxyProxy Standard Add New Proxy を押下 以下の設定を行う 手動プロキシ設定 : チェック Host or IP Address :localhost ポート :8157 (Putty で設定した値をあわせる ) SOCKS プロキシ : チェック SOCKS v5 : チェック プロキシパターン : *compute.amazonaws.com* 接続 Firefox にて以下の URL にアクセス http://ec2-xxxx.ap-northeast-1.compute.amazon.aws.com:9100/