Hadoop事始め



 2010/10/16
   You&I             印刷版



 わんくま同盟 名古屋勉強会 #15
自己紹介

•   H/N   You&I(読み:ユーアンドアイ)
•   出身    生まれも育ちも名古屋市
•   年齢    30代前半
•   本職    商学部出身の職業プログラマ
•   言語    C++, VisualBasic 6.0, 日本語COBOL
•   日記    http://d.hatena.ne.jp/youandi/
•   所属    大規模分散技術勉強会in名古屋
          名古屋アジャイル勉強会
          わんくま同盟

               わんくま同盟 名古屋勉強会 #15
なぜHadoopか?

• 安西先生!タイムドリブンなシミュレータのデ
  ータ処理を速くしたいです!
• HBaseで高速にデータ書き込み可能
• HDFSにより大容量データも格納可能
• MapReduce他で高速にデータ処理可能
• 容易にスケールアップ可能

• というイメージを持っています!

        わんくま同盟 名古屋勉強会 #15
Agenda

1. MapReduceとは?
2. 分散ファイルシステムについて
3. Hadoopの構成
4. Hadoopの環境構築及び利用
5. Hadoopのデモ
6. まとめ




         わんくま同盟 名古屋勉強会 #15
1. MapReduceとは?(1/10)

• アレ?Hadoopの話は?
 →Hadoopは、Googleが2003年に発表した
  GoogleFileSystem(GFS)及び、2004年に発
  表したMapReduceに関する学術論文を基に
  作られています。
• Googleのシステムの詳細については書籍化
  されています。
 →Googleを支える技術
   ISBN:978-4-7741-3432-1
            わんくま同盟 名古屋勉強会 #15
1. MapReduceとは?(2/10)

Hadoopで実装されいるGoogleの技術
• The Google File System (2003年)
  http://labs.google.com/papers/gfs.html
• MapReduce: Simplified Data Processing on Larg
  e Clusters (2004年)
  http://labs.google.com/papers/mapreduce.html
• BigTable: A Distributed Storage System for Struct
  ured Data (2006年)
  http://labs.google.com/papers/bigtable.html


                  わんくま同盟 名古屋勉強会 #15
1. MapReduceとは?(3/10)

• Googleでも使わているMapReduceってすげぇ!
• ん?でももう使われてないよw
  HighScalability - Google's Colossus Makes Searc
  h Real-time by Dumping MapReduce
  http://mcaf.ee/d6e97
  (参考日本語訳)
  AgileCat - Google Instant では、リアルタイム検索
  のために MapReduce を排除!
  http://wp.me/pwo1E-1Kf


                 わんくま同盟 名古屋勉強会 #15
1. MapReduceとは?(4/10)

• MapReduceの説明の前に、分散処理のイメ
  ージについてちょっと説明
• C++言語のソースコードを分散コンパイルす
  る事例で紹介します(distcc等)
  # ls
  a.cpp b.cpp d.cpp e.cpp f.cpp Makefile
  # make -j8
  ・・・

              わんくま同盟 名古屋勉強会 #15
1. MapReduceとは?(5/10)

• 分散コンパイルの処理イメージ
                              •PC1~PC4のコンパイル環境は
                       PC2     同じバージョンの物を使う必要が
        b.cpp
                               ある。
           b.o                •処理の振り分けは、ソースコード
                               ファイル単位となる。
           c.cpp              •分散コンパイルの場合、入力ファ
 PC1                   PC3     イルサイズ<出力ファイルサイズ
           c.o
                               となる。
a.cpp
  ↓         d.cpp
 a.o       d.o
                        PC4




                    わんくま同盟 名古屋勉強会 #15
1. MapReduceとは?(6/10)

• いよいよMapReduce!
 • MapReduceは、関数型プログラミングのmap関
   数、reduce関数の概念が基になっています
 • MapReduceにおいても、map/reduce関数で処
   理を行います
 • map/reduce関数の入出力データは、Key-Valu
   e形式で行います




          わんくま同盟 名古屋勉強会 #15
1. MapReduceとは?(7/10)

