狠狠撸

狠狠撸Share a Scribd company logo
Hanoi: 複数レイヤーのトレースログを
用いたHadoopのパフォーマンス解析
清水 裕亮 櫻井 孝平 山根 智
金沢大学 自然科学研究科
計算機ソフトウェア研究室
導入:大規模分散システムの普及

?

研究、商用で分野を問わず注目されている

-

-

多くの企業で活用

-

-

クラウドコンピューティング、ビッグデータ

Google, Yahoo!, Amazon, Facebook, Twitter, etc..

IEEE Xploreの popular keyword のトップキーワードにも

-

論文数 2012年~

-

hadoop = 440本
cloud computing = 6446本
big data = 1334本

? Apache Hadoop、CDHの存在
2
Hadoop

?
?
?

ビッグデータを扱う為の分散並列処理フレームワーク
Googleの分散処理システムのオープンソースクローン

-

S. Ghemawat, et al: The Google File System, SOSP’13
J. Dean, et al: MapReduce : Simplified Data Processing on Large Clusters, OSDI’04

Hadoopを用いることで比較的容易に大規模な分散処理シ
ステムが構築できる

-

高いスケールアウト性能

-

透過性

コモディティハードウェアで構築可能
処理タスク、ファイルのレプリケーションによるフォールト
トレラントと高可用性

3
大規模分散システムの課題

デバッグ?チューニングが困難

?

Hadoopを例とすると、

-

膨大なパラメータの数
システム動作の非決定性
静的なテスト?解析手法が困難、不十分
分散配置されたログ
ログのサイズ

4
Hadoopのデバッグ?チューニングの課題と提案

?

システム動作の非決定性、静的なテスト?解析手法が困難?

?

?

複数レイヤーにまたがっている膨大なパラメータ?

?

?

ノード毎のデーモンごとに分散配置されたログ、ログのサイズ?

5
Hadoopのデバッグ?チューニングの課題と提案

?

システム動作の非決定性、静的なテスト?解析手法が困難

? システム実行時のログ?トレース情報を用いた解析
が有効

?

複数レイヤーにまたがっている膨大なパラメータ

? 複数レイヤーのログを収集
? 適切な粒度のトレース
?

ノード毎のデーモンごとに分散配置されたログ、ログのサイズ

? 長時間のバッチ処理に適した継続可能なログの収
集?解析

? マルチプロセスに対応できるロギング
6
Hadoopシステムのアーキテクチャ概要

Hadoop
NameNode

JobTracker

Slave

Slave

Master

Map

DataNode

Map
Reduce

Data
Blocks

Slave

TaskTracker

Reduce

Data
Blocks

DataNode

Map

TaskTracker

Reduce

Data
Blocks

DataNode

TaskTracker

Java仮想マシン

Java仮想マシン

Java仮想マシン

Java仮想マシン

OS

OS

OS

OS

ハードウェア

ハードウェア

ハードウェア

ハードウェア

?
?

マスタスレーブ型のアーキテクチャ
各ノードのJava仮想マシン上でHadoopの各プロセスが強調動作する
7
Hadoopシステムのアーキテクチャ概要

Hadoop
NameNode

JobTracker

Slave

Slave

Master

Map
Data
Blocks

DataNode

Slave

Map
Reduce

TaskTracker

Data
Blocks

DataNode

Map
Reduce

TaskTracker

Reduce

Data
Blocks

DataNode

TaskTracker

イヤー、
レJava仮想マシン
Java仮想マシン
Java仮想マシン
Java仮想マシン 数
計算機、複
複数
OS
OS いう特徴 OS
OS
プロセスと
数のマルチ
複
そ
ハードウェア して
ハードウェア
ハードウェア
ハードウェア

?
?

マスタスレーブ型のアーキテクチャ
各ノードのJava仮想マシン上でHadoopのプロセスが強調動作する
8
目次

? 導入
? 提案手法
? 実験
? まとめ

9
提案手法

1. 複数レイヤーかつ適切な粒度のロギング

2. 長時間のバッチ処理を行う分散システムの解析基盤

10
1. 複数レイヤー、適切な粒度のロギング
アプリケーション層

Slave

?map/reduceタスクのメソッドトレース

Hadoop

