SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
AspectJを用いた
大規模分散システムHadoopの
  監視とプロファイリング
    清水裕亮 櫻井孝平 山根智
     金沢大学自然科学研究科




          1
導入


• 近年、注目されている大規模分散システム
 -   クラウドコンピューティング

 -   ビッグデータ

     ➡Google, Yahoo!, Amazon, Twitter, Facebook, etc..
• 大規模分散処理フレームワークであるApache
 Hadoopを用いることで比較的容易に大規模な分散シ
 ステムが構築できる


                                                         2
Hadoop

ビッグデータを扱う為の分散並列処理フレームワーク

-   Googleの分散処理システムのオープンソースクローン
    Yahoo!のDoug Cutting氏によって開発
      高いスケールアウト性能
      コモディティハードウェアで構築可能
      処理タスク、ファイルのレプリケーションによるフ
      ォールトトレラントと高可用性
      透過性

                             3
大規模分散システム開発における課題


大規模分散システムのためのデバッグ手法
➡   ログは各ノードに分散して作成される

-   従来のソフトウェアに対するテキストベースのログを開発者が確認・解析す
    る手法は、クラスタを構成しているノード数が大規模な場合、現実的では
    ない 。重要なログ情報を見落とす可能性。

➡   既存の提供されている各種メトリクスは運用者向け。粒度が粗く、開
    発者には不十分

リアルタイムでの監視と解析(動作解析、障害検知)
➡ 事前のテストや検証によって全ての障害を取り除くことは困難

                                   4
提案手法
1. 実行命令のランタイムモニタ
2. 実行命令列を用いたアダプティブなプロファ
イリング

• システムの動作時の実行命令を受動的に取得、ロギング
• ロギングされた実行命令を収集し、統計的解析を行う
➡開発者がシステムの内部動作を理解・把握することを
 支援する

➡開発者がパフォーマンス改善を行うための効果的な情
 報を提供する
                         5
目次

1. 導入
2. 基盤技術
 - Hadoop
 - Hadoopのデバッグ・監視手法
3. 提案手法
4. 実装と実験
5. 考察・まとめ


                      6
Hadoop のアーキテクチャ
 Master
                                                 Slaves
Name       Job                                                     Map
                                  Map
Node     Tracker
                          Data          Reduce             Data          Reduce
                         Blocks                           Blocks


RPC
                          Data      Task                   Data      Task
                          Node     Tracker                 Node     Tracker
                   RPC



•      マスタスレーブ型

•      Hadoop分散ファイルシステム = NameNode + DataNode

•      Hadoop MapReduce処理基盤 = JobTracker + TaskTracker

•      ノード間の通信はRPC通信によって行われる
                                                                           7
一般的なHadoop動作の解析手法(1)

テキストベースのログを確認


➡ログは各ノードに分散して作成
    される
-   クラスタを構成するノード数は数10
    数1000

-   各ノードでは複数のデーモンが動作



➡重要なログの見落とし
➡障害対応への遅れ
一般的なHadoop動作の解析手法(2)
                        Hadoop job_201211301554_0002 on sirius
                        User: hadoop
                        Job Name: TeraSort
                        Job File: hdfs://sirius.csl.ec.t.kanazawa-
                        u.ac.jp:54310/hadoop/mapred/staging/hadoop/.staging/job_201211301554_0002/job.xml



    各種メトリクスを確認(ファイルに
                        Submit Host: sirius.csl.ec.t.kanazawa-u.ac.jp
                        Submit Host Address: 192.168.1.10
                        Job-ACLs: All users are allowed
                        Job Setup: Successful
                        Status: Succeeded




    出力、Web インターフェース経
                        Started at: Fri Nov 30 16:19:39 JST 2012
                        Finished at: Fri Nov 30 16:33:20 JST 2012
                        Finished in: 13mins, 40sec
                        Job Cleanup: Successful




    由、Ganglia経由)
                                                                                                       Failed/Killed
                          Kind    % Complete Num Tasks Pending Running Complete Killed
                                                                                                      Task Attempts

                          map           100.00%         102             0        0         102    0             0/9




-
                         reduce         100.00%           10            0        0          10    0             0/0




    MapReduce処理の進行状況や
                                                        Counter                      Map         Reduce           Total
                         File Input Format
                                              Bytes Read                      10,002,745,698              0   10,002,745,698
                         Counters




    各タスクの処理にかかった時
                                              SLOTS_MILLIS_MAPS                            0              0        8,594,755

                                              Launched reduce tasks                        0              0                10

                                              Total time spent by all
                                              reduces waiting after                        0              0                 0



    間、HDFS内のデータサイズ等の
                                              reserving slots (ms)

                                              Rack-local map tasks                         0              0                81
                         Job Counters
                                              Total time spent by all maps
                                              waiting after reserving slots                0              0                 0



    情報が取得可能
                                              (ms)
                                              Launched map tasks                           0              0               111

                                              Data-local map tasks                         0              0                30




➡運用者向け
                                              SLOTS_MILLIS_REDUCES                         0              0        7,463,804

                         File Output Format
                                              Bytes Written                                0 10,000,000,000   10,000,000,000
                         Counters

                                              FILE_BYTES_READ                 10,317,741,238 10,200,000,300   20,517,741,538




➡分散システムの開発には不十分
                                              HDFS_BYTES_READ                 10,002,757,938              0   10,002,757,938
                         FileSystemCounters
                                              FILE_BYTES_WRITTEN              20,402,514,180 10,200,241,332   30,602,755,512

                                              HDFS_BYTES_WRITTEN                           0 10,000,000,000   10,000,000,000

                                              Map output materialized
                                              bytes                           10,200,006,120              0   10,200,006,120


                                              Map input records                 100,000,000               0      100,000,000

                                              Reduce shuffle bytes                         0 10,119,092,736   10,119,092,736


                                                                                                                           9
目次

1. 導入
2. 基盤技術
3. 提案手法
 - 実行命令のランタイムモニタ
 - 取得した実行命令列を用いたアダプテ
   ィブな統計的解析

4. 実装と実験
5. 考察・まとめ

                       10
提案手法の構成要素


 Hadoop         Monitor    Profiler

•MapReduce
                            Fluentd