• Hadoop MapReduce
  • 1回のデータ処理を「Job」と定義
  • 1回のmap/reduce関数の処理を「Task」と定義
  • Hadoopのシステムでは「Job」の管理を行うJob
    Trackerが一つ存在し、「Task」の管理を行うTa
    skTrackerは処理ノード毎に一つ存在します。
  • map/reduce以外に、split、partition、combine、
    shuffule、mergeといった処理が存在します



              わんくま同盟 名古屋勉強会 #15
1. MapReduceとは?(8/10)

• Hadoop MapReduceの処理の流れ
      入力データ

     入力スプリット           入力データをMapタスクの処理単位に分割

      Mapタスク           入力データをKey-Value形式に変換

   Partition/Combine   Key-Valueデータの細分化・間引き

    Shuffule/Merge     Key単位でのデータソート

     Reduceタスク         Key-Valueデータの集約

      出力データ

※開発者は一連の処理の流れを知っている必要はあるが、実装は一部のみで良い


                       わんくま同盟 名古屋勉強会 #15
1. MapReduceとは?(9/10)

• Hadoop MapReduceの処理イメージ
           Split,               Combine, Partition,
                      Task
 Client    Map                  Shuffule, Merge, Reduce
                     Tracker
                                        Task
                                       Tracker
   Job                 Task
 Tracker              Tracker
                                        Task
                                       Tracker
                      Task
                     Tracker
※ちょっと質問。このシステムでテストの答案の採点・平均点・合否判定を
 させるとすると、どういう処理の流れになるでしょうか?


                       わんくま同盟 名古屋勉強会 #15
1. MapReduceとは?(10/10)

• MapReduceの得意とする処理
 • 何でも出来る訳では無い
 • ×:リアルタイム処理
 • ○:TEXT形式のデータの加工・集計
    •   アクセスログ解析
    •   文書中のワードカウント
• 因みに天体画像処理でも使われています
 Parallel Distributed Image Stacking and Mosaici
 ng with Hadoop
 http://slidesha.re/dAd17i
                わんくま同盟 名古屋勉強会 #15
2. 分散ファイルシステムについて(1/6)

• 分散ファイルシステムについて
  • 時代はBigData!
  • データは肥大化する一方でPC1台ではデータは
    収まりきらない
  • そこで複数台のPCにデータを分散して保存
  • 分散したデータは、ファイルシステムとして管理
    をし易く
  • 今まで保存出来なかったデータが保存できるよ
    うになり、有効利用する流れ


          わんくま同盟 名古屋勉強会 #15
2. 分散ファイルシステムについて(2/6)

• データを複数のノードで分散して管理するの
  で、データの一貫性やトランザクションの話で
  よく以下の話題が出てきます
 • CAP(Consistency, Availability, Partition Toler
   ance)
 • ACID(Atomicity, Consistency, Isolation, Dura
   bility)
 • BASEトランザクション(Basically Available, Sof
   t-state, Eventual consistency)
• でも今日は無しの方向で!
               わんくま同盟 名古屋勉強会 #15
2. 分散ファイルシステムについて(3/6)

• HDFS(Hadoop Distributed File System)
  • 全体を管理するNameNodeが1つと、数多くの
    DataNodeで構成されています
  • HDFSの1ブロックのサイズは、64MBです。多く
    の場合、64MB以上の設定で利用されています
  • PB(ペタバイト:1024TB)のデータも扱えます
  • HDFSでは、データの読み込み、データの書き
    込み(新規・追記)が可能。データの修正・変更
    は出来ません


              わんくま同盟 名古屋勉強会 #15
2. 分散ファイルシステムについて(4/6)

• HDFSの続き
 • NameNodeは各DataNodeのデータセンター・
   ラック内での位置情報を把握
 • DataNode内で各DataNodeのブロックのデータ
   のレプリカ(複製)をデフォルト設定では1つ持つ
 • この時複製は同一のデータセンターやラック上
   のDataNodeとならないように考慮する
 • NameNodeはHDFS上で1つしか存在しない為、
   単一障害点(SPOF:Single Point Of Failure)と
   なっている

            わんくま同盟 名古屋勉強会 #15
2. 分散ファイルシステムについて(5/6)

• HDFSのイメージ
                NameNode




    DataNode    DataNode   DataNode

    DataNode    DataNode   DataNode

    DataNode    DataNode   DataNode

    DataNode    DataNode   DataNode




               わんくま同盟 名古屋勉強会 #15
