DBとはちょっと違うけど...


            分散処理基盤「Hadoop」の
             概要と最新動向紹介!

              2012年7月25日
             日本Hadoopユーザー会
                山下 真一

2012/7/25          OSC2012.DB   1
自己紹介
• 山下 真一 (やました しんいち)
   • 日本Hadoopユーザー会
   • 某所でHadoopエコシステムと戯れる日々...
   • 元々は、ApacheとかTomcatとかPostgreSQLとかと
     戯れている...

   • 最近は、執筆したりレビューしたりな日々
   • 趣味は、AndroidとかNoSQL系で遊ぶこと
            • ○活中 (○は任意の文字)



2012/7/25              OSC2012.DB    2
日本Hadoopユーザー会
• Hadoopでゆる~く議論・情報交換しています

• 主なイベント
   • 第3回 Hadoop Conference Japan (2011/09)
            • 第4回は、秋~冬頃
   • Hadoopソースコードリーディング (不定期)
            • 次回は7月30日




2012/7/25                 OSC2012.DB         3
日本Hadoopユーザー会
• Webサイトは以下の通り
      • http://hugjp.org/




• メーリングリスト(Googleグループ)
      • https://groups.google.com/group/hadoop-jp?hl=ja

2012/7/25                   OSC2012.DB                    4
Hadoopとは
• OSSによる大規模分散処理フレームワーク
   • Googleの基盤ソフトウェア(GFS, MapReduce)のオープ
     ンソース実装
   • Apache Software Foundationのプロジェクトのひとつ
   • Javaで実装
• 2つのコンポーネントで構成
   • HDFS : Hadoop分散ファイルシステム
   • MapReduce : Hadoop分散処理フレームワーク
• Hadoopの基本的なアイデア
   • 大容量データを並列に処理
   • データのローカリティを意識した分散処理

2012/7/25          OSC2012.DB            5
Hadoopの特徴
• バッチ処理に威力を発揮
   • 従来数時間~数日要していた処理を短時間で処理
   • 処理を分割して複数のサーバで分散処理を実行
• 高いスケーラビリティ
   • サーバ増設で、格納容量、処理性能を向上
   • 数台~4000台程度までのHadoop環境
• 特定のサーバが故障してもサービス継続
   • データは分割・分散配置
   • 処理に異常が発生する場合は、他サーバで再実行
• コモディティな製品で構成可能
   • 特定ベンダの特別な製品は不要

2012/7/25      OSC2012.DB     6
Hadoopの活用例
• Yahoo!                            • 大量データの高スループット処理
    • 検索インデックスの生成、迷惑メール             • 集計・抽出・変換・分析用途
      フィルタ用データの生成
    • 過去3年分のログデータ解析が約20分 (従来は26日)
• 楽天
    • 広告インプレッション解析、レコメンデーション、ランキング集計
    • Perlスクリプトによる処理(26時間)がHadoopで4.5時間に短縮
• DeNA
    • ゲーム内での行動履歴分析 (行動特性を抽出・分析)
    • 2300万人アクティブユーザが生成する1日20億件以上の行動履歴を分析
• VISA
    • カードの不正利用モデルを生成
    • 1カ月かかっていたものが、Hadoopによって13分に
• 国立国会図書館
    • 書誌データから検索エンジン Solr 用のインデックスを生成


 2012/7/25             OSC2012.DB                  7
Hadoopのよくある誤解

×誤解1 : 高速なRDBMS
   • ミリ秒単位の処理をHadoopに求めてはいけません...
×誤解2 : 分散ファイルサーバ
   •Hadoopは小さなファイルを扱うのが苦手です...


○大量データに特化したバッチシステム
   •オンライン処理は不向き(スループット優先)
   •データは大きな塊として扱うことが望ましい