- map/reduceの各フェーズでのkeyの分布

Map
Reduce

Data
Blocks

DataNode

TaskTracker

Java仮想マシン

ミドルウェア層
?DataNodeクライアントの通信ログ
?TaskTrackerクライアントの通信ログ

仮想マシン層

OS
ハードウェア

?JavaVMメモリ使用率、GC

ハードウェア?OS層
?計算機リソース使用率
11
2. 長時間のバッチ処理を行う分散システムの解析基盤

?
?

複数計算機からのログの収集
分散システムかつマルチプロセスに適したログの収集

-

各ノード内でログデータの集約処理

? 持続可能な解析
-

障害時のログの再転送処理
固定長のデータベース
ログの収集、解析、可視化までの自動化

12
提案システム概要
スレーブ
M

マスター
Hadoopクラスタ

M

M
M

M
M

モニター
ログデータベース

解析システム

解析?可視化

解析サーバ
提案システム概要
スレーブ
M

マスター
Hadoopクラスタ

M

M
M

M
M

モニター
ログデータベース

解析システム

解析?可視化

解析サーバ
MapReduce処理の概要

TaskTracker

TaskTracker

InputFormat

sort

map

reduce

combine
partition

OutputFormat

HDFS
split
Files
Files

split
split
split
split
split

File

shuffle
TaskTracker

TaskTracker

TaskTracker

TaskTracker

File
MapReduce処理のロギング箇所
mapメソッドトレース
M
TaskTracker

TaskTracker

InputFormat

sort

map

reduce

combine
partition

OutputFormat

HDFS
split
Files
Files

split
split
split
split
split

M

File

shuffle
TaskTracker

TaskTracker

TaskTracker

TaskTracker

M

reduceメソッドトレース

shuf?e処理での通信バイトサイズ、遅延時間のクライアントログ

File
HDFSのデータの読み書き処理の概要
Client

Master

HDFS ?
ClientNode

HDFS ?
NameNode

HDFS?
Client

(?le name, block id)
(block id, block location)

instructions
to datanode

(block id,
byte range)

block data

Name
Node

heartbeat:
datanode
state

HDFS ?
DataNode

HDFS ?
DataNode

HDFS ?
DataNode

Data
Node

Data
Node

Data
Node

Data
Blocks

Data
Blocks

Data
Blocks

Slaves
HDFSの動作のトレース
Client

Master

HDFS ?
ClientNode

HDFS ?
NameNode

HDFS?
Client

(?le name, block id)
(block id, block location)

instructions
to datanode

(block id,
byte range)

M

block data

HDFS READ/WRITE	

バイトサイズ、実行時間

Name
Node

heartbeat:
datanode
state

HDFS ?
DataNode

HDFS ?
DataNode

HDFS ?
DataNode

Data
Node

Data
Node

Data
Node

Data
Blocks

Data
Blocks

Data
Blocks

Slaves
map/reduceメソッドトレースのロギング

ローカル内でのメソッドトレースの集約処理
Slave
M
Map

M
Map

?

M

map/reduceタスク毎に
HanoiMonitorが起動し、各
メソッドのトレースを行う

?

HanoiMonitorは同サーバの
HanoiDaemonにトレースロ
グを転送する

?

HanoiDaemonは転送された
ログの集約を行う

Reduce

HanoiMonitor
HanoiDaemon

Task
Tracker

19
メソッドトレースの監視のための技術

?

AspectJ

-

アスペクト指向プログラミングのJava実装

-

アスペクト指向プログラミング ?
??? オブジェクト指向プログラミングとはモジュール化を行いにく
い横断的関心事をアスペクトとしてモジュール化する技術 ?
? G. Kiczales, ECOOP 2001

? Hadoopのコードに変更を加えることなく、ロギングのた
めの機能を実装する

? ロギング機能による性能劣化を抑えるため、ロードタイム
ウェービングではなく、コンパイル時のコードの挿入をする
20
提案システム概要
スレーブ
M

マスター
Hadoopクラスタ

M

M
M

M
M

モニター
ログデータベース

解析システム

解析?可視化

解析サーバ
解析システム概要

ログストリームの収集?解析

?

?uentdを用いた分散配置されたログのリアルタイムな収集