2. 分散ファイルシステムについて(6/6)

• Hadoop MapReduce+HDFSのイメージ
                                  • JobTrackerとNameNodeは同一PC
   Client           JobTracker
                                    上でも動作可能
                                  • JobTrackerはDataNode上のデータ
                    NameNode        配置状況を考慮してTaskTrackerに
                                    Taskを投げる




      DataNode       DataNode       DataNode
     TaskTracker    TaskTracker    TaskTracker

      DataNode       DataNode       DataNode
     TaskTracker    TaskTracker    TaskTracker




                   わんくま同盟 名古屋勉強会 #15
3. Hadoopの構成(1/5)

• Apache Hadoop プロジェクト
    • http://hadoop.apache.org/
•   アイコンはぞうさんです
•   「ハドゥープ」って読みます
•   「hadoop」は造語です
•   Googleのシステムのクローン実装です
    • Google MapReduce
    • Google File System(GFS)
    • BigTable
                 わんくま同盟 名古屋勉強会 #15
3. Hadoopの構成(2/5)

• 複数のサブプロジェクトで構成されています
• 夜間バッチ処理等によく利用されています
• 基本的にLinux上で利用します
• 分散処理を行うJavaで作成されたフレームワ
  ークです
• 開発者はフレームワークを利用するアプリを
  開発することになります



        わんくま同盟 名古屋勉強会 #15
3. Hadoopの構成(3/5)

• 単純な処理の組み合わせなのでノードの追
  加により直線的なスケーラビリティが期待で
  きます(設計・実装次第)
• Streaming APIを利用するとJava以外の言
  語からも利用できます
• C++の場合はHadoop Pipesを利用します




          わんくま同盟 名古屋勉強会 #15
3. Hadoopの構成(4/5)

• GoogleとHadoopのシステム構成の比較

     Google                 Hadoop

Google File System   Hadoop Distributed Fi
      (GFS)           le System(HDFS)

Google MapReduce     Hadoop MapReduce

     BigTable               HBase

                わんくま同盟 名古屋勉強会 #15
3. Hadoopの構成(5/5)

• Hadoopのサブプロジェクト構成
                         Oozie
                    (Workflow Engine)

                           Pig                  Hive
                       (Data Flow)          (Batch SQL)
                                   Chukwa
   (Coordination)




                                                               (Serialization)
                    (Displaying, Monitoring, Analyzing Logs)
    ZeroKeeper




                                                                 Avro/Thrift
                                MapReduce
                      (Job Scheduling - Raw Processing)
                         HBase
                    (RealTime Query)
                                    HDFS
                       (Hadoop Distributed File System)


                             わんくま同盟 名古屋勉強会 #15
4. Hadoopの環境構築及び利用(1/5)

• 用意する物
  • Linuxの環境(CentOS, Ubuntu)
  • Java Runtime Environment(JRE)
  • Hadoop
※Windows環境ならCygwinを利用する方法も可能。
 但し、本腰入れてメンテナンスされている訳では無
 いので、常用は止めておいた方が良いかも。
 参考:Hisidama's Hadoop Memo
 http://mcaf.ee/2034a


            わんくま同盟 名古屋勉強会 #15
4. Hadoopの環境構築及び利用(2/5)

• Linuxで環境構築する場合は、Cloudera社の
  パッケージを利用するのが便利というか、こ
  の方法が一般的。
 Cloudera
 http://www.cloudera.com/
• Cloudera社のパッケージには、Hadoop本体
  以外にOozie等も含まれています。




               わんくま同盟 名古屋勉強会 #15
4. Hadoopの環境構築及び利用(3/5)

• Hadoopの実行(Java)
% hadoop ¥
 JavaAppName ¥
 input.txt ¥
 output




             わんくま同盟 名古屋勉強会 #15
4. Hadoopの環境構築及び利用(4/5)

• Hadoop Streamingでの実行(Ruby)
% hadoop jar ¥
$HADOOP_INSTALL/contrib/streaming/hadoop-*-str
   eaming.jar ¥
 -input input.txt ¥
 -output output ¥
 -mapper MyMapper.rb ¥
 -reducer MyReducer.rb



                わんくま同盟 名古屋勉強会 #15