2012/7/25        OSC2012.DB      8
HadoopとRDBとの違い
                RDB                          Hadoop
   データを「管理する」という                         データは「管理しない」
   観点からデータの重複を                          高スループットで処理でき
   避けるために正規化する                           るように非正規化する



                                    ・
                                    ・
                                    ・
            正規化されたデータセット                いくつかのデータセットを結合し、
                                          非正規化したデータセット

  • 一度に走査する範囲を小さくする              • 一度に走査する範囲を大きくする
  • 重複保持を排除する                     • 論理走査範囲を単純分割, 並列処理
                                 • 重複保持は意識しない
2012/7/25                  OSC2012.DB                      9
Hadoopシステム基盤
                           タスク           TaskTracker(s)
                          M M M
ジョブ情報          タスク分割                     M          ・・・
                          R R R
                       JobTracker
JobClient                                       R   ・・・


クライ                         入出力データは
アント          データローカリティを                             ・・・   M
              意識した割り当て       HDFSと連携
                                                    スレーブ
                                  マスター              サーバ
 ファイルをブロックに分割                     サーバ               ・・・
    配置を指示
                       NameNode
DFSClient                                           ・・・




                ブロック         ラックを意識した               ・・・
                            ブロック配置を実施
 ファイル
 2012/7/25                  OSC2012.DB       DataNode(s)
                                                       10
MapReduce 処理
                             Shuffle
    スコア
                     (同じKeyでデータを集約)
    一覧
                  <A, 10>
                                          <A, {10,25} >
                  <B, 20>
                                          <C, {10,5,15} >   何らかの処理
            Map   <C, 15>
                                                             <A, 35 >
                  <D, 5>
                                                 Reduce
                                                             <C, 30 >
            Map   <A, 25>
                  <C, 10>
                  <D, 10>                                    <B, 30 >
                                                Reduce
                  <B, 10>                                    <D, 15 >
            Map   <C, 5>                  <B, {20,10} >
                                          <D, {5,10} >
                            ・<Key, Value>の形式でデータを管理
   スコアの抽出
                            ・MapやReduceが分散処理の対象
2012/7/25                    OSC2012.DB                           11
Hadoopエコシステム




2012/7/25       OSC2012.DB   12
処理言語関係の関連技術
• より簡単にMapReduceを実行するためのツール

• Apache Pig
    • データフローによりデータをどのように処理するか定義
    • シンプルかつ少ない記述でMapReduceを意識せず実行
• Apache Hive
    • SQLライクな記法により処理内容を定義
• Asakusa Framework
    • 複数種類のDSLを組み合わせて処理内容を定義


 2012/7/25            OSC2012.DB   13
低レイテンシーの関連技術
• Hadoopは、数時間~数日を数分~数十分に短
  縮する技術
   • 秒未満の処理には、Hadoop単体で適用できません

• Apache HBase
   • HDFS上で動作するカラム指向型データベース
   • “行キー”、”列ファミリ”、”値”、”タイムスタンプ” で
     データを管理
   • 行キーに対して低レイテンシーで読み書きを実現
   • Hadoopと同様にスケーラブルな仕組み
            • 数百TB程度までの動作実績あり

2012/7/25              OSC2012.DB   14
データ入出力の関連技術
• Hadoopへのデータ入出力を取りまとめる技術

• Apache Flume
    • 様々なログ・データを損失無くHadoop環境に格納す
      る仕組み
    • ZooKeeper(分散協調ソフトウェア)により高可用性
      を実現

• Apache Sqoop
    • RDBMSとHadoop環境を連携させるコネクター
    • MapReduceによる分散処理でデータ通信を高速化
 2012/7/25       OSC2012.DB      15
Hadoopの最新動向
• Hadoopのバージョン関係

                                      Hadoop1.0系
                                          (stable)
                                                     従来0.20.2xxと
                                                     呼ばれていたもの


                                                     新機能開発版
                                                     • NameNode HA
            Hadoop2.0系                               • Federation
            (alpha)                                  • MapReduce 2.0
                                                     などなど...

                                                     出典: Hadoop Summit 2012

