Mais conteúdo relacionado Semelhante a Hadoop事始め (20) Hadoop事始め2. 自己紹介
• H/N You&I(読み:ユーアンドアイ)
• 出身 生まれも育ちも名古屋市
• 年齢 30代前半
• 本職 商学部出身の職業プログラマ
• 言語 C++, VisualBasic 6.0, 日本語COBOL
• 日記 http://d.hatena.ne.jp/youandi/
• 所属 大規模分散技術勉強会in名古屋
名古屋アジャイル勉強会
わんくま同盟
わんくま同盟 名古屋勉強会 #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
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
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
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
32. 6. まとめ(1/4)
1. MapReduceとは?
• Googleではもう使われていない
• リアルタイムデータ処理には向かない
• 直線的なスケーラビリティ(設計次第)
• パフォーマンスの肝は、如何にReduceタスクを
効率よく処理するか
わんくま同盟 名古屋勉強会 #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