SlideShare a Scribd company logo
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

More Related Content

PDF
Hadoopのシステム設計・運用のポイント
PDF
Hadoopを用いた大規模ログ解析
PDF
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
PPTX
Hadoop Troubleshooting 101 - Japanese Version
PDF
Hadoop入門
PDF
ただいまHadoop勉強中
PDF
CDH4.1オーバービュー
PPTX
Hadoop -NameNode HAの仕組み-
Hadoopのシステム設計・運用のポイント
Hadoopを用いた大規模ログ解析
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
Hadoop Troubleshooting 101 - Japanese Version
Hadoop入門
ただいまHadoop勉強中
CDH4.1オーバービュー
Hadoop -NameNode HAの仕組み-

What's hot (20)

PDF
Hadoop Source Code Reading #17
PDF
HBaseを用いたグラフDB「Hornet」の設計と運用
PDF
オライリーセミナー Hive入門 #oreilly0724
PPTX
Hadoop -ResourceManager HAの仕組み-
PDF
Hadoop概要説明
PDF
MapReduceプログラミング入門
PDF
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
PPTX
100億超メッセージ/日のサービスを 支えるHBase運用におけるチャレンジ
PDF
MapR M7 技術概要
PDF
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
PDF
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
PDF
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
PPTX
Hadoopソースコードリーディング8/MapRを使ってみた
PPTX
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
PDF
Tez on EMRを試してみた
PDF
MapReduce/YARNの仕組みを知る
PDF
HDFS新機能総まとめin 2015 (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo 2015 講演資料)
PDF
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
PDF
スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w
Hadoop Source Code Reading #17
HBaseを用いたグラフDB「Hornet」の設計と運用
オライリーセミナー Hive入門 #oreilly0724
Hadoop -ResourceManager HAの仕組み-
Hadoop概要説明
MapReduceプログラミング入門
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
100億超メッセージ/日のサービスを 支えるHBase運用におけるチャレンジ
MapR M7 技術概要
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
Apache Hadoop の現在と将来(Hadoop / Spark Conference Japan 2016 キーノート講演資料)
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Hadoopソースコードリーディング8/MapRを使ってみた
ATN No.1 MapReduceだけでない!? Hadoopとその仲間たち
Tez on EMRを試してみた
MapReduce/YARNの仕組みを知る
HDFS新機能総まとめin 2015 (日本Hadoopユーザー会 ライトニングトーク@Cloudera World Tokyo 2015 講演資料)
MapR アーキテクチャ概要 - MapR CTO Meetup 2013/11/12
スケーラブルなシステムのためのHBaseスキーマ設計 #hcj13w
Ad

Viewers also liked (18)

PDF
私の熱いアジャイル活動、アジャカツ!始まります フフッヒ
PDF
アジャイルマニフェストから始めるアジャイル
PDF
Agree2009で作成するわんくま発表資料
PPTX
わんくま同盟紹介資料
PDF
Team Foundation Serivceを使ってみる
PDF
Appmethodで何か作ってみる
PPTX
並列処理について
PDF
顧客のニーズを捉えて、システム統合していますか?
PDF
Silverlight+COMにチャレンジ
PDF
LT司会資料(わんくま同盟名古屋勉強会#21)
PDF
IBM Rational Team Concertに触れてみた
PDF
SWでKYT
PDF
名古屋アジャイルな見積りと計画づくり
PDF
めざせスクラムマスター
PDF
すぱこーに学ぶアプリ開発の第一歩
PDF
しょうぎアプリ
PDF
ペーパークラフトで学ぶフィードバックと改善(鬼)
PDF
マシュマロ・チャレンジでチームビルディング体験
私の熱いアジャイル活動、アジャカツ!始まります フフッヒ
アジャイルマニフェストから始めるアジャイル
Agree2009で作成するわんくま発表資料
わんくま同盟紹介資料
Team Foundation Serivceを使ってみる
Appmethodで何か作ってみる
並列処理について
顧客のニーズを捉えて、システム統合していますか?
Silverlight+COMにチャレンジ
LT司会資料(わんくま同盟名古屋勉強会#21)
IBM Rational Team Concertに触れてみた
SWでKYT
名古屋アジャイルな見積りと計画づくり
めざせスクラムマスター
すぱこーに学ぶアプリ開発の第一歩
しょうぎアプリ
ペーパークラフトで学ぶフィードバックと改善(鬼)
マシュマロ・チャレンジでチームビルディング体験
Ad

Similar to Hadoop事始め (20)

PPTX
Cloudera大阪セミナー 20130219
PPTX
A 2-3ゾウ使いへの第一歩 hadoop on azure 編
PPTX
ゾウ使いへの第一歩
PDF
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~
PPTX
EmbulkとDigdagとデータ分析基盤と
PPTX
EmbulkとDigdagとデータ分析基盤と
PDF
Data-Intensive Text Processing with MapReduce(Ch1,Ch2)
PDF
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
PDF
Hadoop ecosystem NTTDATA osc15tk
PDF
MapReduce解説
PDF
OSC2012 OSC.DB Hadoop
PDF
第1回Hadoop関西勉強会参加レポート
PPT
Googleの基盤クローン Hadoopについて
PDF
Kuduを調べてみた #dogenzakalt
PPTX
MapReduceを使った並列化 20111212
PPT
はやわかりHadoop
PDF
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
PDF
PDF
Spark shark
PDF
Rubyによるお手軽分散処理
Cloudera大阪セミナー 20130219
A 2-3ゾウ使いへの第一歩 hadoop on azure 編
ゾウ使いへの第一歩
【17-E-3】Hadoop:黄色い象使いへの道 ~「Hadoop徹底入門」より~
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
Data-Intensive Text Processing with MapReduce(Ch1,Ch2)
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
Hadoop ecosystem NTTDATA osc15tk
MapReduce解説
OSC2012 OSC.DB Hadoop
第1回Hadoop関西勉強会参加レポート
Googleの基盤クローン Hadoopについて
Kuduを調べてみた #dogenzakalt
MapReduceを使った並列化 20111212
はやわかりHadoop
NTTデータ流 Hadoop活用のすすめ ~インフラ構築・運用の勘所~
Spark shark
Rubyによるお手軽分散処理

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の技術 • 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
  • 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) • Hadoop MapReduce • 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) • Hadoop MapReduceの処理の流れ 入力データ 入力スプリット 入力データをMapタスクの処理単位に分割 Mapタスク 入力データをKey-Value形式に変換 Partition/Combine Key-Valueデータの細分化・間引き Shuffule/Merge Key単位でのデータソート Reduceタスク Key-Valueデータの集約 出力データ ※開発者は一連の処理の流れを知っている必要はあるが、実装は一部のみで良い わんくま同盟 名古屋勉強会 #15
  • 13. 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
  • 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(Hadoop Distributed 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) • 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
  • 21. 3. Hadoopの構成(1/5) • Apache Hadoop プロジェクト • 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) • 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
  • 30. 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
  • 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