•HDFS           AspectJ
                            Zabbix
•RPC


              ‣監視          ‣リアルタイムで
              ‣実行命令のロギング   のログの解析・
              ‣収集          可視化

                                     11
実行命令のランタイムモニタ



• システム振る舞いを監視
• 実行された命令を受動的にロギングする
 -   ロギングされた実行命令の列を トレース と呼ぶ




                               12
実行命令のランタイムモニタ



• システム振る舞いを監視
• 実行された命令を受動的にロギングする
 -   ロギングされた実行命令の列を トレース と呼ぶ


 要件:
     少ない負荷
     モニタ機能の着脱の容易性



                               13
モニタ機能の技術 - AspectJ -


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

 ➡HadoopはJavaで記述されている
 ➡Hadoopのオリジナルコードを変更することなく、ロギ
     ングの機能などを実装することが可能


                                         14
モニタを配置した検証対象システム
Master

Name      Job                                        Slaves
Node    Tracker

                                      Map                                   Map

                         Data               Reduce             Data               Reduce
                        Blocks                                Blocks
   Monitor


                         Data           Task                   Data           Task
                         Node          Tracker                 Node          Tracker
RPC

                  RPC
                                 Monitor                               Monitor




• Hadoopクラスタの各ノードにモニタを配置
                                                                                   15
モニタを配置した検証対象システム
 Master

Name      Job                                        Slaves
Node    Tracker

                                      Map                                   Map

                         Data               Reduce             Data               Reduce
                        Blocks                                Blocks
   Monitor


                         Data           Task                   Data           Task
                         Node          Tracker                 Node          Tracker
RPC

                  RPC
                                 Monitor                               Monitor




• システム動作時、モニタは各種デーモン・プロセスの
 実行命令を監視し、実行命令をロギングする                                                              16
モニタを配置した検証対象システム
Master

Name       Job                                        Slaves
Node     Tracker

                                       Map                                       Map

                          Data               Reduce                 Data               Reduce
                         Blocks                                    Blocks
   Monitor


                          Data           Task                       Data           Task
                          Node          Tracker                     Node          Tracker
RPC

                   RPC
                                  Monitor                                   Monitor




      Master Trace                                      Slave Traces
 ‣NameNode Trace                                      ‣DataNode Trace
 ‣JobTracker Trace                                    ‣TaskTracker Trace
 ‣RPC Trace                                           ‣RPC Trace                        17
アダプティブなプロファイリング手法の提案



• Hadoopのような大規模な分散システムでは分割統治の
 アルゴリズムを採用
 → 主要な機能のための命令が繰り返し実行される
 → システム動作と実行命令の発生回数間の関係性

➡実行命令の出現回数を用いたシステム動作の解析
➡ 粒度 ごとにカウント
 → ノードレベル 、 プロセスレベル 、 メソッドレベル


                                18
アダプティブなプロファイリング
 Master
                                               Slaves
Name     Job                                                     Map
                                Map
Node   Tracker
                        Data          Reduce             Data          Reduce
                       Blocks                           Blocks


RPC
                        Data      Task                   Data      Task
                        Node     Tracker                 Node     Tracker
                 RPC




‣ 粒度ごとに実行命令をカウント
                                                                        19
ノードレベルでのプロファイリング
 Master
                                               Slaves
Name     Job                                                     Map
                                Map
Node   Tracker
                        Data          Reduce             Data          Reduce
                       Blocks                           Blocks


RPC
                        Data      Task                   Data      Task
                        Node     Tracker                 Node     Tracker
                 RPC




‣ ノードごとに実行命令をカウント
                                                                        20
デーモン・プロセスレベルでのプロファイリング
                       Hadoop MapReduce
 Master
                                                Slaves
Name     Job                                                      Map
                                 Map
Node   Tracker
                         Data          Reduce             Data          Reduce
                        Blocks                           Blocks


RPC
                         Data      Task                   Data      Task
                         Node     Tracker                 Node     Tracker
                 RPC




                       HDFS

‣ デーモン・プロセスごとに実行命令をカウント
                                                                         21
トレース解析環境の技術

    Fluentd
-
                            &
    統合ログ管理基盤

-   各ノードでfluentdデーモンがログを収集

-   ログはJSON形式で扱われる

    ➡各ノードで生成されたトレースを解析用サーバに転送
Zabbix
-   統合監視ソフトウェア

-   サーバ、ネットワークに接続されたデバイスを監視

-   収集したデータのグラフ化、トリガーによるアラート機能

    ➡ 収集したトレース解析結果の可視化           22
目次

1. 導入
2. 基盤技術
3. 提案手法
4. 実装と実験
 - モニタの実装
 - ベンチマークテスト
 - プロファイリング結果
5. 考察・まとめ

                23
実験環境
 CPU            Intel Core i5-3470 CPU
クロック数                 3.20 GHz
コア数                       4
 RAM                    8 GB
ディスク          1TB SATA HDD (7200 回転)

   OS      Linux 2.6.3-279.el6.x86_64 SMP
 Hadoop                 1.0.3
 AspectJ                 1.7.1
  Java                   1.7.0

       ※ 上記の計算機を6台用いる
                                            24
モニタ実装            RPC通信のためのパッケージ
                                         を監視対象に指定