4. Hadoopの環境構築及び利用(5/5)

• Hadoop Pipesでの実行(C++)
% hadoop pipes ¥
 -D hadoop.pipes.java.recordreader=true ¥
 -D hadoop.pipes.java.recordwriter=true ¥
 -input input.txt ¥
 -output output ¥
 -program CppAppName




                わんくま同盟 名古屋勉強会 #15
5. Hadoopのデモ

何かデモを行う予定・・・。




        わんくま同盟 名古屋勉強会 #15
6. まとめ(1/4)

1. MapReduceとは?
  •   Googleではもう使われていない
  •   リアルタイムデータ処理には向かない
  •   直線的なスケーラビリティ(設計次第)
  •   パフォーマンスの肝は、如何にReduceタスクを
      効率よく処理するか




            わんくま同盟 名古屋勉強会 #15
6. まとめ(2/4)

2. 分散ファイルシステムについて
 •   時代はBigData!
 •   捨てていたデータを有効活用できるかも?
 •   ネームノードが単一故障点となる
 •   パフォーマンスの肝は、如何にDiskとNetwork
     のI/Oを減らすか




            わんくま同盟 名古屋勉強会 #15
6. まとめ(3/4)

3. Hadoopの構成
  • Hadoopはフレームワークである
  • 複数のプロジェクトで構成されている
  • 自分で環境を作らなくても、今後はHadoopを簡
    単に利用できるWebサービスが出てくる




           わんくま同盟 名古屋勉強会 #15
6. まとめ(4/4)

4. Hadoopの環境構築及び利用
 • 基本的にLinux環境が前提
 • HadoopはCloudera社のパッケージを使う
 • Hadoopから呼び出される、map/reduce関数を
   実装する
 • 細かく制御したければ、Java又はJavaVM上で
   動作する言語で開発する




          わんくま同盟 名古屋勉強会 #15
参考文献・参考情報

1. Hadoop(ISBN:978-4873114392)
   http://www.oreilly.co.jp/books/9784873114392/
2. Googleを支える技術(ISBN:978-4-7741-3432-1)
   http://gihyo.jp/book/2008/978-4-7741-3432-1
3. 平成21年度 産学連携ソフトウェア工学実践事業報
   告書の公表について - 高信頼クラウド実現用ソフト
   ウェア開発(分散制御処理技術等に係るデータセン
   ター高信頼化に向けた実証事業)
   http://mcaf.ee/0c915


                 わんくま同盟 名古屋勉強会 #15

