シェアする

  • このエントリーをはてなブックマークに追加





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

シェアする

  • このエントリーをはてなブックマークに追加
  • 0

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の前に「–」をつけて

行う必要があります。

後片付け

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

ブログランキング・にほんブログ村へ
にほんブログ村


人気ブログランキング

シェアする

  • このエントリーをはてなブックマークに追加

フォローはいかがですか?