サイトアイコン たーちゃんの「ゼロよりはいくらかましな」

【AWS】【EMR】分散処理させたコアのEC2が出力したログを検索する

AWSの分散処理基盤サービスであるEMRを利用していて、

sparkで実装し、EC2を数台、時には数十台起動させて

分散処理することがあります。

 

分散処理は難しいところもありますが、

大量のデータを扱う場合には非常に有益です。

 

 

ですが、分散処理しているが故にデバッグプリントを入れてみようと思っても、

一体どのコアで出力されているか?というのは動かしてみないとわかりません。

 

 

そんなときに僕が使っている方法を紹介したいと思います。

 

 

 

 

 

方法

aws cliを用いたコマンドラインで対応します。

-- 準備
mkdir search_dir
cd search_dir

-- ログ収集 & 検索
aws s3 cp s3://<EMRのログ出力先>/<クラスタID>/containers/application_XXXXXXXXXXXXX_XXXX/ ./ --recursive
find ./ -type f -name "std*.gz" -print0 | xargs -0 zgrep -nH <debug print>

-- 後片付け
cd ..
rm -rf search_dir

 

準備

EMRクラスターが出力したログを集めるためのフォルダ作りです。

 

 

ログ収集 & 検索

aws cliでクラスタID配下のコンテナ出力ログをダウンロードします。

そのあとfindでstdout.gzとstderr.gzの2つの圧縮ログのみを指定して、

解凍し、探したいdebug printを指定して検索します。

 

 

debugprintがハイフンで始まる場合はdebugprintの前に「–」をつけて

行う必要があります。

 

 

後片付け

作ったフォルダ削除します。

 

 


にほんブログ村


人気ブログランキング

モバイルバージョンを終了