-

?
?

ログ転送失敗時の自動フェイルオーバ

固定サイズのデータベース
mongoクエリを用いてkeyの分布の解析

22
目次

? 導入
? 提案手法
? 実験
? まとめ

23
実験環境
Hadoopクラスタ

コア数
RAM

ゲストOS
VirtualBox
ホストOS
ハードウェア

CPU
クロック数
コア数
RAM
ディスク

解析サーバ
CPU
クロック数
コア数
RAM
ディスク

Intel(R) Core(TM) i7-3770
3.40 GHz
8
16 GB
500GB

3
6 GB

ディスク

500GB

表1:実験用Hadoopクラスタの
各仮想マシン性能

Intel Core i5-3470 CPU
3.20 GHz
4
8 GB
1TB SATA HDD (7200 回転)

表3:実験用Hadoopクラスタの各計算機性能

表2: 解析サーバの計算機性能

24
実験環境
OS

CentOS 6.4
Linux 2.6.3-279.el6.x86_64 SMP

hadoop

2.0.0+1475-1.cdh4.4.0.p0.23.el6

AspectJ

1.7.1

Java

1.7.0

?uentd

0.10.39

mongoDB

2.4.8

表4: 使用したOS, 各種ツール,プロダクトのバージョン

25
実験

?
?

実験用MapRジョブにはWordCountプログラムを選択
解析基盤上のHadoopシステムでトレースログを取得?解
析?可視化を行う

!

分析の手法

?各計算機ごとに作成されるグラフについて、乖離を見つけ
る	

?グラフを低レイヤーなものから高レイヤーに見ていくこと
で、的確にシステム動作の把握のための情報が得られる

26
実験結果
ミドルウェア/アプリケーション層
Slave

node04

Hadoop
Map
Reduce

Data
Blocks

DataNode

reduce実行回数
HDFS読み込みバイトサイズ
仮想マシン層

TaskTracker

GCの実行回数

Java仮想マシン
OS
ハードウェア

ハードウェア?OS層

CPU使用率
27

メモリー使用率
key分布の解析

db.trace.keymap.node04.find({“time”:
{“$gte”:ISODate(2013-11-12 05:50:00),
$lt:ISODate(2013-11-12 06:00:00”)}, “metrics”:
{“sum”: {“$gt”:1000}}}).sort({“$natural”:
1}).limit(1);

?

mongoクエリを用いてログを取得する

← Keyの数 18100

28
分析結果

?
?
?
?

このノードに割り当てられるべきmapタスクが全て終わった
ガーベジコレクションが走っている
reduceフェーズの中のコピーが行われている
keyの数が多く、combineがうまく機能せずコピーに時間が
かかっている可能性
29
目次

? 導入
? 提案手法
? 実験
? まとめ

30
関連研究

J. Dai, et al: Hitune: Dataflow-Based Performance Analysis for Big Data Cloud,
USENIXATC’11
高次のデータフローをトレースし、低次元でのパフォーマンスボトルネック
を推定する

-

E. Marinelli, et al: Kahuna: Problem diagnosis for Mapreduce-based cloud
computing environments, NOMS’10
Hadoopが提供するメトリクス、ログを用いてノード間の乖離の自動検知を
行う

-

H. Herodotou, et al: Starfish: A Self-tuning for Big Data Analytics, CIDR’11
BTraceを用いて、map/reduceメソッドの実行時間を取得し、パフォーマ
ンスボトルネックの検知を行う

-

31
関連研究との比較

?Hadoopの利用場面の特徴に適した解析システムを提
案、実装	

?map/reduceメソッドの入出力Keyの分布を利用してい
る	

?ログデータの転送のボトルネックを、ローカル内で
のデータの集約処理で解消する手法

32
まとめ

?

分散システムのデバッグ?チューニングには、静的な解析
ではなく実行時のログ?トレース情報を用いた解析が有効

?
?

複数層のログかつ、適切な粒度のログを用いることが有効
MapRのひとつのジョブが長時間という特徴のため、ログ
の収集?解析を継続的に行える環境が必要
!

【今後の展望】

?

トレース情報を用いた解析の自動化

33
ご静聴ありがとうございました。

More Related Content

Comsys2013 10