privileged aspect RPCMonitor {
  public pointcut MethodExecute()
    : execution(public * *.*(..))
    && within(org.apache.hadoop.ipc.*)
    && !execution(* *.run*())
    && !execution(* org.apache.hadoop.metrics2.**.*(..))
    && !execution(* org.apache.hadoop.security.**.*(..))
    && !withincode(* java.lang.**.*(..))



  • 各ノードの、稼働するデーモン、プロセスごとにモ
     ニタを配置

  • メトリクスや、セキュリティ関連の実行命令はロギ
     ングの適用範囲から除く
                                                     25
トレース情報
 システム時刻      ホスト名          デーモン・
                           プロセス名



1352777292269-sirius-namenodetrace={
  DatanodeCommand[]
  org.apache.hadoop.hdfs.server.namenode.NameNode.send
  Heartbeat(DatanodeRegistration, long, long, long,
  int, int),
  [DatanodeRegistration(192.168.1.15:50010,
  storageID=DS-2031755896-192.168.1.15-50010-135217219
  3708, infoPort=50075, ipcPort=50020),
  922985177088,30648860672,845179580416,0,1]
}

      実行命令                            引数

                                                  26
パフォーマンス ベンチマーク
スループット[MB/sec] = 入力データサイズ / 経過時間
入力データサイ                                      スループット      トレースデータ
           モニタの有無     経過時間 [sec]
  ズ[GB]                                       [MB/sec]    サイズ[MB]

     1       ⃝      2m 25s (145sec)   6.9                  2.4
                                                84.1%
     1       ×      2m 2s (122s)      8.2                   0


     10      ⃝      8m 45s (525sec)   19.0                 3.6
                                                88.3%
     10      ×      7m 45s (465sec)   21.5                  0

                    1h 21m 54s
    100      ⃝                        20.4                 31.6
                                                96.2%
                    (4,914sec)
                    1h 18m 37s
    100      ×                        21.2                  0
                    (4,717sec)



•   使用したMapReduceサンプルプログラム - “terasort”

•   トレースサイズの増加率 6.43KB/sec
                                                                 27
プロファイリング テスト

• 使用するMapReduceプログラム - terasort
• 入力データサイズ - 10GB(サンプルプログラム
 teragenで作成)

• カウントを行う単位時間 - 10sec
      ノード、プロセス、メソッドレベルの各
       粒度についてプロファイリングを行う


                                  28
Filter




プロファイリング結果 - ノードレベル -
                                             03.12.2012 01:24 - 03.12.2012 02:24 (now!)



                                                                    01h 00m      (fixed)




          カウント数
                   2            3
              1K




                                                           時間
                   ■192.168.1.10 Master
                   ■■■■■192.168.1.11 15 Slaves
1. 各ノードで実行された実行命令の回数を、単位時間を10秒としてカウント
   アップ

2. ジョブ起動時には、マスターにおいて10秒間に約1K回ものメソッドが実行
   されている

3. Reduceフェーズにおいて全ノードで多くのメソッドが実行されている
                                                                         29
Filter




プロファイリング結果 - ノードレベル -
                                             03.12.2012 01:24 - 03.12.2012 02:24 (now!)



                                                                    01h 00m      (fixed)




          カウント数
                   1            2
              1K




                                                           時間
                   ■192.168.1.10 Master

                              CPU使用
                   ■■■■■192.168.1.11 15 Slaves
                        おいて、
           ト値を示  す時間に
1. 各ノードで実行された実行命令の回数を、単位時間を10秒としてカウント
  大きなカ  ウン               値の原因  となる実
   アップ
            、大きな  カウント
 率も多   いならば             とは有効   と言える
                  を計るこ
2. ジョブ起動時には、マスターにおいて10秒間に約1K回ものメソッドが実行
   されている ついて効率化
   行命令に
3. Reduceフェーズにおいて全ノードで多くのメソッドが実行されている
                                                                         30
h 2h 3h 6h 12h 1d 1w 2w 1m 3m 6m 1y All                                                    03.12.2012 01:25 - 03.12.2012 02:25



              プロファイリング結果 -プロセスレベル-
1m 1w 1d 12h 1h | 1h 12h 1d 1w 1m 6m 1y »»                                                                  01h 00m     (fixed)




                           Master                            Slave1                   Slave2




                           Slave3                            Slave4                   Slave5



                                             ■RPC
                                             ■HDFS(NameNode, DataNode)
                                             ■Hadoop MapReduce(JobTracker, TaskTracker)

    •           マスタのNameNodeは、ジョブの投入時に単位時間あたり0.75Kのメソ
                ッドを実行する

    •           スレーブ群のRPC、TaskTrackerについてはほぼ同様のグラフが得られ
                たが、DataNodeについてはノード間で差が見られる

       ➡ DataNodeのレプリケーションポリシーのランダム性による負荷の偏り
プロファイリング結果 -メソッドレベル 1-
SCREENS


hadoop cluster monitor - SLAVE1
                                                      Slave3
                                                        Filter
                                                                                                                SCREENS


                                                                                                                hadoop cluster monitor - SLAVE5
                                                                                                                                                                      Slave5
                                                                                                                                                                        Filter

Zoom: 1h 2h 3h 6h 12h 1d 1w 2w 1m 3m 6m 1y All                    03.12.2012 01:25 - 03.12.2012 02:25 (now!)    Zoom: 1h 2h 3h 6h 12h 1d 1w 2w 1m 3m 6m 1y All                    03.12.2012 01:26 - 03.12.2012 02:26 (now!)



«« 1y 6m 1m 1w 1d 12h 1h | 1h 12h 1d 1w 1m 6m 1y »»                                      01h 00m      (fixed)   «« 1y 6m 1m 1w 1d 12h 1h | 1h 12h 1d 1w 1m 6m 1y »»                                      01h 00m      (fixed)




                                     RPC                DN       TT                                                                       RPC                          DN        TT
                             各メソッドについてログ収集期間内に実行された回数が
                                プロセスごとの発生回数全体に占める割合



                                                                                                                                                                                 32
プロファイリング結果 -メソッドレベル 1-
                                                      Slave3                                                                                                         Slave5
SCREENS                                                                                                        SCREENS


hadoop cluster monitor - SLAVE1                                                                                hadoop cluster monitor - SLAVE5
                                                        Filter                                                                                                         Filter

Zoom: 1h 2h 3h 6h 12h 1d 1w 2w 1m 3m 6m 1y All                   03.12.2012 01:25 - 03.12.2012 02:25 (now!)    Zoom: 1h 2h 3h 6h 12h 1d 1w 2w 1m 3m 6m 1y All                   03.12.2012 01:26 - 03.12.2012 02:26 (now!)



«« 1y 6m 1m 1w 1d 12h 1h | 1h 12h 1d 1w 1m 6m 1y »»                                     01h 00m      (fixed)   «« 1y 6m 1m 1w 1d 12h 1h | 1h 12h 1d 1w 1m 6m 1y »»                                     01h 00m      (fixed)




  •Slave3とSlave5のDNについてのプロファイリング結果の乖離の原因と
          して、org.apache.hadoop.hdfs.server.datanode.FSDataset.
          getChannelPositionメソッドがあげられる

                                   ➡ FSDatasetはデータブロックの集合を扱うクラス、各ブロックは
                                         ユニークな名前とディスク上の位置情報を持つ。FSDirはUnixでのデ
                                         ィレクトリで、子にFSDirまたは、ブロックをもつ。      33
org.apache.hadoop.hdfs.server.datanode-
GRAPHS


SLAVE3 DN - method level
                                    Filter




! -FSDataset. getChannelPosition
Zoom: 1h 2h 3h All                           03.12.2012 01:25 - 03.12.2012 02:25


«« 1h | 1h »»                                                 01h 00m     (fixed)




                           Filter
  カウント数




                                                                                              03.1




                                                                                    時間




           • FSDatasetはデータブロックの集合を扱
                うクラス、各ブロックはユニークな名前と
                ディスク上の位置情報を持つ

           • getChannelPositionは、次のデータを書
                き込むブロック内のオフセットを取得する
                メソッド



                                                                                         34
org.apache.hadoop.hdfs.server.datanode-
GRAPHS


SLAVE3 DN - method level
                                    Filter




! -FSDataset. getChannelPosition
Zoom: 1h 2h 3h All                           03.12.2012 01:25 - 03.12.2012 02:25


«« 1h | 1h »»                                                 01h 00m     (fixed)




                           Filter
  カウント数




                                                                                              03.1




                                                                                    時間


           • FSDatasetはデータブロックの集合を扱
                HDFSのランダム書き込みがボトルネックの可能性
                うクラス、各ブロックはユニークな名前と
                  → バッファとしてSDDにデータを保存、ブロックの
                ディスク上の位置情報を持つ
              オフセット値でソーティング、可能な部分をシーケン
           •FSDirはUnixでのディレクトリで、子に
                     シャルライトで高速化が図れる可能性
           FSDirまたは、ブロックをもつ

           • getChannelPositionは、次のデータを書
                き込むブロック内のオフセットを取得する
                メソッド

                                                                                         35
関連研究
    [M. K. Aguilera 2003]
•   通信メッセージをモニタリング、集約アルゴリズムの提案
➡ 目的: 因果パスの検出
➡ 入出力メッセージ乖離がもっとも大きいものをボトルネックとする
    [Chen, 2003:PinPoint]
➡ 障害の原因の可能性が高い分散システム内のコンポーネントを検出
➡ 一回の考察の単位:単一マシンのひとつのリクエスト
    [Hellerstein,1999 :ETE]

    ‣   メソッドレベルのログを受動的に取得

    ‣   ノード間通信のみではなくメソッドレベルで内部動作を解析可能

    ‣   大規模な分散システム向けのメソッドの発生回数によるシステム
        動作の解析

    ‣   厳密な時刻は扱わない                   36
まとめ
提案手法
1. AspectJを用いたメソッドレベルのモニタ
    -   検証対象システムのオリジナルコードへの変更は必要ない
    -   システムのパフォーマンスへの負荷は少ない
2. トレースを用いたアダプティブなプロファイリング手法
    -   開発者がシステム動作を理解・解析することを支援
    -   パフォーマンスの改善に有効な情報を提供する

成果
• Hadoopの動作の解析に有効
    -   具体的にボトルネックの原因を指摘

今後の展望
•   ユーザプログラム、プラグインに対しても提案するプロファイリングを適用

•   FIと組み合わせる ・OpenFlowが使えそう

•   プロファイリング結果を用いたセキュリティチェック
                                     37

Más contenido relacionado

La actualidad más candente

Zabbix jp勉強会 Hadoop-HBaseの監視_20120512
Zabbix jp勉強会 Hadoop-HBaseの監視_20120512Zabbix jp勉強会 Hadoop-HBaseの監視_20120512
Zabbix jp勉強会 Hadoop-HBaseの監視_20120512Seiichiro Ishida
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11MapR Technologies Japan
 
Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析MapR Technologies Japan
 
Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill で日本語を扱ってみよう + オープンデータ解析Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill で日本語を扱ってみよう + オープンデータ解析MapR Technologies Japan
 
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)NTT DATA Technology & Innovation
 
Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Yuki Gonda
 