Hadoop事始め

  • 1.
    Hadoop事始め 2010/10/16 You&I 印刷版 わんくま同盟 名古屋勉強会 #15
  • 2.
    自己紹介 • H/N You&I(読み:ユーアンドアイ) • 出身 生まれも育ちも名古屋市 • 年齢 30代前半 • 本職 商学部出身の職業プログラマ • 言語 C++, VisualBasic 6.0, 日本語COBOL • 日記 http://d.hatena.ne.jp/youandi/ • 所属 大規模分散技術勉強会in名古屋 名古屋アジャイル勉強会 わんくま同盟 わんくま同盟 名古屋勉強会 #15
  • 3.
    なぜHadoopか? • 安西先生!タイムドリブンなシミュレータのデ ータ処理を速くしたいです! • HBaseで高速にデータ書き込み可能 • HDFSにより大容量データも格納可能 • MapReduce他で高速にデータ処理可能 • 容易にスケールアップ可能 • というイメージを持っています! わんくま同盟 名古屋勉強会 #15
  • 4.
    Agenda 1. MapReduceとは? 2. 分散ファイルシステムについて 3.Hadoopの構成 4. Hadoopの環境構築及び利用 5. Hadoopのデモ 6. まとめ わんくま同盟 名古屋勉強会 #15
  • 5.
    1. MapReduceとは?(1/10) • アレ?Hadoopの話は? →Hadoopは、Googleが2003年に発表した GoogleFileSystem(GFS)及び、2004年に発 表したMapReduceに関する学術論文を基に 作られています。 • Googleのシステムの詳細については書籍化 されています。 →Googleを支える技術 ISBN:978-4-7741-3432-1 わんくま同盟 名古屋勉強会 #15
  • 6.
    1. MapReduceとは?(2/10) Hadoopで実装されいるGoogleの技術 • TheGoogle File System (2003年) http://labs.google.com/papers/gfs.html • MapReduce: Simplified Data Processing on Larg e Clusters (2004年) http://labs.google.com/papers/mapreduce.html • BigTable: A Distributed Storage System for Struct ured Data (2006年) http://labs.google.com/papers/bigtable.html わんくま同盟 名古屋勉強会 #15
  • 7.
    1. MapReduceとは?(3/10) • Googleでも使わているMapReduceってすげぇ! •ん?でももう使われてないよw HighScalability - Google's Colossus Makes Searc h Real-time by Dumping MapReduce http://mcaf.ee/d6e97 (参考日本語訳) AgileCat - Google Instant では、リアルタイム検索 のために MapReduce を排除! http://wp.me/pwo1E-1Kf わんくま同盟 名古屋勉強会 #15
  • 8.
    1. MapReduceとは?(4/10) • MapReduceの説明の前に、分散処理のイメ ージについてちょっと説明 • C++言語のソースコードを分散コンパイルす る事例で紹介します(distcc等) # ls a.cpp b.cpp d.cpp e.cpp f.cpp Makefile # make -j8 ・・・ わんくま同盟 名古屋勉強会 #15
  • 9.
    1. MapReduceとは?(5/10) • 分散コンパイルの処理イメージ •PC1~PC4のコンパイル環境は PC2 同じバージョンの物を使う必要が b.cpp ある。 b.o •処理の振り分けは、ソースコード ファイル単位となる。 c.cpp •分散コンパイルの場合、入力ファ PC1 PC3 イルサイズ<出力ファイルサイズ c.o となる。 a.cpp ↓ d.cpp a.o d.o PC4 わんくま同盟 名古屋勉強会 #15
  • 10.
    1. MapReduceとは?(6/10) • いよいよMapReduce! • MapReduceは、関数型プログラミングのmap関 数、reduce関数の概念が基になっています • MapReduceにおいても、map/reduce関数で処 理を行います • map/reduce関数の入出力データは、Key-Valu e形式で行います わんくま同盟 名古屋勉強会 #15
  • 11.
    1. MapReduceとは?(7/10) • HadoopMapReduce • 1回のデータ処理を「Job」と定義 • 1回のmap/reduce関数の処理を「Task」と定義 • Hadoopのシステムでは「Job」の管理を行うJob Trackerが一つ存在し、「Task」の管理を行うTa skTrackerは処理ノード毎に一つ存在します。 • map/reduce以外に、split、partition、combine、 shuffule、mergeといった処理が存在します わんくま同盟 名古屋勉強会 #15
  • 12.
    1. MapReduceとは?(8/10) • HadoopMapReduceの処理の流れ 入力データ 入力スプリット 入力データをMapタスクの処理単位に分割 Mapタスク 入力データをKey-Value形式に変換 Partition/Combine Key-Valueデータの細分化・間引き Shuffule/Merge Key単位でのデータソート Reduceタスク Key-Valueデータの集約 出力データ ※開発者は一連の処理の流れを知っている必要はあるが、実装は一部のみで良い わんくま同盟 名古屋勉強会 #15
  • 13.
    1. MapReduceとは?(9/10) • HadoopMapReduceの処理イメージ Split, Combine, Partition, Task Client Map Shuffule, Merge, Reduce Tracker Task Tracker Job Task Tracker Tracker Task Tracker Task Tracker ※ちょっと質問。このシステムでテストの答案の採点・平均点・合否判定を させるとすると、どういう処理の流れになるでしょうか? わんくま同盟 名古屋勉強会 #15
  • 14.
    1. MapReduceとは?(10/10) • MapReduceの得意とする処理 • 何でも出来る訳では無い • ×:リアルタイム処理 • ○:TEXT形式のデータの加工・集計 • アクセスログ解析 • 文書中のワードカウント • 因みに天体画像処理でも使われています Parallel Distributed Image Stacking and Mosaici ng with Hadoop http://slidesha.re/dAd17i わんくま同盟 名古屋勉強会 #15
  • 15.
    2. 分散ファイルシステムについて(1/6) • 分散ファイルシステムについて • 時代はBigData! • データは肥大化する一方でPC1台ではデータは 収まりきらない • そこで複数台のPCにデータを分散して保存 • 分散したデータは、ファイルシステムとして管理 をし易く • 今まで保存出来なかったデータが保存できるよ うになり、有効利用する流れ わんくま同盟 名古屋勉強会 #15
  • 16.
    2. 分散ファイルシステムについて(2/6) • データを複数のノードで分散して管理するの で、データの一貫性やトランザクションの話で よく以下の話題が出てきます • CAP(Consistency, Availability, Partition Toler ance) • ACID(Atomicity, Consistency, Isolation, Dura bility) • BASEトランザクション(Basically Available, Sof t-state, Eventual consistency) • でも今日は無しの方向で! わんくま同盟 名古屋勉強会 #15
  • 17.
    2. 分散ファイルシステムについて(3/6) • HDFS(HadoopDistributed File System) • 全体を管理するNameNodeが1つと、数多くの DataNodeで構成されています • HDFSの1ブロックのサイズは、64MBです。多く の場合、64MB以上の設定で利用されています • PB(ペタバイト:1024TB)のデータも扱えます • HDFSでは、データの読み込み、データの書き 込み(新規・追記)が可能。データの修正・変更 は出来ません わんくま同盟 名古屋勉強会 #15
  • 18.
    2. 分散ファイルシステムについて(4/6) • HDFSの続き • NameNodeは各DataNodeのデータセンター・ ラック内での位置情報を把握 • DataNode内で各DataNodeのブロックのデータ のレプリカ(複製)をデフォルト設定では1つ持つ • この時複製は同一のデータセンターやラック上 のDataNodeとならないように考慮する • NameNodeはHDFS上で1つしか存在しない為、 単一障害点(SPOF:Single Point Of Failure)と なっている わんくま同盟 名古屋勉強会 #15
  • 19.
    2. 分散ファイルシステムについて(5/6) • HDFSのイメージ NameNode DataNode DataNode DataNode DataNode DataNode DataNode DataNode DataNode DataNode DataNode DataNode DataNode わんくま同盟 名古屋勉強会 #15
  • 20.
    2. 分散ファイルシステムについて(6/6) • HadoopMapReduce+HDFSのイメージ • JobTrackerとNameNodeは同一PC Client JobTracker 上でも動作可能 • JobTrackerはDataNode上のデータ NameNode 配置状況を考慮してTaskTrackerに Taskを投げる DataNode DataNode DataNode TaskTracker TaskTracker TaskTracker DataNode DataNode DataNode TaskTracker TaskTracker TaskTracker わんくま同盟 名古屋勉強会 #15
  • 21.
    3. Hadoopの構成(1/5) • ApacheHadoop プロジェクト • http://hadoop.apache.org/ • アイコンはぞうさんです • 「ハドゥープ」って読みます • 「hadoop」は造語です • Googleのシステムのクローン実装です • Google MapReduce • Google File System(GFS) • BigTable わんくま同盟 名古屋勉強会 #15
  • 22.
    3. Hadoopの構成(2/5) • 複数のサブプロジェクトで構成されています •夜間バッチ処理等によく利用されています • 基本的にLinux上で利用します • 分散処理を行うJavaで作成されたフレームワ ークです • 開発者はフレームワークを利用するアプリを 開発することになります わんくま同盟 名古屋勉強会 #15
  • 23.
    3. Hadoopの構成(3/5) • 単純な処理の組み合わせなのでノードの追 加により直線的なスケーラビリティが期待で きます(設計・実装次第) • Streaming APIを利用するとJava以外の言 語からも利用できます • C++の場合はHadoop Pipesを利用します わんくま同盟 名古屋勉強会 #15
  • 24.
    3. Hadoopの構成(4/5) • GoogleとHadoopのシステム構成の比較 Google Hadoop Google File System Hadoop Distributed Fi (GFS) le System(HDFS) Google MapReduce Hadoop MapReduce BigTable HBase わんくま同盟 名古屋勉強会 #15
  • 25.
    3. Hadoopの構成(5/5) • Hadoopのサブプロジェクト構成 Oozie (Workflow Engine) Pig Hive (Data Flow) (Batch SQL) Chukwa (Coordination) (Serialization) (Displaying, Monitoring, Analyzing Logs) ZeroKeeper Avro/Thrift MapReduce (Job Scheduling - Raw Processing) HBase (RealTime Query) HDFS (Hadoop Distributed File System) わんくま同盟 名古屋勉強会 #15
  • 26.
    4. Hadoopの環境構築及び利用(1/5) • 用意する物 • Linuxの環境(CentOS, Ubuntu) • Java Runtime Environment(JRE) • Hadoop ※Windows環境ならCygwinを利用する方法も可能。 但し、本腰入れてメンテナンスされている訳では無 いので、常用は止めておいた方が良いかも。 参考:Hisidama's Hadoop Memo http://mcaf.ee/2034a わんくま同盟 名古屋勉強会 #15
  • 27.
    4. Hadoopの環境構築及び利用(2/5) • Linuxで環境構築する場合は、Cloudera社の パッケージを利用するのが便利というか、こ の方法が一般的。 Cloudera http://www.cloudera.com/ • Cloudera社のパッケージには、Hadoop本体 以外にOozie等も含まれています。 わんくま同盟 名古屋勉強会 #15
  • 28.
    4. Hadoopの環境構築及び利用(3/5) • Hadoopの実行(Java) %hadoop ¥ JavaAppName ¥ input.txt ¥ output わんくま同盟 名古屋勉強会 #15
  • 29.
    4. Hadoopの環境構築及び利用(4/5) • HadoopStreamingでの実行(Ruby) % hadoop jar ¥ $HADOOP_INSTALL/contrib/streaming/hadoop-*-str eaming.jar ¥ -input input.txt ¥ -output output ¥ -mapper MyMapper.rb ¥ -reducer MyReducer.rb わんくま同盟 名古屋勉強会 #15
  • 30.
    4. Hadoopの環境構築及び利用(5/5) • HadoopPipesでの実行(C++) % hadoop pipes ¥ -D hadoop.pipes.java.recordreader=true ¥ -D hadoop.pipes.java.recordwriter=true ¥ -input input.txt ¥ -output output ¥ -program CppAppName わんくま同盟 名古屋勉強会 #15
  • 31.
    5. Hadoopのデモ 何かデモを行う予定・・・。 わんくま同盟 名古屋勉強会 #15
  • 32.
    6. まとめ(1/4) 1. MapReduceとは? • Googleではもう使われていない • リアルタイムデータ処理には向かない • 直線的なスケーラビリティ(設計次第) • パフォーマンスの肝は、如何にReduceタスクを 効率よく処理するか わんくま同盟 名古屋勉強会 #15
  • 33.
    6. まとめ(2/4) 2. 分散ファイルシステムについて • 時代はBigData! • 捨てていたデータを有効活用できるかも? • ネームノードが単一故障点となる • パフォーマンスの肝は、如何にDiskとNetwork のI/Oを減らすか わんくま同盟 名古屋勉強会 #15
  • 34.
    6. まとめ(3/4) 3. Hadoopの構成 • Hadoopはフレームワークである • 複数のプロジェクトで構成されている • 自分で環境を作らなくても、今後はHadoopを簡 単に利用できるWebサービスが出てくる わんくま同盟 名古屋勉強会 #15
  • 35.
    6. まとめ(4/4) 4. Hadoopの環境構築及び利用 • 基本的にLinux環境が前提 • HadoopはCloudera社のパッケージを使う • Hadoopから呼び出される、map/reduce関数を 実装する • 細かく制御したければ、Java又はJavaVM上で 動作する言語で開発する わんくま同盟 名古屋勉強会 #15
  • 36.
    参考文献・参考情報 1. Hadoop(ISBN:978-4873114392) http://www.oreilly.co.jp/books/9784873114392/ 2. Googleを支える技術(ISBN:978-4-7741-3432-1) http://gihyo.jp/book/2008/978-4-7741-3432-1 3. 平成21年度 産学連携ソフトウェア工学実践事業報 告書の公表について - 高信頼クラウド実現用ソフト ウェア開発(分散制御処理技術等に係るデータセン ター高信頼化に向けた実証事業) http://mcaf.ee/0c915 わんくま同盟 名古屋勉強会 #15