2012/7/25                OSC2012.DB                                   16
NameNode HA
• ZooKeeperを利用したActive-Standby構成

                            ZooKeeperを組み合わせて異
                             常時のNameNode切り替え




 ホットスタンバイ                      DataNodeは双方の
                            NameNodeにHeartbeat通信


                                   出典: Hadoop Summit 2012


2012/7/25      OSC2012.DB                           17
HDFS Federation
• NameNodeのメタ情報を分割して保持
   • 同一NameNodeのメタ情報を分割して保持
   • 異なるNameNodeメタ情報も保持可能




                               DataNodeでは異なる
                              NameNode環境のデータ
                                     を保持




                                 出典: Hadoop Summit 2012
2012/7/25        OSC2012.DB                               18
YARN : MapReduce 2.0
• YARN
   • Yet Another/Application Resource Negociator
                                         Node Manager
       Resource Manager                 処理ノードの管理
      MR基盤のリソース管理
                                         Application Master
                                        アプリケーション実行元

                                       Container
                                       処理を実行

                                       • リソース管理とAP管理を分離
                                       • 処理スロット制を廃止
                                              出典: Hadoop Summit 2012
2012/7/25                 OSC2012.DB                               19
Hadoopの最新動向
• Hadoopエコシステムが更に広がっています

• HDP(Hortonworks Data Platform) 1.0
    • Apache Hadoop 1.0ベースのディストリビューション
    • HA(Linux-HA連携), Talend Open Studio連携
• CDH4
    • Apache Hadoop 2.0ベースのディストリビューション
    • NameNode HA, MapReduce 2.0 などを採用
• Apacheコミュニティでのプロジェクト
    • Apache HCatalog : Pig/Hive等のメタ情報共通化
    • Apache Ambari : Hadoop環境の構築・運用基盤
 2012/7/25           OSC2012.DB              20
まとめ
• Hadoopは2つのコンポーネントから構成される大規
  模分散処理フレームワーク
   • HDFS
   • MapReduce
• 従来は個別設計が必要であった分散処理を気軽に
  実現できるようになります
• いわゆる 「スケールアウト」 を実現できます

• Hadoopエコシステムは更に拡大します
   • 開発、構築、運用と様々なプロジェクトが活動中です!

2012/7/25        OSC2012.DB   21