Hadoop Hack Night Vol. 2
Hadoop Hack Night Vol. 2Hadoop Hack Night Vol. 2
Hadoop Hack Night Vol. 2Yoji Kiyota
 
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12MapR Technologies Japan
 
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12MapR Technologies Japan
 
Cloudera Impala #pyfes 2012.11.24
Cloudera Impala #pyfes 2012.11.24Cloudera Impala #pyfes 2012.11.24
Cloudera Impala #pyfes 2012.11.24Sho Shimauchi
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中Satoshi Noto
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startupsIchiro Fukuda
 
Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...
Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...
Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...NTT DATA Technology & Innovation
 
[db tech showcase Tokyo 2014] B23: SSDとHDDの混在環境でのOracleの超効率的利用方法 by 株式会社日立製作...
[db tech showcase Tokyo 2014] B23: SSDとHDDの混在環境でのOracleの超効率的利用方法  by 株式会社日立製作...[db tech showcase Tokyo 2014] B23: SSDとHDDの混在環境でのOracleの超効率的利用方法  by 株式会社日立製作...
[db tech showcase Tokyo 2014] B23: SSDとHDDの混在環境でのOracleの超効率的利用方法 by 株式会社日立製作...Insight Technology, Inc.
 
Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6Toshi Harada
 
OSC2012 Tokyo/Spring - Hadoop入門
OSC2012 Tokyo/Spring - Hadoop入門OSC2012 Tokyo/Spring - Hadoop入門
OSC2012 Tokyo/Spring - Hadoop入門Shinichi YAMASHITA
 

La actualidad más candente (20)

Zabbix jp勉強会 Hadoop-HBaseの監視_20120512
Zabbix jp勉強会 Hadoop-HBaseの監視_20120512Zabbix jp勉強会 Hadoop-HBaseの監視_20120512
Zabbix jp勉強会 Hadoop-HBaseの監視_20120512
 
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
Apache Drill でオープンデータを分析してみる - db tech showcase Sapporo 2015 2015/09/11
 
Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析Apache Drill を利用した実データの分析
Apache Drill を利用した実データの分析
 
