Upgrade to Pro — share decks privately, control downloads, hide ads and more …

about Hadoop 2012

Avatar for ntk1000 ntk1000
February 23, 2012

about Hadoop 2012

about Hadoop 2012

Avatar for ntk1000

ntk1000

February 23, 2012
Tweet

Other Decks in Technology

Transcript

  1. Agenda 2  about Hadoop  compareTo(RDB)  about HDFS

     about MapReduce  about EcoSystem  about Hadoop in 2012
  2. about Hadoop 3  Apache Hadoop  OSS  GoogleのGFS,MapReduce論文が元

    -> Googleの中身をJavaで再実装  分散ファイルシステム + 分散バッチ処理システム
  3. compareTo(RDB): Data Storage 4 RDBMS Hadoop DataFile DataBase SQL Loader,

    BCP,ETL… dfs Command 表形式で データを格納 ファイルが 一定のブロッ クサイズに分 割&複製され て格納 HDFS HDFS HDFS
  4. compareTo(RDB): Data Analysis 5 RDBMS Hadoop Result DataBase SQL Map/

    Reduce SQLで 結果取得 M/Rプログラ ムを実行して 結果取得 HDFS HDFS HDFS
  5. compareTo(RDB) : Disk I/O 7 Memory Disk CPU Memory Disk

    CPU Memory Disk CPU Memory Disk CPU 遅い! 使いきれ ない! Disk I/Oを分散 RDBMS Hadoop
  6. compareTo(RDB) : Summary  RDBMSとHadoopは競合するものではなく、補完しあう存在 (フロントエンドはRDB、バックエンドはHadoop、等)  Hadoopは機能的に色々割り切っていることに注意 (更新、トランザクション管理、等) 

    http://wiki.apache.org/hadoop/HadoopIsNot 8 RDBMS Hadoop データサイズ GBytes~TBytes GBytes~PBytes アクセス リアルタイム/バッチ バッチ 更新/読込 更新◦/読込◦ 更新△/読込◦ 整合性 高 低 構造 静的スキーマ 動的スキーマ スケーラビリティ 低 高
  7. about HDFS : Roles On Nodes 9 client (HDFS API)

    Hadoop Master NameNode Daemon Hadoop Slave #1 DataNode Daemon HDFS Storage Hadoop Slave #2 DataNode Daemon HDFS Storage Hadoop Slave #N DataNode Daemon HDFS Storage ファイル 書込 ファイル 読込 ファイル 管理 ユーザは APIを通じて操作 分散処理や 障害対応は HDFSにお任せ HDFSの全体統括 データブロック管理 各DataNode管理 や異常時の復元処理 (実はSPOF) データブロック送受信 NameNodeへ状態通知 データ送受信はclient対 各DataNodeとのやり取りに なる為、NameNodeに負荷が かからない仕組み
  8. about HDFS : File Handling 10 ファイル名 ブロック 番号 DataNode

    /file/X.txt 0 A, C, D 1 B, D, E 2 A, B, C /file/Y.txt 0 B, D, E 1 A, C, E DataNode A DataNode B DataNode C DataNode D DataNode E /file/X.txt-0 /file/X.txt-0 /file/X.txt-0 /file/X.txt-1 /file/X.txt-1 /file/X.txt-1 /file/X.txt-2 /file/X.txt-2 /file/X.txt-2 /file/Y.txt-0 /file/Y.txt-0 /file/Y.txt-0 /file/Y.txt-1 /file/Y.txt-1 /file/Y.txt-1 NameNode HDFS /file/X.txt-0 /file/X.txt-1 /file/X.txt-2 /file/Y.txt-0 /file/Y.txt-1 /file/X.txt /file/Y.txt ・各ファイルは64MBブロック毎に分割 (分割サイズは変更可能) ・デフォルトで3つのレプリカを作成
  9. about HDFS : Failure Handling 11 DataNode A DataNode B

    DataNode C DataNode D DataNode E /file/X.txt-0 /file/X.txt-0 /file/X.txt-0 /file/X.txt-1 /file/X.txt-1 /file/X.txt-1 /file/X.txt-2 /file/X.txt-2 /file/X.txt-2 /file/Y.txt-0 /file/Y.txt-0 /file/Y.txt-0 /file/Y.txt-1 /file/Y.txt-1 /file/Y.txt-1 NameNode HDFS DataNode F /file/X.txt-1 /file/Y.txt-0 /file/Y.txt-1 ファイル名 ブロック 番号 DataNode /file/X.txt 0 A, C, D 1 B, D, E -> F 2 A, B, C /file/Y.txt 0 B, D, E -> F 1 A, C, E -> F DataNodeの障害をNameNodeで 検知 データブロックが失われた場合は 自動的に別Nodeから損失ブロック の再配置を行う
  10. about MapReduce : Roles On Nodes 12 client JVM Hadoop

    Master JobTracker Daemon Hadoop Slave #1 TaskTracker Daemon JVM Map/Reduce Hadoop Slave #2 TaskTracker Daemon JVM Map/Reduce Hadoop Slave #N TaskTracker Daemon JVM Map/Reduce バッチ処理 開始 バッチ処理 状態確認 バッチ処理 管理 Map/Reduceの 実装はユーザ任意 の処理が定義可能 バッチ処理進行管理 Map/Reduceタスク の割振り 異常時のバックアッ プタスク指示 Map/Reduceタスク起 動 JobTrackerへ状態通知
  11. about MapReduce : Job Handling 13 JobTracker ・JobTrackerはJobを分割 ・分割されたJobは 各TaskTrackeにて実行

    ・処理Nodeが余っていれば 同じタスクを複数Nodeで 並列に実行(投機的実行) Map-0 Map-1 Map-2 Red-0 Red-1 Map Job Reduce Job TaskTracker A TaskTracker B TaskTracker C TaskTracker D TaskTracker E Map-0 Map-1 Map-2 Red-0 Red-1 TaskTracker F Red-1 再処理
  12.  Map-> (Shuffle)-> Reduceの順に処理  全てkey,valueの形式で処理 about MapReduce : Programming

    14 Map Reduce Map Map Map Map Map Reduce Reduce Reduce Sort Copy Merge Shuffle
  13. about MapReduce : Example 15 Map Reduce Map Map Map

    Map Map Reduce Reduce Reduce Sort Copy Merge Shuffle 49xxx,... ............ 49yyy,... 49zzz,... ............ 49xyz,... ............ 49yxz,... ............ 49zyx,... ............ 49zzz,... ............ 49xxx,... ............ 49yyy,... ............ 49yyy,... ............ 49xyz,... ............ 49xxx,... ............ 49xxx,... 49xxx : foo. 49yyy,... Map入力 key: inputファイルのoffset value: inputファイルの一行 Map出力 = Reduce入力 key: コード(49...) value: 残りの項目 Reduce出力 key: コード(49...) value: 集計後の項目 49xxx : ....... 49xxx : bar. 49xxx : foo1. 49xxx : bar1. 49yyy : foo. 49yyy : bar. 49yyy : foo1. 49yyy : ...... Map: 入力を一行ずつ加工 Shuffle: キー毎にソート、 内容を整理 Reduce: キー毎に加工
  14. about Ecosystem 16 HBase 列指向DB Pig データフロー言語実行環境 Hive DWH、SQLライクなHiveQLが利用可能 Sqoop

    RDBとHDFSを繋ぐツール Avro データシリアライゼーションシステム Zookeeper 分散アプリケーションのコーディネーションサービス
  15. about Hadoop in 2012 : Distribution 17  Apache :

    HortonWorks  CDH : Cloudera  MapR : MapR (HDFS in C++, Not OSS)  EMR : AWS(EC2, S3)  Hadoop on Azure (Not Dryad) : Microsoft + HortonW  Biginsights : IBM  http://radar.oreilly.com/2012/01/big-data-ecosystem.html  http://d.hatena.ne.jp/okachimachiorz/20111231/1325292822
  16. about Hadoop in 2012 : Version 18  Hadoop 0.20.205

    -> Hadoop 1.0 となる  http://www.cloudera.co.jp/hadoop/column/apache-hadoop-1-update.html
  17. about Hadoop in 201x? : HDFS Federation 19  NameNodeの拡張

     http://hortonworks.com/an-introduction-to-hdfs-federation/
  18. about Hadoop in 201x? : MapReduce 2.0 20  根本的なアーキテクチャの変更

     http://developer.yahoo.com/blogs/hadoop/posts/2011/02/mapreduce-nextgen/
  19. Conclusion 21  Hadoop  = 分散ファイルシステム + 分散バッチ処理システム 

    レスポンスは遅いのでバッチ処理向け  サーバ台数を増やせば性能はリニアに向上  分散環境における諸々はHadoopが管理してくれる  HDFS  故障を前提とした仕組み  とはいってもNameNodeがSPOF  MapReduce  バッチは全てMapReduceとして実装  データをkey,value形式で処理  考え方に慣れが必要  etc  スケーラブルなバッチ処理システムとしてのデファクト化  Distributionの増加 = 選択肢の増加  OSSとしては若いので発展途上、今後も大幅な変更は有得る
  20. 22