OSC2012 OSC.DB Hadoop

  • 1.
    DBとはちょっと違うけど... 分散処理基盤「Hadoop」の 概要と最新動向紹介! 2012年7月25日 日本Hadoopユーザー会 山下 真一 2012/7/25 OSC2012.DB 1
  • 2.
    自己紹介 • 山下 真一(やました しんいち) • 日本Hadoopユーザー会 • 某所でHadoopエコシステムと戯れる日々... • 元々は、ApacheとかTomcatとかPostgreSQLとかと 戯れている... • 最近は、執筆したりレビューしたりな日々 • 趣味は、AndroidとかNoSQL系で遊ぶこと • ○活中 (○は任意の文字) 2012/7/25 OSC2012.DB 2
  • 3.
    日本Hadoopユーザー会 • Hadoopでゆる~く議論・情報交換しています • 主なイベント • 第3回 Hadoop Conference Japan (2011/09) • 第4回は、秋~冬頃 • Hadoopソースコードリーディング (不定期) • 次回は7月30日 2012/7/25 OSC2012.DB 3
  • 4.
    日本Hadoopユーザー会 • Webサイトは以下の通り • http://hugjp.org/ • メーリングリスト(Googleグループ) • https://groups.google.com/group/hadoop-jp?hl=ja 2012/7/25 OSC2012.DB 4
  • 5.
    Hadoopとは • OSSによる大規模分散処理フレームワーク • Googleの基盤ソフトウェア(GFS, MapReduce)のオープ ンソース実装 • Apache Software Foundationのプロジェクトのひとつ • Javaで実装 • 2つのコンポーネントで構成 • HDFS : Hadoop分散ファイルシステム • MapReduce : Hadoop分散処理フレームワーク • Hadoopの基本的なアイデア • 大容量データを並列に処理 • データのローカリティを意識した分散処理 2012/7/25 OSC2012.DB 5
  • 6.
    Hadoopの特徴 • バッチ処理に威力を発揮 • 従来数時間~数日要していた処理を短時間で処理 • 処理を分割して複数のサーバで分散処理を実行 • 高いスケーラビリティ • サーバ増設で、格納容量、処理性能を向上 • 数台~4000台程度までのHadoop環境 • 特定のサーバが故障してもサービス継続 • データは分割・分散配置 • 処理に異常が発生する場合は、他サーバで再実行 • コモディティな製品で構成可能 • 特定ベンダの特別な製品は不要 2012/7/25 OSC2012.DB 6
  • 7.
    Hadoopの活用例 • Yahoo! • 大量データの高スループット処理 • 検索インデックスの生成、迷惑メール • 集計・抽出・変換・分析用途 フィルタ用データの生成 • 過去3年分のログデータ解析が約20分 (従来は26日) • 楽天 • 広告インプレッション解析、レコメンデーション、ランキング集計 • Perlスクリプトによる処理(26時間)がHadoopで4.5時間に短縮 • DeNA • ゲーム内での行動履歴分析 (行動特性を抽出・分析) • 2300万人アクティブユーザが生成する1日20億件以上の行動履歴を分析 • VISA • カードの不正利用モデルを生成 • 1カ月かかっていたものが、Hadoopによって13分に • 国立国会図書館 • 書誌データから検索エンジン Solr 用のインデックスを生成 2012/7/25 OSC2012.DB 7
  • 8.
    Hadoopのよくある誤解 ×誤解1 : 高速なRDBMS • ミリ秒単位の処理をHadoopに求めてはいけません... ×誤解2 : 分散ファイルサーバ •Hadoopは小さなファイルを扱うのが苦手です... ○大量データに特化したバッチシステム •オンライン処理は不向き(スループット優先) •データは大きな塊として扱うことが望ましい 2012/7/25 OSC2012.DB 8
  • 9.
    HadoopとRDBとの違い RDB Hadoop データを「管理する」という データは「管理しない」 観点からデータの重複を 高スループットで処理でき 避けるために正規化する るように非正規化する ・ ・ ・ 正規化されたデータセット いくつかのデータセットを結合し、 非正規化したデータセット • 一度に走査する範囲を小さくする • 一度に走査する範囲を大きくする • 重複保持を排除する • 論理走査範囲を単純分割, 並列処理 • 重複保持は意識しない 2012/7/25 OSC2012.DB 9
  • 10.
    Hadoopシステム基盤 タスク TaskTracker(s) M M M ジョブ情報 タスク分割 M ・・・ R R R JobTracker JobClient R ・・・ クライ 入出力データは アント データローカリティを ・・・ M 意識した割り当て HDFSと連携 スレーブ マスター サーバ ファイルをブロックに分割 サーバ ・・・ 配置を指示 NameNode DFSClient ・・・ ブロック ラックを意識した ・・・ ブロック配置を実施 ファイル 2012/7/25 OSC2012.DB DataNode(s) 10
  • 11.
    MapReduce 処理 Shuffle スコア (同じKeyでデータを集約) 一覧 <A, 10> <A, {10,25} > <B, 20> <C, {10,5,15} > 何らかの処理 Map <C, 15> <A, 35 > <D, 5> Reduce <C, 30 > Map <A, 25> <C, 10> <D, 10> <B, 30 > Reduce <B, 10> <D, 15 > Map <C, 5> <B, {20,10} > <D, {5,10} > ・<Key, Value>の形式でデータを管理 スコアの抽出 ・MapやReduceが分散処理の対象 2012/7/25 OSC2012.DB 11
  • 12.
  • 13.
    処理言語関係の関連技術 • より簡単にMapReduceを実行するためのツール • ApachePig • データフローによりデータをどのように処理するか定義 • シンプルかつ少ない記述でMapReduceを意識せず実行 • Apache Hive • SQLライクな記法により処理内容を定義 • Asakusa Framework • 複数種類のDSLを組み合わせて処理内容を定義 2012/7/25 OSC2012.DB 13
  • 14.
    低レイテンシーの関連技術 • Hadoopは、数時間~数日を数分~数十分に短 縮する技術 • 秒未満の処理には、Hadoop単体で適用できません • Apache HBase • HDFS上で動作するカラム指向型データベース • “行キー”、”列ファミリ”、”値”、”タイムスタンプ” で データを管理 • 行キーに対して低レイテンシーで読み書きを実現 • Hadoopと同様にスケーラブルな仕組み • 数百TB程度までの動作実績あり 2012/7/25 OSC2012.DB 14
  • 15.
    データ入出力の関連技術 • Hadoopへのデータ入出力を取りまとめる技術 • ApacheFlume • 様々なログ・データを損失無くHadoop環境に格納す る仕組み • ZooKeeper(分散協調ソフトウェア)により高可用性 を実現 • Apache Sqoop • RDBMSとHadoop環境を連携させるコネクター • MapReduceによる分散処理でデータ通信を高速化 2012/7/25 OSC2012.DB 15
  • 16.
    Hadoopの最新動向 • Hadoopのバージョン関係 Hadoop1.0系 (stable) 従来0.20.2xxと 呼ばれていたもの 新機能開発版 • NameNode HA Hadoop2.0系 • Federation (alpha) • MapReduce 2.0 などなど... 出典: Hadoop Summit 2012 2012/7/25 OSC2012.DB 16
  • 17.
    NameNode HA • ZooKeeperを利用したActive-Standby構成 ZooKeeperを組み合わせて異 常時のNameNode切り替え ホットスタンバイ DataNodeは双方の NameNodeにHeartbeat通信 出典: Hadoop Summit 2012 2012/7/25 OSC2012.DB 17
  • 18.
    HDFS Federation • NameNodeのメタ情報を分割して保持 • 同一NameNodeのメタ情報を分割して保持 • 異なるNameNodeメタ情報も保持可能 DataNodeでは異なる NameNode環境のデータ を保持 出典: Hadoop Summit 2012 2012/7/25 OSC2012.DB 18
  • 19.
    YARN : MapReduce2.0 • YARN • Yet Another/Application Resource Negociator Node Manager Resource Manager 処理ノードの管理 MR基盤のリソース管理 Application Master アプリケーション実行元 Container 処理を実行 • リソース管理とAP管理を分離 • 処理スロット制を廃止 出典: Hadoop Summit 2012 2012/7/25 OSC2012.DB 19
  • 20.
    Hadoopの最新動向 • Hadoopエコシステムが更に広がっています • HDP(HortonworksData Platform) 1.0 • Apache Hadoop 1.0ベースのディストリビューション • HA(Linux-HA連携), Talend Open Studio連携 • CDH4 • Apache Hadoop 2.0ベースのディストリビューション • NameNode HA, MapReduce 2.0 などを採用 • Apacheコミュニティでのプロジェクト • Apache HCatalog : Pig/Hive等のメタ情報共通化 • Apache Ambari : Hadoop環境の構築・運用基盤 2012/7/25 OSC2012.DB 20
  • 21.
    まとめ • Hadoopは2つのコンポーネントから構成される大規 模分散処理フレームワーク • HDFS • MapReduce • 従来は個別設計が必要であった分散処理を気軽に 実現できるようになります • いわゆる 「スケールアウト」 を実現できます • Hadoopエコシステムは更に拡大します • 開発、構築、運用と様々なプロジェクトが活動中です! 2012/7/25 OSC2012.DB 21