OSC2012 OSC.DB Hadoop
OSC2012 OSC.DB HadoopOSC2012 OSC.DB Hadoop
OSC2012 OSC.DB Hadoop
 
Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill で日本語を扱ってみよう + オープンデータ解析Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill で日本語を扱ってみよう + オープンデータ解析
 
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
 
Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-Hadoop -NameNode HAの仕組み-
Hadoop -NameNode HAの仕組み-
 
Hadoop Hack Night Vol. 2
Hadoop Hack Night Vol. 2Hadoop Hack Night Vol. 2
Hadoop Hack Night Vol. 2
 
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
Drilling into Data with Apache Drill - Tokyo Apache Drill Meetup 2015/11/12
 
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
 
Cloudera Impala #pyfes 2012.11.24
Cloudera Impala #pyfes 2012.11.24Cloudera Impala #pyfes 2012.11.24
Cloudera Impala #pyfes 2012.11.24
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中
 
20100930 sig startups
20100930 sig startups20100930 sig startups
20100930 sig startups
 
Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...
Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...
Hadoop Compatible File Systems (Azure編) (セミナー「Big Data Developerに贈る第二弾 ‐ Azur...
 
[db tech showcase Tokyo 2014] B23: SSDとHDDの混在環境でのOracleの超効率的利用方法 by 株式会社日立製作...
[db tech showcase Tokyo 2014] B23: SSDとHDDの混在環境でのOracleの超効率的利用方法  by 株式会社日立製作...[db tech showcase Tokyo 2014] B23: SSDとHDDの混在環境でのOracleの超効率的利用方法  by 株式会社日立製作...
[db tech showcase Tokyo 2014] B23: SSDとHDDの混在環境でのOracleの超効率的利用方法 by 株式会社日立製作...
 
Vacuum徹底解説
Vacuum徹底解説Vacuum徹底解説
Vacuum徹底解説
 
Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6Hackers Champloo 2016 postgresql-9.6
Hackers Champloo 2016 postgresql-9.6
 
MapReduce入門
MapReduce入門MapReduce入門
MapReduce入門
 
OSC2012 Tokyo/Spring - Hadoop入門
OSC2012 Tokyo/Spring - Hadoop入門OSC2012 Tokyo/Spring - Hadoop入門
OSC2012 Tokyo/Spring - Hadoop入門
 
Rを用いたGIS
Rを用いたGISRを用いたGIS
Rを用いたGIS
 

Similar a AspectJを用いた大規模分散システムHadoopの監視とプロファイリング

[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)
[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)
[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)Insight Technology, Inc.
 
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史Insight Technology, Inc.
 
SQL Azure のシームレスな管理
SQL Azure のシームレスな管理SQL Azure のシームレスな管理
SQL Azure のシームレスな管理junichi anno
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
マイニング探検会#10
マイニング探検会#10マイニング探検会#10
マイニング探検会#10Yoji Kiyota
 
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみようOOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみようTadashi Yamashita
 
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門Akira Shimosako
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Yoshinori Matsunobu
 
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishDbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishYohei Azekatsu
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムRecruit Technologies
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けRecruit Technologies
 
Moot2013 moca ver0.3
Moot2013 moca ver0.3Moot2013 moca ver0.3
Moot2013 moca ver0.3科 黄
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlowToshiki Tsuboi
 
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Sotaro Kimura
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料Recruit Technologies
 
Handlersocket 20110517
Handlersocket 20110517Handlersocket 20110517
Handlersocket 20110517akirahiguchi
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニングKensuke Nagae
 

Similar a AspectJを用いた大規模分散システムHadoopの監視とプロファイリング (20)

[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)
[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)
[INSIGHT OUT 2011] A24 sql server wait events(mario broodbakker)
 
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
A24 SQL Server におけるパフォーマンスチューニング手法 - 注目すべきポイントを簡単に by 多田典史
 
SQL Azure のシームレスな管理
SQL Azure のシームレスな管理SQL Azure のシームレスな管理
SQL Azure のシームレスな管理
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
マイニング探検会#10
マイニング探検会#10マイニング探検会#10
マイニング探検会#10
 
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみようOOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
OOW Tokyo 2012 Unconference つまらない STATSPACK をさらにややこしく解説してみよう
 
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
 
日々進化するHadoopの 「いま」
日々進化するHadoopの 「いま」日々進化するHadoopの 「いま」
日々進化するHadoopの 「いま」
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
 
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishDbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publish
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
 
ビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分けビッグデータ処理データベースの全体像と使い分け
ビッグデータ処理データベースの全体像と使い分け
 
Moot2013 moca ver0.3
Moot2013 moca ver0.3Moot2013 moca ver0.3
Moot2013 moca ver0.3
 
RouterBOARD with OpenFlow
RouterBOARD with OpenFlowRouterBOARD with OpenFlow
RouterBOARD with OpenFlow
 
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
 
Ajn24
Ajn24Ajn24
Ajn24
 
Handlersocket 20110517
Handlersocket 20110517Handlersocket 20110517
Handlersocket 20110517
 
Hadoop - OSC2010 Tokyo/Spring
Hadoop - OSC2010 Tokyo/SpringHadoop - OSC2010 Tokyo/Spring
Hadoop - OSC2010 Tokyo/Spring
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
 

AspectJを用いた大規模分散システムHadoopの監視とプロファイリング

  • 1. AspectJを用いた 大規模分散システムHadoopの 監視とプロファイリング 清水裕亮 櫻井孝平 山根智 金沢大学自然科学研究科 1
  • 2. 導入 • 近年、注目されている大規模分散システム - クラウドコンピューティング - ビッグデータ ➡Google, Yahoo!, Amazon, Twitter, Facebook, etc.. • 大規模分散処理フレームワークであるApache Hadoopを用いることで比較的容易に大規模な分散シ ステムが構築できる 2
  • 3. Hadoop ビッグデータを扱う為の分散並列処理フレームワーク - Googleの分散処理システムのオープンソースクローン Yahoo!のDoug Cutting氏によって開発 高いスケールアウト性能 コモディティハードウェアで構築可能 処理タスク、ファイルのレプリケーションによるフ ォールトトレラントと高可用性 透過性 3
  • 4. 大規模分散システム開発における課題 大規模分散システムのためのデバッグ手法 ➡ ログは各ノードに分散して作成される - 従来のソフトウェアに対するテキストベースのログを開発者が確認・解析す る手法は、クラスタを構成しているノード数が大規模な場合、現実的では ない 。重要なログ情報を見落とす可能性。 ➡ 既存の提供されている各種メトリクスは運用者向け。粒度が粗く、開 発者には不十分 リアルタイムでの監視と解析(動作解析、障害検知) ➡ 事前のテストや検証によって全ての障害を取り除くことは困難 4
  • 5. 提案手法 1. 実行命令のランタイムモニタ 2. 実行命令列を用いたアダプティブなプロファ イリング • システムの動作時の実行命令を受動的に取得、ロギング • ロギングされた実行命令を収集し、統計的解析を行う ➡開発者がシステムの内部動作を理解・把握することを 支援する ➡開発者がパフォーマンス改善を行うための効果的な情 報を提供する 5
  • 6. 目次 1. 導入 2. 基盤技術 - Hadoop - Hadoopのデバッグ・監視手法 3. 提案手法 4. 実装と実験 5. 考察・まとめ 6
  • 7. Hadoop のアーキテクチャ Master Slaves Name Job Map Map Node Tracker Data Reduce Data Reduce Blocks Blocks RPC Data Task Data Task Node Tracker Node Tracker RPC • マスタスレーブ型 • Hadoop分散ファイルシステム = NameNode + DataNode • Hadoop MapReduce処理基盤 = JobTracker + TaskTracker • ノード間の通信はRPC通信によって行われる 7
  • 8. 一般的なHadoop動作の解析手法(1) テキストベースのログを確認 ➡ログは各ノードに分散して作成 される - クラスタを構成するノード数は数10 数1000 - 各ノードでは複数のデーモンが動作 ➡重要なログの見落とし ➡障害対応への遅れ
  • 9. 一般的なHadoop動作の解析手法(2) Hadoop job_201211301554_0002 on sirius User: hadoop Job Name: TeraSort Job File: hdfs://sirius.csl.ec.t.kanazawa- u.ac.jp:54310/hadoop/mapred/staging/hadoop/.staging/job_201211301554_0002/job.xml 各種メトリクスを確認(ファイルに Submit Host: sirius.csl.ec.t.kanazawa-u.ac.jp Submit Host Address: 192.168.1.10 Job-ACLs: All users are allowed Job Setup: Successful Status: Succeeded 出力、Web インターフェース経 Started at: Fri Nov 30 16:19:39 JST 2012 Finished at: Fri Nov 30 16:33:20 JST 2012 Finished in: 13mins, 40sec Job Cleanup: Successful 由、Ganglia経由) Failed/Killed Kind % Complete Num Tasks Pending Running Complete Killed Task Attempts map 100.00% 102 0 0 102 0 0/9 - reduce 100.00% 10 0 0 10 0 0/0 MapReduce処理の進行状況や Counter Map Reduce Total File Input Format Bytes Read 10,002,745,698 0 10,002,745,698 Counters 各タスクの処理にかかった時 SLOTS_MILLIS_MAPS 0 0 8,594,755 Launched reduce tasks 0 0 10 Total time spent by all reduces waiting after 0 0 0 間、HDFS内のデータサイズ等の reserving slots (ms) Rack-local map tasks 0 0 81 Job Counters Total time spent by all maps waiting after reserving slots 0 0 0 情報が取得可能 (ms) Launched map tasks 0 0 111 Data-local map tasks 0 0 30 ➡運用者向け SLOTS_MILLIS_REDUCES 0 0 7,463,804 File Output Format Bytes Written 0 10,000,000,000 10,000,000,000 Counters FILE_BYTES_READ 10,317,741,238 10,200,000,300 20,517,741,538 ➡分散システムの開発には不十分 HDFS_BYTES_READ 10,002,757,938 0 10,002,757,938 FileSystemCounters FILE_BYTES_WRITTEN 20,402,514,180 10,200,241,332 30,602,755,512 HDFS_BYTES_WRITTEN 0 10,000,000,000 10,000,000,000 Map output materialized bytes 10,200,006,120 0 10,200,006,120 Map input records 100,000,000 0 100,000,000 Reduce shuffle bytes 0 10,119,092,736 10,119,092,736 9
  • 10. 目次 1. 導入 2. 基盤技術 3. 提案手法 - 実行命令のランタイムモニタ - 取得した実行命令列を用いたアダプテ ィブな統計的解析 4. 実装と実験 5. 考察・まとめ 10
  • 11. 提案手法の構成要素 Hadoop Monitor Profiler •MapReduce Fluentd •HDFS AspectJ Zabbix •RPC ‣監視 ‣リアルタイムで ‣実行命令のロギング のログの解析・ ‣収集 可視化 11
  • 13. 実行命令のランタイムモニタ • システム振る舞いを監視 • 実行された命令を受動的にロギングする - ロギングされた実行命令の列を トレース と呼ぶ 要件: 少ない負荷 モニタ機能の着脱の容易性 13
  • 14. モニタ機能の技術 - AspectJ - • アスペクト指向プログラミングのJava実装 - アスペクト指向プログラミング -- オブジェクト指向プログラミングではモジュール化を行いにく い横断的関心事をアスペクトとしてモジュール化する技術 -- -- G. Kiczales, ECOOP 2001 ➡HadoopはJavaで記述されている ➡Hadoopのオリジナルコードを変更することなく、ロギ ングの機能などを実装することが可能 14
  • 15. モニタを配置した検証対象システム Master Name Job Slaves Node Tracker Map Map Data Reduce Data Reduce Blocks Blocks Monitor Data Task Data Task Node Tracker Node Tracker RPC RPC Monitor Monitor • Hadoopクラスタの各ノードにモニタを配置 15
  • 16. モニタを配置した検証対象システム Master Name Job Slaves Node Tracker Map Map Data Reduce Data Reduce Blocks Blocks Monitor Data Task Data Task Node Tracker Node Tracker RPC RPC Monitor Monitor • システム動作時、モニタは各種デーモン・プロセスの 実行命令を監視し、実行命令をロギングする 16
  • 17. モニタを配置した検証対象システム Master Name Job Slaves Node Tracker Map Map Data Reduce Data Reduce Blocks Blocks Monitor Data Task Data Task Node Tracker Node Tracker RPC RPC Monitor Monitor Master Trace Slave Traces ‣NameNode Trace ‣DataNode Trace ‣JobTracker Trace ‣TaskTracker Trace ‣RPC Trace ‣RPC Trace 17
  • 18. アダプティブなプロファイリング手法の提案 • Hadoopのような大規模な分散システムでは分割統治の アルゴリズムを採用 → 主要な機能のための命令が繰り返し実行される → システム動作と実行命令の発生回数間の関係性 ➡実行命令の出現回数を用いたシステム動作の解析 ➡ 粒度 ごとにカウント → ノードレベル 、 プロセスレベル 、 メソッドレベル 18
  • 19. アダプティブなプロファイリング Master Slaves Name Job Map Map Node Tracker Data Reduce Data Reduce Blocks Blocks RPC Data Task Data Task Node Tracker Node Tracker RPC ‣ 粒度ごとに実行命令をカウント 19
  • 20. ノードレベルでのプロファイリング Master Slaves Name Job Map Map Node Tracker Data Reduce Data Reduce Blocks Blocks RPC Data Task Data Task Node Tracker Node Tracker RPC ‣ ノードごとに実行命令をカウント 20
  • 21. デーモン・プロセスレベルでのプロファイリング Hadoop MapReduce Master Slaves Name Job Map Map Node Tracker Data Reduce Data Reduce Blocks Blocks RPC Data Task Data Task Node Tracker Node Tracker RPC HDFS ‣ デーモン・プロセスごとに実行命令をカウント 21
  • 22. トレース解析環境の技術 Fluentd - & 統合ログ管理基盤 - 各ノードでfluentdデーモンがログを収集 - ログはJSON形式で扱われる ➡各ノードで生成されたトレースを解析用サーバに転送 Zabbix - 統合監視ソフトウェア - サーバ、ネットワークに接続されたデバイスを監視 - 収集したデータのグラフ化、トリガーによるアラート機能 ➡ 収集したトレース解析結果の可視化 22
  • 23. 目次 1. 導入 2. 基盤技術 3. 提案手法 4. 実装と実験 - モニタの実装 - ベンチマークテスト - プロファイリング結果 5. 考察・まとめ 23
  • 24. 実験環境 CPU Intel Core i5-3470 CPU クロック数 3.20 GHz コア数 4 RAM 8 GB ディスク 1TB SATA HDD (7200 回転) OS Linux 2.6.3-279.el6.x86_64 SMP Hadoop 1.0.3 AspectJ 1.7.1 Java 1.7.0 ※ 上記の計算機を6台用いる 24
  • 25. モニタ実装 RPC通信のためのパッケージ を監視対象に指定 privileged aspect RPCMonitor { public pointcut MethodExecute() : execution(public * *.*(..)) && within(org.apache.hadoop.ipc.*) && !execution(* *.run*()) && !execution(* org.apache.hadoop.metrics2.**.*(..)) && !execution(* org.apache.hadoop.security.**.*(..)) && !withincode(* java.lang.**.*(..)) • 各ノードの、稼働するデーモン、プロセスごとにモ ニタを配置 • メトリクスや、セキュリティ関連の実行命令はロギ ングの適用範囲から除く 25
  • 26. トレース情報 システム時刻 ホスト名 デーモン・ プロセス名 1352777292269-sirius-namenodetrace={ DatanodeCommand[] org.apache.hadoop.hdfs.server.namenode.NameNode.send Heartbeat(DatanodeRegistration, long, long, long, int, int), [DatanodeRegistration(192.168.1.15:50010, storageID=DS-2031755896-192.168.1.15-50010-135217219 3708, infoPort=50075, ipcPort=50020), 922985177088,30648860672,845179580416,0,1] } 実行命令 引数 26
  • 27. パフォーマンス ベンチマーク スループット[MB/sec] = 入力データサイズ / 経過時間 入力データサイ スループット トレースデータ モニタの有無 経過時間 [sec] ズ[GB] [MB/sec] サイズ[MB] 1 ⃝ 2m 25s (145sec) 6.9 2.4 84.1% 1 × 2m 2s (122s) 8.2 0 10 ⃝ 8m 45s (525sec) 19.0 3.6 88.3% 10 × 7m 45s (465sec) 21.5 0 1h 21m 54s 100 ⃝ 20.4 31.6 96.2% (4,914sec) 1h 18m 37s 100 × 21.2 0 (4,717sec) • 使用したMapReduceサンプルプログラム - “terasort” • トレースサイズの増加率 6.43KB/sec 27
  • 28. プロファイリング テスト • 使用するMapReduceプログラム - terasort • 入力データサイズ - 10GB(サンプルプログラム teragenで作成) • カウントを行う単位時間 - 10sec ノード、プロセス、メソッドレベルの各 粒度についてプロファイリングを行う 28
  • 29. Filter プロファイリング結果 - ノードレベル - 03.12.2012 01:24 - 03.12.2012 02:24 (now!) 01h 00m (fixed) カウント数 2 3 1K 時間 ■192.168.1.10 Master ■■■■■192.168.1.11 15 Slaves 1. 各ノードで実行された実行命令の回数を、単位時間を10秒としてカウント アップ 2. ジョブ起動時には、マスターにおいて10秒間に約1K回ものメソッドが実行 されている 3. Reduceフェーズにおいて全ノードで多くのメソッドが実行されている 29
  • 30. Filter プロファイリング結果 - ノードレベル - 03.12.2012 01:24 - 03.12.2012 02:24 (now!) 01h 00m (fixed) カウント数 1 2 1K 時間 ■192.168.1.10 Master CPU使用 ■■■■■192.168.1.11 15 Slaves おいて、 ト値を示 す時間に 1. 各ノードで実行された実行命令の回数を、単位時間を10秒としてカウント 大きなカ ウン 値の原因 となる実 アップ 、大きな カウント 率も多 いならば とは有効 と言える を計るこ 2. ジョブ起動時には、マスターにおいて10秒間に約1K回ものメソッドが実行 されている ついて効率化 行命令に 3. Reduceフェーズにおいて全ノードで多くのメソッドが実行されている 30
  • 31. h 2h 3h 6h 12h 1d 1w 2w 1m 3m 6m 1y All 03.12.2012 01:25 - 03.12.2012 02:25 プロファイリング結果 -プロセスレベル- 1m 1w 1d 12h 1h | 1h 12h 1d 1w 1m 6m 1y »» 01h 00m (fixed) Master Slave1 Slave2 Slave3 Slave4 Slave5 ■RPC ■HDFS(NameNode, DataNode) ■Hadoop MapReduce(JobTracker, TaskTracker) • マスタのNameNodeは、ジョブの投入時に単位時間あたり0.75Kのメソ ッドを実行する • スレーブ群のRPC、TaskTrackerについてはほぼ同様のグラフが得られ たが、DataNodeについてはノード間で差が見られる ➡ DataNodeのレプリケーションポリシーのランダム性による負荷の偏り
  • 32. プロファイリング結果 -メソッドレベル 1- SCREENS hadoop cluster monitor - SLAVE1 Slave3 Filter SCREENS hadoop cluster monitor - SLAVE5 Slave5 Filter Zoom: 1h 2h 3h 6h 12h 1d 1w 2w 1m 3m 6m 1y All 03.12.2012 01:25 - 03.12.2012 02:25 (now!) Zoom: 1h 2h 3h 6h 12h 1d 1w 2w 1m 3m 6m 1y All 03.12.2012 01:26 - 03.12.2012 02:26 (now!) «« 1y 6m 1m 1w 1d 12h 1h | 1h 12h 1d 1w 1m 6m 1y »» 01h 00m (fixed) «« 1y 6m 1m 1w 1d 12h 1h | 1h 12h 1d 1w 1m 6m 1y »» 01h 00m (fixed) RPC DN TT RPC DN TT 各メソッドについてログ収集期間内に実行された回数が プロセスごとの発生回数全体に占める割合 32
  • 33. プロファイリング結果 -メソッドレベル 1- Slave3 Slave5 SCREENS SCREENS hadoop cluster monitor - SLAVE1 hadoop cluster monitor - SLAVE5 Filter Filter Zoom: 1h 2h 3h 6h 12h 1d 1w 2w 1m 3m 6m 1y All 03.12.2012 01:25 - 03.12.2012 02:25 (now!) Zoom: 1h 2h 3h 6h 12h 1d 1w 2w 1m 3m 6m 1y All 03.12.2012 01:26 - 03.12.2012 02:26 (now!) «« 1y 6m 1m 1w 1d 12h 1h | 1h 12h 1d 1w 1m 6m 1y »» 01h 00m (fixed) «« 1y 6m 1m 1w 1d 12h 1h | 1h 12h 1d 1w 1m 6m 1y »» 01h 00m (fixed) •Slave3とSlave5のDNについてのプロファイリング結果の乖離の原因と して、org.apache.hadoop.hdfs.server.datanode.FSDataset. getChannelPositionメソッドがあげられる ➡ FSDatasetはデータブロックの集合を扱うクラス、各ブロックは ユニークな名前とディスク上の位置情報を持つ。FSDirはUnixでのデ ィレクトリで、子にFSDirまたは、ブロックをもつ。 33
  • 34. org.apache.hadoop.hdfs.server.datanode- GRAPHS SLAVE3 DN - method level Filter ! -FSDataset. getChannelPosition Zoom: 1h 2h 3h All 03.12.2012 01:25 - 03.12.2012 02:25 «« 1h | 1h »» 01h 00m (fixed) Filter カウント数 03.1 時間 • FSDatasetはデータブロックの集合を扱 うクラス、各ブロックはユニークな名前と ディスク上の位置情報を持つ • getChannelPositionは、次のデータを書 き込むブロック内のオフセットを取得する メソッド 34
  • 35. org.apache.hadoop.hdfs.server.datanode- GRAPHS SLAVE3 DN - method level Filter ! -FSDataset. getChannelPosition Zoom: 1h 2h 3h All 03.12.2012 01:25 - 03.12.2012 02:25 «« 1h | 1h »» 01h 00m (fixed) Filter カウント数 03.1 時間 • FSDatasetはデータブロックの集合を扱 HDFSのランダム書き込みがボトルネックの可能性 うクラス、各ブロックはユニークな名前と → バッファとしてSDDにデータを保存、ブロックの ディスク上の位置情報を持つ オフセット値でソーティング、可能な部分をシーケン •FSDirはUnixでのディレクトリで、子に シャルライトで高速化が図れる可能性 FSDirまたは、ブロックをもつ • getChannelPositionは、次のデータを書 き込むブロック内のオフセットを取得する メソッド 35
  • 36. 関連研究 [M. K. Aguilera 2003] • 通信メッセージをモニタリング、集約アルゴリズムの提案 ➡ 目的: 因果パスの検出 ➡ 入出力メッセージ乖離がもっとも大きいものをボトルネックとする [Chen, 2003:PinPoint] ➡ 障害の原因の可能性が高い分散システム内のコンポーネントを検出 ➡ 一回の考察の単位:単一マシンのひとつのリクエスト [Hellerstein,1999 :ETE] ‣ メソッドレベルのログを受動的に取得 ‣ ノード間通信のみではなくメソッドレベルで内部動作を解析可能 ‣ 大規模な分散システム向けのメソッドの発生回数によるシステム 動作の解析 ‣ 厳密な時刻は扱わない 36
  • 37. まとめ 提案手法 1. AspectJを用いたメソッドレベルのモニタ - 検証対象システムのオリジナルコードへの変更は必要ない - システムのパフォーマンスへの負荷は少ない 2. トレースを用いたアダプティブなプロファイリング手法 - 開発者がシステム動作を理解・解析することを支援 - パフォーマンスの改善に有効な情報を提供する 成果 • Hadoopの動作の解析に有効 - 具体的にボトルネックの原因を指摘 今後の展望 • ユーザプログラム、プラグインに対しても提案するプロファイリングを適用 • FIと組み合わせる ・OpenFlowが使えそう • プロファイリング結果を用いたセキュリティチェック 37