Upload
akira-shimosako
View
11.322
Download
5
Embed Size (px)
DESCRIPTION
2013/07/26のCLUB DB2での発表資料(配布版)です。 作成・発表は土屋 敦さんですが、代理でUPLOADしています。 CLUB DB2 第167回「IBM版Hadoop "BigInsights"とBig SQL機能」 https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/ClubDB2/page/%E7%AC%AC167%E5%9B%9E
Citation preview
© 2013 IBM Corporation
Hadoop meets SQL – Big SQLInfoSphere BigInsights v2.1IBM Hadoopソフトウェア・テクノロジー
© 2013 IBM Corporation2
本日の内容
�お知らせ�Hadoopとは�InfoSphere BigInsightsの概要�Big SQLデモ
© 2013 IBM Corporation3
お知らせ:クイックスタート・エディションは無償で利⽤可能� 非商用環境において、無期限・サイズ無制限で利⽤可能。
-提供形態:バイナリー版(インストーラー)⇒クラスタ環境構築可能VMイメージ (本日のデモで使います)
ここからダウンロード
ダウンロード:http://www.ibm.com/software/data/infosphere/biginsights/quick-start/index.html
© 2013 IBM Corporation4
© 2013 IBM Corporation5
� 超⼤容量のファイルを� ⼀気に全て処理するための� 分散ファイルシステムと� バッチ処理システムの組合せ
� 作り込みが必要だが多様な目的に利⽤可
� オープンソース Apache Software Foundation(http://hadoop.apache.org)
Hadoopとは?
© 2013 IBM Corporation6
Hadoopの仕組みとコンセプト
•「⼤量データ」を扱う、分散処理フレームワークの仕組み
• HDFS・MapReduce
•Hadoopのコンセプト• スケール・アップではなく、
スケーラビリティ重視のスケールアウト型• 障害が発生することが前提(エラー忘却型)• データに対してプログラムを移動させる(ローカリティ)• レイテンシー(応答時間)ではなく、スループット重視• システムレベル(分散)の隠ぺい
© 2013 IBM Corporation7
Hadoop処理の概念(ざっくり)
1台のサーバで処理をするよりも、
複数台のサーバで1つの処理を分割して処理する⽅が効率的という考え⽅。
Webサーバログ等RDB
Webサーバログ、準構造化データ等を事前に分割配置(HDFS)・・・・プログラムをデータ側へ。
RDB
20分 5分 5分 5分 5分
© 2013 IBM Corporation8
� 問題は単純:ハードディスクの高速化が追い付いていない– Seagate社の資料によるHDDの容量と転送速度• 1990年 1.37GB ÷ 4.4MB/s = 311s =5分• 2010年 1000GB ÷ 100MB/s = 10000s =2.7時間
– HDD1台の全データを読み出すのに3時間近くかかる
� 100台のHDDに分散する?– ハードウェア障害への対処が必要•故障率は⼀気に100倍
– 分散されたデータの結合をどう⾏うか?シンプルに言えば、この課題をHadoop-MapReduceとHDFS-で解決する
データの保管と分析上の問題
これってDBMSでは解決できない?できる?Hadoopだけが選択肢?
© 2013 IBM Corporation9
なぜ、分散させるのか?• 分散させる理由
• ⼤量データ処理では、ディスクIOがボトルネックになる。• 分散させたデータは、保持しているサーバー自身が、それぞれ処理(読み込み、書き出
し)する ⇒「ローカリティ」という重要なコンセプト!
CPUCPU
CPUCPU
CPUCPU
CPUCPU
CPUCPU
CPUCPU
分散サーバ⽅式(シェアード・ナッシング⽅式)
1台のサーバで処理をすると、ディスクIOが原因で全てのCPUを効率的に使えないことがある。
複数台のサーバで処理をすると、ディスクIOが原因になりにくくなり、全てのCPUをより効率的に使える。
CPUCPUCPU
CPUCPUCPU
CPUCPUCPU
CPUCPUCPU
共通ストレージ
CPUを使い切れない
ディスクIOネック
© 2013 IBM Corporation10
Hadoopにおける分散処理のポイント• 分散させる3つの理由
• ⼀般的なサーバを並べる <経済性>• 台数の増減が可能 <スモール・スタート/拡張性>• 内蔵ディスクをストレージとして、巨⼤なファイルを保存する
<高価なストレージ必要なし>
スケールアップ(CPUを増やす)では、価格・性能限界がある。※OLTP処理にはDBは必ず必要です。DBがいらいないと言っているわけではありません。
⼀般的なサーバ複数台で処理をするのが、Hadoopそもそもの考え⽅。
CPUを2倍にしても処理性能が2倍にな
らない 分散させすぎても付加増⼤にな
るので注意
© 2013 IBM Corporation11
他のシステムとの比較:RDBMS
得意苦手全件処理
直線的非直線的スケイラビリティ
動的なスキーマ(半・非構造化データ)
静的なスキーマ(構造化データ)構造
書きこみは⼀度で、読み出しは何度も⾏われる何度も読み書きされる更新
バッチオンラインもバッチも可アクセス
テラ〜ペタバイト〜テラバイト+データサイズ
Hadoop(⼀般的な考えの)RDBMSSometimes termed “Schema First” or
“Schema-on-Write”
Sometimes termed “Schema Later” or
“Schema-on-Read”
ここではわかりやすいように主観的な比較をしています。
© 2013 IBM Corporation12
Hadoopとは何か?� ジョブと呼ばれるアプリケーションを
ペタバイト級のデータを処理可能なコモディティーなハードウェアによる⼤きなクラスター上で実⾏するためのフレームワーク
– コモディティーなハードウェア : Intel x86互換の比較的安価なPCサーバーでというのがもともと。
� HDFSという名の分散ファイルシステムを提供する。複数のノードにデータを分散し、クラスター全体で高スループットを提供する。
� Map/Reduceと呼ばれる演算パラダイムを実装する。アプリケーションはタスク単位に分割され、クラスター上のデータの存在するノード上にて実⾏される
� アプリケーションに高信頼性と透過的なデータ処理を与えるフレームワークでデータローカリティーを保証する
� 個別ノードの障害対応は自動的にフレームワークにより対処される。※ノード障害が発生したら、直さないと止まってしまうシステムではない、ということ。
© 2013 IBM Corporation13
データローカリティーとは?� ⼀般にプログラムは巨⼤データに比べると無視できるくらい小さい� 現在のコンピュータはCPUに比べサーバー同士を繋ぐネットワークは
とても遅い� 分散システムにおいて、データではなく、プログラムを移動するほう
がネットワーク通信コストが格段に低い� ボトルネックを解消することで処理全体が
速くなる
� 処理対象のデータが物理的に存在するノードにて処理を実⾏する仕組をデータローカリティーと言う
� Hadoopは分散ファイルシステムにて巨⼤ファイルを分割して等しく分布させ、処理対象のデータが存在するノードにプログラムを転送し、処理を実⾏するため高速に分散処理が可能となる、という考え⽅。
© 2013 IBM Corporation14
� 2002年– Doug CuttingとMike CafarellaがOSSの検索エンジン開発を目的として
WebクローラーNutchの開発開始� 2003年
– Googleが自社検索エンジンで使⽤する分散ファイルシステム、GFS論⽂公開
� 2004年– 二人がGFSの論⽂を元にNDFS(後のHDFS)開発– GoogleがMapReuduce論⽂公開
� 2005年 NutchにMapReduceを実装� 2006年 NutchからHadoopとして独⽴
→ もともとHadoopは、Google基盤システムについて記載された論⽂を元に、実装を⾏い進化してきたもの
Hadoopにまつわる年表
© 2013 IBM Corporation15
15
•Googleが提唱したテクノロジーを、Yahoo!が実装、Apacheファンデーションに寄付。「⼤量データ」を扱う、分散処理フレームワーク
•Hadoopの構成要素• HDFS (Hadoop Distributed File System)
• 複数ノードのローカルファイルシステムを論理的に結合して、1つの共有ファイルシステムを作成します。
• Hadoop MapReduce• MapReduce と呼ばれる分散コンピューティングモデルに基
づくプログラムを Java で作成するためのフレームワークを提供します。
MapReduceは単純な仕組み。Googleが⼤規模データ処理を実現し、その有⽤性を具現化したYahoo!の貢献は⼤きいといえます。このように分散処理への取り組みのハードルを低くし
たといえます。
© 2013 IBM Corporation16
16
Hadoopがなぜ開発されたか?•Googleに代表されるインターネット・サービスを提供する企業
は、検索インデックス作成や、Webサーバのアクセスログなどの解析のようなレコード単位の単純な処理を⼤量データに対して処理を⾏う作業が必要です。
•今までは、このような処理は対象データを分割し、複数サーバで、それぞれ処理を⾏い、結果を集計するという分散処理を⾏い処理時間を短くしていました。
•Googleでは、このような処理を自動化できないか?という目的で独自処理フレームワークを開発しました。このフレームワークでは、各レコードに対する処理指⽰を記述するMAP関数と、その結果を集計するREDUCE関数を記述すると、上記の分散処理と集計が自動的に⾏われます。
•Googleが、このフレームワーク概要をMapReduceという呼び⽅をし紹介しました。そして、Yahoo!がこのフレームワークをHadoopとして実装しました。
© 2013 IBM Corporation17
参考:日経コンピュータからの抜粋
© 2013 IBM Corporation18
Hadoopの特徴� バッチ処理に威⼒を発揮
– 従来数時間〜数日要していた処理を短時間で処理– 処理を分割して複数のサーバで分散処理を実⾏
� 高いスケーラビリティ– 容易にスケールアウトが可能– サーバ増設で格納容量,処理性能を向上– 数台〜4000台程度までのHadoop環境を構築可能
� 特定のサーバが故障してもサービス継続– データは分割・分散配置– 処理に異常が発生する場合は、他サーバで再実⾏
� コモディティな製品で構成可能– 10〜50万円/ノード(ディスク容量当たりのCPU&メモリを安価に)– 特定ベンダの特別な製品は不要
� 敷居が高かった分散並列処理を⼀般業務に安全に利⽤できるようになった(並列化に考慮するが分散の意識不要)
出典:O’Reily,Hadoop第2版,OSC2012 DB(2012年7月)日本Hadoopユーザー会講演より(⼀部補筆)
© 2013 IBM Corporation19
参考:Hadoopに対してよくある誤解(不得意)�誤解1: (RDBMSのような)高速なデータアクセス
– ミリ秒単位の処理をHadoopに求めてはいけない※ただし、このリアルタイム化が進んでいます。※HBaseも(少量ならHiveも)それなりのレスポンスタイムが実現できるケースがあります。
�誤解2: ⼤量の小さなファイル–Hadoopは小さなファイルを扱うのが苦手である
�誤解3: 複数のライターからの書き込みや,任意のファイル修正
–書き込みは常にファイルの末尾に⾏われる–複数ライターのサポートはない
◎⼤量データに特化したバッチシステム–オンライン処理は不向き(スループット優先)–データは⼤きな塊として扱うことが望ましい
出典:O’Reily,Hadoop第2版,OSC2012 DB(2012年7月)日本Hadoopユーザー会講演より(⼀部補筆)
© 2013 IBM Corporation20
Hadoop/MapReduce が向いている」もの
•日々膨張する蓄積データ• 毎日数百GBずつ生成されるログのようなデータへの対応ができる• HDFSならサーバを買い足して増強できる
• IO ボトルネックで⻑時間かかるジョブがある• シェアードナッシングによる分散処理での解決可能性
•⼤量データを同時処理し、ソートやマージ処理がくり返される• MapReduceはそのためのフレームワーク
※個別処理なら、別の選択肢もありえることを忘れない!
•準構造化・非構造化データ•今はMapReduceに向いていないが、将来、蓄積された処理結果を
統計分析などする可能性がある• 最初から、蓄積先をHDFSに入れ、MapReduceで分析するとよいのでは?
データが分割、処理が分割できることが前
提
アーカイブとして利⽤するのは、コスト的に?の場合
がある。
© 2013 IBM Corporation21
Hadoop/MapReduce が向いていない」もの•少ないデータ量
• Hadoopは,TB/PBクラスのデータ量を処理することが前提。• 基本的に100GB以上はほしい
• でも、数十GBなら、Hadoop分散処理効果は得られるはず →トライ&エラー• ノウハウが必要(結局、うまくいかない場合もある)
•IO ボトルネックになっていない処理• 分散させても、IOネックは関係はない。
• 処理の計算コストは分散低減(CPU負荷分散)はできる可能性はある。
• ×××× 処理の途中で更新がある。• ×××× DBと同じトランザクション処理。• ミッション・クリティカル・システムへの適応?(時期尚早?)
→ファイルシステム改善?Hadoopアプライアンス? IBMはこれらの課題をアドレスします。
• ××××応答時間を求められている処理(OLTP処理)。• ××××分割をしたら、結果が変わる処理(MapReduceの特性の理解)。• ××××シーケンシャル番号を割り当てる処理(DBのSeqに相当)。• ××××処理順序が厳密に求められる処理。
• 計算ノードからの応答は順不同
データが少ないと、分割負荷が相対的に大きくなる
データが分割処理ができることが前提
途中での更新はできない。(Hbaseの活用はできる)
© 2013 IBM Corporation22
Hadoop基盤の特徴の理解が必要� Hadoopは、SWとHWの両面において「汎用化」を⾏うことで、相対的
に安価な基盤で、ユーザーの開発生産性を高めつつ、⼤容量データ処理を実現しています。
データノード データノード データノード
MapReduce
B1 B2
HDFS
MapReduce
B3 B4
HDFS
Map
Shuffle
MapReduce
B5 B6
HDFS
TT TT TT
ネームノードJTHDFS
メタデータ
Core Core Core Core
HDD HDDmem
Core Core Core Core
HDD HDDmem
Core Core Core Core
HDD HDDmem
APL(バッチ)
投入
Map
Shuffle
Reduce
Map
Shuffle
Reduce
ソフトウェア
ハードウェア� 「コモディティ」なHWでの利⽤を前提とした設計
�IAサーバー、内蔵SATAディスク、1GbEネットワークなど…
� 「スケールアウト」による性能拡張�各ノードの性能を高めるより、同じスペックの「安価な」ノードを追加することで性能向上
� 並列分散処理として汎⽤化できる部分をフレームワークとして吸収(全てではない)
�MapReduce、Hive… (IBMはJaql言語)� 可⽤性、性能向上はソフトウェアの仕組みとして対応
�HDFSのファイル分散、冗⻑化のよるデータ保護�障害時は、ノードごと交換する運⽤⽅針
© 2013 IBM Corporation23
� 並列処理フレームワークである” MapReduce”と、⼤量データを格納するための専⽤分散ファイルシステム である“HDFS” から構成されます。
計算ノード 計算ノード計算ノード
Hadoop のアーキテクチャー概要
・・・
Hadoop Distributed Filesystem (HDFS) 計算ノード群(仮想的に1つのストレージに⾒える)
MapReduceエンジンそれぞれノードから同じデータ
が参照可能。(実際のデータは、各サーバーのローカルディスクに分散配置)
MapReduceエンジン
MapReduceエンジン
管理ノードJobTracker
MapReduce タスクをディスパッチ(計算ノードの停止時には、タスクを再ディスパッチ)
Jobの実⾏を管理およびTaskのディスバッチを⾏う
内臓ディスク 内臓ディスク 内臓ディスク
© 2013 IBM Corporation24
HDFSは仮想(アプリで実装された)分散ファイルシステム
/
user
dir1 dir2 dir3
どのマシンからも同じファイルが⾒られるが、専⽤コマンドが必要
ファイルやディレクトリーは専⽤のコマンドにて作成
© 2013 IBM Corporation25
HDFS: アーキテクチャーいわゆる中央管理システム
© 2013 IBM Corporation26
ネームノードとデータノード
� マスター/スレーブ方式– ネームノード (マスター)• HDFSの名前空間を管理• ファイルシステム内のツリーと、ツリー内の全ファイル及びディレクト
リーのメタデータをメモリー上にて管理• SPOFのためHA等を⽤いた冗⻑化が必要
– データノード (スレーブ)• ブロックの読み書き• ネームノードに定期的に保管しているブロックリストを報告• データノードが故障しても全体に影響がない
© 2013 IBM Corporation27
参考:HDFSとは〜Hadoop専⽤ファイル・システム〜
� HDFS:(Hadoop Distributed File System)– 複数台のマシンをN/W連結し、⼤きなストレージを形成している。⼤きなファイルを複数のスト
レージにまたがり格納することができる。� Name ノード(←これがSPOFがあると言われる所以。対応必要。NameノードとHDFSをHA化する取り組みも進んでいます)
– データノードに分散された実データのある場所を記憶する。� Secondary Nameノード
– メタデータの変更の際に記述された変更内容のジャーナルを元に、ファイルに保存されたメタデータ情報を定期的に最新の状態に更新する。
– メタデータ情報を保存するファイルとエディットログファイルは、冗⻑性のために、各ノードのローカルファイルシステムとNFS マウントしたリモートディスクの2 箇所に保存する。
� Data ノード– HDFS独自のブロック転送プロトコルによりデータブロックを転送する。またHTTPによりデータ
を提供すること ができ、WEBブラウザ等のクライアントからのアクセスを処理できる。データノード間はお互いに通信し、データ再配置、データコピー、冗⻑性維持を⾏うことができる。データはファイル単位ではなくブロック単位で各ノードに分散される。
・・
・・・
HDFSへデータを分散保存
Data Node+Task Tracker Node
データ Map
Data Node+Task Tracker Node
Mapデータ
Data Node+Task Tracker Node
Shuffle
Data Node+Task Tracker Node
Reduce
Reduce
Data Node+Task Tracker Node
Reduce
結果A
結果B
結果C
結果Shuffle
Nameノード
Shuffle
Job Tracker
Secondary Nameノード
実際のデータを保存
ファイルシステムのメタデータを管理
© 2013 IBM Corporation28
HDFSにおけるファイルの書込
コピー作成に失敗しても規定数以上のブロックが作成できれば書込は成功し、HDFSが引き継いだ後に、コピーを後から増やす
コピーを保存するノードもネームノードが決定する
© 2013 IBM Corporation29
29
Hadoopでは、障害は発生することが前提〜HDFSと自動レプリカの仕組み〜
データノード群
A1 A2 A3
B1 B2 B3
ファイルA
ファイルB
A1 A1 A2
A2 A2 A3 A3
A3B1 B2 B2
B3 B3
三つのレプリカ
二つのレプリカ
ネームノード
このマシンがダウンしたら・・・
別の正常なマシンからレプリカが再実⾏される
A1B1
A1
B1
© 2013 IBM Corporation30
� HDFSは、OS上に構築する仮想ファイルシステム。つまり、アプリケーションと同じレイヤー
� Hadoopで処理をしたいデータは、HDFSへコピーする必要がある。– HDFSがPOSIX準拠ではないため。
Linux OS / Linux File System
HDFS
ハードウェア・レベル
HadoopAPL
APL
APL
わかりやすく、HDFSの概念図〜Hadoop専⽤ファイル・システム〜
© 2013 IBM Corporation31
よくあるケース)バッチ処理にかかる総コスト〜DBからデータをHadoopに移動させるケース〜
� Hadoop処理にかかるコスト = { A(DBからのデータ移動)+B(HDFSへのコピー)+C{分散コスト+処理コスト+集約コスト}+D(結果書き戻しコスト)+E(DBへのデータ移動) }→これが、現状処理よりも時間短縮になれば、Hadoop処理の効果あり。
Linux OS / Linux File System
HDFS(非POSIX準拠)
ハードウェア・レベル
分散Hadoop処理APL APL
BAD
E
C
エキスポート インポート
© 2013 IBM Corporation32
HDFSに向かない処理
� ×低レイテンシのデータアクセス– スループットに最適化
� ×⼤量の小さなファイル– 最⼤ファイル数はマスターノードのメモリ容量に制限される
※計算すればよい。※⼤量の小さなファイルを1つのファイルとして扱う手段が⽤意されている。
� ×複数の同時書込や任意ファイルの修正– 書込は常に新規か追記のみ– 任意位置からの書込不可(将来は不明)• 通常のファイルシステムはseekできますが、HDFSは現在できません• POSIXで規定されたファイルアクセスのAPIに足りないものがあります• Linux上でマウントできません
© 2013 IBM Corporation33
参考:コマンドラインインターフェース
� HDFSはコマンドで操作可能– 例:hadoop fs –ls / ルートディレクトリーのリストを表⽰– hadoop namenode –format ファイルシステムをフォーマット– hadoop fs –mkdir /user/hadoop ディレクトリーの作成– hadoop fs –copyFromLocal huge.log /user/hadoop コピー
� ファイルシステムの指定にURIスキームを利⽤可能– file://localfile/– hdfs://hadoopdfs/– ftp://pub/rhce/rpm/
� POSIX相当のファイル操作APIがJavaライブラリーにある– ただし、⼀部のAPIが欠けている
© 2013 IBM Corporation34
参考:Webインターフェース : ポートはデフォルトでは50030 と 50070
© 2013 IBM Corporation35
HDFS まとめ
� HDFS : Hadoop Distributed File System� Javaで書かれた分散ファイルシステム� マスタースレーブ形式でネームノードとデータノードに分かれる
� スループットに最適化 (レイテンシは良くない)
� ネームノードはファイルシステム全体のメタデータを管理する� 全てのデータはデフォルトで3コピー取られる(データはもともとの4倍量)� 冗⻑性に優れデータノードの⼀部に障害が発生しても全体に影響が出ない� ただしネームノードはSPOFとなるので冗⻑化を必要する(仕組みがある)
© 2013 IBM Corporation36
MapReduceとは何か
� Map処理とReduce処理–関数型言語の分散処理への応⽤で、アプリケーションフレームワーク
–演算パラダイム、つまり枠組み•工夫であり、制約でもある※ここがYARNでMapReduceの枠を超えられる
–ざっくりと言うと、以下の二つの関数で処理される•map (in_key, in_value) -> (inter_key, inter_value) list•reduce (inter_key, inter_value, list) -> (out_key,
out_value) list
36
© 2013 IBM Corporation
例)MapとReduceの処理フローの概念①mapでデータを操作し、②reduceでデータを集約する※mapもreduceもデータの全体を知る必要がない
この例:入⼒ファイルからdogという単語とcowという単語の出現回数数をMapReduceで数える例(よく言う、ワードカウント)
Unixだと
© 2013 IBM Corporation38
クラスター上でのMapReduceによる並⾏処理
mapとReduceの間にShuffleフェーズが存在し、全データはソートされる
HDFSにある巨⼤な
ファイル群
mapもreduceもプログラムが配信される
© 2013 IBM Corporation39
参考:Tips� HDFSは巨⼤なファイルをクラスター上に分散する� MapReduceはMap処理をデータの存在するノードに分散
– 巨⼤なデータの転送無しにデータ全体の処理が⾏われる– データが複数のノード上で多重I/Oが⾏なわれるので速い– 全体のパフォーマンス向上のためにはさらにMapの出⼒をできる限り減らす
ことが重要• MapからReduceへのデータ移動はネットワーク上の転送になるShuffleは
ソートを⾏う– 同じキーのデータは同じReducerに集まる→集約が⾏える
� Reduceも分散できるが、デフォルトでは分散しない– 例えば全てのデータの合計値が欲しい場合にはreducerを1つにするしかない– Reducerを複数に指定すると出⼒ファイルも複数になる
• 例えば先の⽝と⽜のそれぞれの合計を数える場合、Reducerは2つにして良い
– 処理の特性に合わせてReducerの数を調節することが重要• デフォルトの1つでは⼤抵の場合遅いので注意
© 2013 IBM Corporation40
参考Tips:入⼒スプリット(後述)
� Mapへの入⼒はsplitと呼ばれる単位に切り分けられる� map関数はsplit中のレコードを繰返し処理する
� splitが小さければタスクの数が増え平⾏度が増す� 全体のロードバランスが良くなる
� splitを小さくし過ぎるとタスク生成のオーバーヘッドが⼤きくなる
� 通常、splitのサイズはブロックと同じ(例:128MB)にしておく
© 2013 IBM Corporation41
HadoopにおけるMapReduceの実装� 通常はJavaで記述
– 他の言語でも可能(Pig, Hive(HiveQL),JAQL,SQL, Hadoop Streaming)� JavaでHadoopのライブラリーを⽤いてプログラムを作成
– main関数を持つアプリケーション– jarで固める• manifestでmainクラスを指定
� hadoopコマンドにて実⾏– MRアプリは⼤量のjarファイルに依存するので簡便のためhadoopスクリ
プトを使う• hadoop –jar user_program.jar [mainクラス名] 入⼒パス 出⼒パス
– 入⼒パスはファイルかディレクトリー名。• ディレクトリー指定では中のファイル全てを処理します
– 出⼒パスは存在しないディレクトリー名。存在する場合エラー• reduceの出⼒は出⼒パスにreduceの数のファイルとして記録される
© 2013 IBM Corporation42
MapReduceの基本�MapReduce の基本:
Divide & Conquer–大きな問題を小さくして解決する
42
Map
Reduce
Map
Map
TaskTracker
TaskTracker
TaskTracker
TaskTracker
TaskTracker
JobTrackermainrun
Reduce
ジョブの実⾏依頼
タスクの実⾏分配
タスク/Job配布
データ移動
Spawn JVM
Spawn JVM
Spawn JVM
データがある場所でプログ
ラム実⾏
Spawn JVM
Spawn JVM
⇒プログラム
プログラム
© 2013 IBM Corporation43
MapReduce とは (1)� 広義にとらえるとMapReduceは、並列処理のための分散計算手法です。
– 考え⽅は非常に単純で、次の 2つのステップでデータを処理するというだけのものです。• ステップ#1:処理対象のデータをレコード毎に処理して、それぞれの結果をキー
とバリューの組で表現する。⇒ これがMap 処理• ステップ#2:同⼀のキーを持つ結果毎に処理結果を総合して、最終結果を取り出
す。⇒ これがReduce 処理–例えば、1000ページのドキュメントに含まれる IBM と Linux いう単語の出現回数を検索。
• 1 レコードは、1 ページ分のテキストで、処理結果のキーとバリューは、単語(IBM、もしくは、Linux)とその出現回数とすると下記の MapReduce 処理で結果を得ることができます。
ページ毎に処理を⾏う(Map)
ページ 1 (IBM, 3 回)(Linux, 1 回) 単語毎に結果を合計する
(Reduce)
合計(IBM, 102 回)(Linux, 293 回)・
・・
ページ 2 (IBM, 0 回)(Linux, 2 回)
ページ 1000 (IBM, 0 回)(Linux, 0 回)
© 2013 IBM Corporation44
� MapReduce はデータ処理の⼿続きを定めているだけであり、実際のMap 処理と Reduce 処理の内容は、解くべき問題に応じて、個々に考えて実装する必要があります。
� Google では、次のようなデータ処理を MapReduce モデルで実装していると言っています。– Web サイト内の⽂字列検索– URL 毎のアクセスカウント(Web サーバーのアクセスログの解析)– 特定の URL にリンクを貼っている Web サイトのリストの作成– Web サイト毎の単語の出現回数のリストの作成– 特定の単語が含まれる Web ページのリストの作成– ⼤規模なソート処理
� Google では、平均的に次のような規模の MapReduce 処理を実装していると言っています。– 使⽤ノード数 2,000– map 処理の分割数 200,000– reduce 処理の分割数 5,000
MapReduce とは (2)
© 2013 IBM Corporation45
45
<Key, Value> <Key, Value><Key, Value>
<Key, Value> <Key, Value><Key, Value>
Map Map Map
Reduce<Key, Value>
<Key, Value>
OutpurFormat
Split Split Split
input input input
InputFormat
シャッフル(ソート){内部処理}Driver
出⼒ファイル(HDFS)
<Key, Value> <Key, Value><Key, Value>ジョブ投入
処理の分散実⾏を制御
処理結果の集約を制御
分散を意識する必要はありません。
KeyとValueの
構造
Hadoopクラスタ
入⼒ファイル(HDFS)
MapReduceの内部構造
Reduceプログラム実装
プログラム実装
並列度が決まる(インプットをどのサイズで分割す
るのか?)
© 2013 IBM Corporation46
MapReduceの例(1):ワード・カウント編〜Map処理(アプリケーションとしてプログラム実装が必要)〜
46
IBM enables new solutions to gain insights from unprecedented information flows, which are exploding in volume, variety, velocity and vitality. These flows are so large they define a new category: big data. They offer tremendous potential for deep insights that provide greater efficiencies, value add services and opportunity for transformation.No other company offers the depth and breath of innovation and experience like IBM does in the big data space. From ultra-low latency information-in-motion analytics capabilities offered via InfoSphere Streams, analytics oriented data warehouse solutions, to our innovative InfoSphere BigInsights, IBM has an unique breadth of big data capabilities with a holistic approach. InfoSphere BigInsights is an analytics platform that delivers unique IBM Research, IBM Emerging Technologies and IBM Software capabilities on top of Apache Hadoopframework enabling new solutions on a business-ready platform. IBM has a holistic approach, expanding analytics to encompass big data, information streams, and structured data in Data Warehouses.
IBM 1enables 1new 1solutions 1to 1gain 1insights 1from 1unprecedented 1information 1flows 1which 1
Map出⼒の結果
テキストを単語に分解して、出現頻度を数
えます。
© 2013 IBM Corporation47
47
IBM 1IBM 1IBM 1IBM 1:
IBM 1enables 1enables 1enablesnew 1new 1new 1new 1
IBM 1,1,1,1,….1enables 1,1,1,1new 1,1,1solutions 1,1,1to 1,1,1,1,….,
1gain 1,1insights 1,1,1,…..1from 1,1,1,1…..1unprecedented 1information 1,1,1,1flows 1,1,1which 1,1,1,1…..1
MapReduceの例(1):ワード・カウント編〜ソート・シャッフル(内部処理)〜
次に、単語毎に整理して、出現頻度を数
えます。
© 2013 IBM Corporation48
48
IBM 1,1,1,1,….1enables 1,1,1,1new 1,1,1solutions 1,1,1to 1,1,1,1,….,
1gain 1,1insights 1,1,1,…..1from 1,1,1,1…..1unprecedented 1information 1,1,1,1flows 1,1,1which 1,1,1,1…..1
IBM 201enables 4new 3solutions 3to 3021gain 2insights 583from 1028unprecedented 1information 4flows 3which 128
MapReduceの例(1):ワード・カウント編〜Reduce(アプリケーションとしてプログラム実装が必要)〜
出現回数を単語毎に纏めて数えます。
最後に集計結果をまとめます。
© 2013 IBM Corporation49
MapReduceの仕組み/キー別スコアの合計を求める
<A,10>
<B,20>
<C,30>
<A,40>
<A,{10,40,20}>
<C,{30,20}>
<B,50>
<D,40>
Map
Map
Map
HDFS
HDFS
HDFS
Reduce
Reduce
シャッフルシャッフルシャッフルシャッフル(Shuffle)同じキーで再配置同じキーで再配置同じキーで再配置同じキーで再配置&集計集計集計集計
この例は,この例は,この例は,この例は,SELECT KEY,SUM(VAL) FROM T GROUP BY KEY
に相当する。に相当する。に相当する。に相当する。RDBMSならばどのように並列処理されるかならばどのように並列処理されるかならばどのように並列処理されるかならばどのように並列処理されるか
<D,10>
<A,20>
<D,20>
<B,20>
<B,10>
<C,20>
<D,10>
<B,{20,20,10}>
<D,{10,20,10}>
<A,70>
<C,50>
集計集計集計集計
集計集計集計集計
集計集計集計集計
集計集計集計集計
スコア一覧ファイルスコア一覧ファイルスコア一覧ファイルスコア一覧ファイル
A,Q1,10,Q2,50,Q3,20B,Q1,20,Q2,10,Q3,40
・・・・・・・・・・・・・・・・・・・・
スコア一覧ファイルスコア一覧ファイルスコア一覧ファイルスコア一覧ファイル
A,Q1,10,Q2,50,Q3,20B,Q1,20,Q2,10,Q3,40
・・・・・・・・・・・・・・・・
())))
ファイルはファイルはファイルはファイルはHDFSににににブロックサイズブロックサイズブロックサイズブロックサイズ単位単位単位単位
にににに分割されて各ノー分割されて各ノー分割されて各ノー分割されて各ノー
ドに配置されるドに配置されるドに配置されるドに配置される
<A[Key],70[VAL]>
© 2013 IBM Corporation50
RDBMS(DPF)/区分キーの設計に依存する
選択
選択
選択
区分
区分
区分
30C40A
2010VAL
BAKEY
40D50C50B70ASUMKEY
20C10B
10
20VAL
D
BKEY
202010VAL
DADKEY
集計集
計
集
計
集
計
シャッフルがないのシャッフルがないのシャッフルがないのシャッフルがないの
で,誰か(コーディで,誰か(コーディで,誰か(コーディで,誰か(コーディ
ネータノード)が最ネータノード)が最ネータノード)が最ネータノード)が最
後に集計を行わな後に集計を行わな後に集計を行わな後に集計を行わな
ければならないければならないければならないければならない
SELECT KEY,SUM(VAL)
FROM T GROUP BY KEY
30C2050SUM
BAKEY
2030SUM
ADKEY
20C10
30SUM
D
BKEY
スコア一覧スコア一覧スコア一覧スコア一覧
あらかじめ区分あらかじめ区分あらかじめ区分あらかじめ区分
キーで分割キーで分割キーで分割キーで分割
偏ったまま偏ったまま偏ったまま偏ったまま
© 2013 IBM Corporation51
MapReduce/分布に偏り少なく並列処理に有利
<A,10><B,20><C,30><A,40>
<A,{10,40,20}><C,{30,20}>
<B,50><D,40>
Map
Map
Map
HDFS
HDFS
HDFS
Reduce
Reduce
シャッフル(Shuffle)同じキーで再配置&集計
SELECT KEY,SUM(VAL) FROM T GROUP BY KEY
<D,10><A,20><D,20>
<B,20><B,10><C,20><D,10>
<B,{20,20,10}><D,{10,20,10}>
<A,70><C,50>
集計
集計
集計
集計
出現回数に偏りがあっても・・・
リストの⻑さは偏ってもReduce後には均等に
© 2013 IBM Corporation52
ここまでのまとめ
� Hadoopは超巨⼤なファイルを効率よく処理するバッチフレームワーク、と位置づけられます。※常に進化していることも事実。YARNなど。
� HadoopはHDDの遅さに考慮して、データローカリティーを重視した考え⽅に基づきます。
� HadoopはHDFSという分散ファイルシステムを持ちます。� HadoopはMapReduceというパラダイム(プログラム実⾏フレーム
ワーク)を⽤いてアプリケーションを作成します。
© 2013 IBM Corporation53
Hadoop common� HDFSとMapReduceのことをHadoop commonと呼びます
– 注:厳密にはcommonにはHDFSもMapReduceも含まれないコアのユーティリティーのみを意味するはずですが、実際にはcommonとHDFS、MapReduceは同梱して配布されているためここではcommonに含まれるとします。
� Hadoop commonは巨⼤ファイルをバッチ処理することに特化したシステムです。– 巨⼤なファイルを扱うためのファイルシステムであるHDFS– HDFS上にて分散されたデータの存在するノードに、アプリを配布して処理する
MapReduce
� Hadoop commonは基本的にこの目的にしか使えません!
� Hadoopの限界を考えずにHadoopを使うと失敗します。– よくある失敗例
• Hadoopをオンライン処理に⽤いるレイテンシが高く、ジョブ配布コストがあるので1ジョブの終了には短かくても数十秒~30秒近くかかります。
• Hadoopを通常のネットワークファイルシステムとして常⽤する小さなファイルには向きません。更新できません。ファイル復旧、バックアップ手段等まだ足りません。
• Hadoopを仮想環境で利⽤するデータローカリティーを実現できず、スケールしません。(特別な対処、仕組みを用いていない限り。。。)
© 2013 IBM Corporation54
Hadoop commonの限界
� HDFSはOSにマウントできない– HDFSとローカルファイルシステムの間でデータのコピーが必要となる
� HDFSは巨⼤なデータにしか効率が良くない– 小さなデータを扱うのは苦手
� HDFSは更新できない� MapReduceを⽤いれば必ず巨⼤なファイル全体をアクセスしなければならない
– シーケンシャルファイル、Mapファイル等の⼀部例外は存在する� MapReduceはプログラム開発の難易度が高い
– 関数型言語の高階関数による技法が必要– セカンダリーソート等MapReduce向けのパターンの習熟(職人芸の領域!)
� MapReduceはオンライン処理には向かない– Hadoop税(MapReduceの⼀蓮の処理にかかるコスト)が高い
© 2013 IBM Corporation55
Hadoop commonに足りないもの
� HDFSと外部との効率的なデータ交換手段– HDFSはOSにマウントできないため、また追記しかできず更新ができないため、HDFS外部との巨
⼤データの効率的な交換⽅法が必要になります– 例: RDBMSのデータとHDFSとの間のデータの交換
⇒sqoopや連携ツールが用意されはじめました。
� MapReduceジョブの管理ソフトウェア– Hadoop上での処理は1度のMapReduceでは完了しない場合がほとんどです– 複数のMapReduceジョブを依存関係を考えながら連続して実⾏する管理ソフトウェアが別にあるほ
うが運⽤が楽になります。⇒AsakusaやPlatform Symphonyはこのあたりを効率化してます。
� HDFSに直接ログを取る手段– HDFSはOSにマウントできないので通常のアプリはHDFSに直接書き込むことができません– しかし⼤量のログをまとめてHDFSにコピーするのは時間がかかります– 何らかの⽅法でアプリをログをHDFSに連続して書き込む手段があると効率が良くなります
⇒IBMのGPFS-FPOや、HDFSの代替ファイルシステムも登場しています。
などなど
© 2013 IBM Corporation56
非構造化データ� 構造化されていないデータ� 自由フォーマットのテキスト等� テキストに繰り返し等の⼀定の構造があっても非構造化データと判断される場合
も多い → 例: Apacheのログとか
半構造化データ� 厳密な定義はないが、XMLやJSON等のある構造の中に非構造化データ� RDBに対し、半構造化データのデータストアはスキーマレスなDBと表現される
データ構造から考える向き不向き
Hadoop commonは原則ファイルシステムを⽤いるので非構造化データを扱うのに向く。構造化データを扱うにも⼀旦テキストファイルに落とす必要が出てくる。例: RDBMSのテーブルをCSVとしてエクスポートしHDFSにコピー
構造化データ� スキーマを⽤いてデータの要素の型が厳密に定義され、個々のデータが厳密に
等しい型に基づく
© 2013 IBM Corporation57
色々ありますが、Hadoopを活⽤する時に� Hadoop common、すなわちHDFSとMapReduceは
低レイヤーのプラットフォームと考える– 利⽤⽅法の自由度が高いので開発コストは高いが、当然、失敗もしやすい※運⽤上、commonの知識の重要性は従来と変わらない
� Hadoop単体でなく、上位レイヤーのソフトウェアの利⽤を最初に考慮する– 上位に相応しい物が無い場合に初めてcommon上で自主開発を⾏う
⇒これはかなりハードルが高い。BigInsightsはBig SQLやツールキットを用意しています。
� Hadoopは既にエコシステムの中心である– Apache Foundationには
Hadoopを利⽤するトッププロジェクトが数多くある
Common
Apache Hadoopエコシステム→
© 2013 IBM Corporation58
参考:Hadoop commonの限界を越える
Oozie、IBM Oozie拡張ジョブ管理システムがない
HBaseオンライン処理には向かない
Hive、Pig、Jaql, SQLプログラム開発が難しい
対処問題
HBase、Hive全てのデータにアクセスする必要があるMapReduce
GPFS-SNC、Gfarm、Ceph等OSにマウントできないHDFS
Mahoutなど高度なライブラリーが不足
Hive, Pig, Jaql, HBaseデータがファイル形式のみ
HBase更新できない
HBase少量のデータに向かない
© 2013 IBM Corporation59
HDFSはOSにマウントできないIBM : GPFS-FPO� IBM製の分散ファイルシステム� POSIX準拠、OSマウント可能、SPOFがない� HDFSをGPFS-SNCに取り替えることでHDFS使⽤に対し2倍の高速化を達成
– MapReduce Benchmarks on a 16-node cluster with 4 SATA disks per node comparing GPFS-SNC to HDFS
– http://www-03.ibm.com/press/us/en/pressrelease/33036.wss
� SuperComputing Challenge 2010で優勝
OSSの分散ファイルシステムの利⽤� Ceph、Gfram、GlusterFS等多数
� Linux上にて通常のファイルシステムとしてマウント可能� HDFSの代替に⽤いるプロジェクトが複数動いています
– ただし、データローカリティまで対応しているものはまだ少い
© 2013 IBM Corporation60
半構造化データを⽤いるために
Jaql(ジャックル)処理対象:構造・半構造データ
� IBMが開発� スクリプト言語でMapReduceより生産性が高い� 通常の開発言語と同じ記述⼒-手続き型の記述に適している� Jaql実⾏はMapReduceに変換されてHadoopクラスター上で実⾏される� ⼊出⼒にJSONが使える
– HDFS、GPFS-SNC上にJSONがシリアライズしたバイナリとして保存されるため効率が良い
© 2013 IBM Corporation61
構造化データを利⽤するために
Apache Hive http://hive.apache.org
スキーマ定義が必要(CREATE TABLE)
� Hadoop上にデータベース(制約有り)を構築する� スキーマを⽤いることが可能
� SQLライクな(SELECTなど)HiveQLクリプトを⽤いてデータにアクセスできる– MapReduceに変換されて実⾏される
� 更新はできない
� 通常の⾏指向のみでなく、列指向のテーブルを作成可能– ⾏指向アーキテクチャーはインタラクティブなトランザクションの多い OLTP 的な⽤途に向く– 列指向アーキテクチャーは少数の複雑なクエリを実⾏するデータウェアハウスのような OLAP 的な
⽤途に向く
� パーティション分割が可能で、データ全体にアクセスする必要が無い� 注: RDBMSの代替には成りません。
© 2013 IBM Corporation62
列指向データベース : HBase
HBase– http://hbase.apahce.org
� GoogleのBigTableの論⽂を元にHadoop上に実装した列指向データベース– KVSやNoSQLの代表例として挙げられる場合が多い– 列を⾏別に自由に追加できる。柔軟な設計と巨⼤な⾏データの作成が可能
� Hadoop上にて小さなデータの挿⼊や更新を可能に– HDFS上に世代別ファイルを作成することで⾒掛け上の更新を実現し
ている– "Strong Consistency": データの値がreadに対し一貫性を持つ
� ランダムライト、シーケンシャルリードが高速– シーケンシャルライトが苦⼿。書込時にキーがランダムに分散していることが望ましい
• BigTableと同じ⽅法により将来的には解決の⾒込
� データを⼤量に書き込んだ後、MapReduceで解析することが得意– ⼤量のデータを相手にリアルタイム性の高い処理の構築が可能
※既に、Facebook, LINEさんが使われています。
© 2013 IBM Corporation63
参考:ジョブ管理システム
� 全ての処理が1回のMapReduceで終了する訳ではない� 例えばグラフの探索は幅優先探索で⾏うため常にグラフ全体の構造と現在の位置を入⼒に
して同じMRを繰返すことになる
� 多段のMapReduceは多段のjobであり、多段の依存batchになる� 現状ではHadoopには標準のbatchスケジューラーは無く、シェルスクリプトを書かねば
ならない– 異常系の処理をここで書かなければならない
� しかし、多くのジョブ管理システムがOSSにて開発されている� メジャーな物として米Yahoo!が開発しているOozieがある
– http://yahoo.github.com/oozie/
� IBMではOozieに加え、付加価値機能を追加済み。
© 2013 IBM Corporation64
通常のアプリが直接HDFSに書き込めない
� アプリの出⼒やログをHDFSに集めるためのOSSがいくつかある
� Facebook Scribe: https://github.com/facebook/scribe� Cloudera Flume: https://github.com/cloudera/flume/wiki� rsyslog: http://www.rsyslog.com/doc/omhdfs.html
� またRDBMSのデータをHDFSとの間で送受信するためのOSSもある
�Sqoop– http://www.cloudera.com/downloads/sqoop/
© 2013 IBM Corporation65
機械学習ライブラリー : Mahout
� MahoutはMapReduceを⽤いて記述された機械学習⽤のライブラリー� マーケティング等に⽤いられる
– バスケット解析 (ビールとおむつが同じ客に良く売れる)– クラスタリング (データを自動で分類できます)– リコメンドエンジン (同じ製品を買ったお客様はこんな商品を買って
います)– 等
� 現在非常に注目されており、利⽤実績も増えている– 楽天、Yahoo!、等
� http://mahout.apache.org/
© 2013 IBM Corporation66
参考:MapReduce以外の演算パラダイムを利⽤する※もうすぐYARN (Hadoop v2)が。� Apache Hama
– http://incubator.apache.org/hama/– MapReduceでは難しい巨⼤な⾏列同士の演算をBSPにて実現する– HDFSとZooKeeperは利⽤している。HDFSは他の分散ファイルシステムに変
更可能
� Yahoo!からスピンアウトしたHadoopの開発者達は次世代のHadoopを開発中である
– MapReduce以外の演算パラダイムをHadoop上で実現することを可能とする予定
– http://developer.yahoo.com/blogs/hadoop/posts/2011/02/mapreduce-nextgen/
© 2013 IBM Corporation67
Hadoop を利⽤した(バッチ処理)事例� 基本的な考え⽅:Hadoopはサービスレベルがあまり高くない(クリティカルで
はない) 業務のバッチ処理の適⽤が向いています。⇒最近はここが⾦融系、中核の業務系にも用いられはじめています。
� 導入効果の例 (IBM事例で無いものを含みます)※必ずしも、この処理性能を保障するものでは、ありません。
企業種類 処理内容 データ量
短縮の度合い(適⽤前→適⽤後)
短縮度合い
クラスタ規模
Web広告企業 ・クリック情報集計・広告精度追跡 等
700 GB 5日間 → 1時間 1/120 9台
クレジットカード会社
・不正検知⽤モデル作成
36TB 4週間 → 13分 1/32000 70台
流通業 ・顧客別の購買履歴集計
20GB 15時間半 → 58分 1/16 28台
Web系サービス企業
・地図サービスログ集計
170GB 6時間 → 5分30秒 1/65 20台
© 2013 IBM Corporation68
Hadoop Cluster
� 1年間分の検索ログを処理7000時間 (MySQL)所要する処理を30時間(Hadoop)で。
Hadoop適⽤事例 – クックパッド・たべみる〜分析〜
分析の種類:� SI値� 地域別(SI値)� マッチ度� 組み合わせ
IBMの事例ではありません。
検索ログ
© 2013 IBM Corporation69
検索キーワード入⼒補助〜Yahoo! Japanの例〜 IBMの事例ではありません。
過去に入⼒された検索キーワードの組み合わせを事前にHadoopで分析し、対象のキーワードが入⼒されると、それに⼀番マッチする補助キーワードを補助入⼒候補として表⽰するためのインデックスを構築。
© 2013 IBM Corporation70
ようやく、BigInsights /Big SQLです。
© 2013 IBM Corporation71
エンタープライズHadoopでの新たな考慮点� Hadoop技術を、⼀般の企業内で利⽤する際に、Webサービスなどの利
⽤とは違った新たな考慮点が存在します。最初はスモールスタートだ
が、今後拡張できる基盤は?
ハードウェア構成も可⽤性は
必要?
既存の運⽤監視、ジョブ運⽤環境との連携?
データソースとの連携?
データのバックアップは?
分析システムとの連携?
他のベンダーはアプライアンスって言って
るけど?
Cognos BICognos InsightsSPSS/R/BigSQL
Sqoop/Flume/DataStage
GPFS-FPO
PureData System for Hadoop
HA / GPFS-FPO
統合管理UI / REST
簡単なクラスター追加・管理
© 2013 IBM Corporation72
従来は・・・ Master NodeSlave Node
Slave Node
NameNodeDataNode
DataNode
TaskTracker
TaskTracker
Job Tracker
Secondary NameNode
Slave Node
DataNode
TaskTracker
Slave Node
DataNode
TaskTrackerDevelopment Node
Eclipse
Flume
Zookeeper
HBase
エンドユーザー
管理者
開発者
Jaql Server
Oozie
Hive
実は、Hadoopはそれ程、簡単ではない!結構、複雑。
新しい分析、開発発注しないと・・・
サーバー、アプリ管理も色々あるな・・・
言語の使い分け、SQLも使えない・・・
© 2013 IBM Corporation73
BigInsightsは Master Node
Map/Reduce
Distributed File System
Slave Node
Slave Node
NameNodeDataNode
DataNode
TaskTracker
TaskTracker
Job Tracker
Secondary NameNode
Slave Node
DataNode
TaskTracker
Slave Node
DataNode
TaskTracker
Web Console
BigInsights Development Node
Eclipse BigInsights Plug-in
Flume
Zookeeper
HBase
Catalog
エンドユーザー
管理者
開発者
Jaql Server
Oozie
Hive
Hadoopにかかる負担を最小に!
Hadoopを知らなくても使
える!
今までのSQLの知識を活⽤
できる
同じコンソールからリソース管理もでき
る!
© 2013 IBM Corporation74
BigInsightsの3つのエディション:InfoSphere BigInsights Brings Hadoop to the Enterprise
①Basic Edition
③EnterpriseEdition
Breadth of capabilities
Ente
rpri
se c
lass
商⽤・非商⽤で無償
商⽤向け、およびテスト向け:サイズ課⾦
ApacheHadoop
④PureData for HadoopBigInsihgtsアプライアンス
②Quick StartEdition非商⽤目的で無償(サポートなし)
Pre-announced
© 2013 IBM Corporation75
� InfoSphere BigInsightsBigInsightsはHadoopを拡張する機能群とエンタープライズ向け連携機能群、そして活⽤を容易なツールを介して実装し、開発サイクルを短縮化できるソリューション・パッケージです。《非商⽤環境で無償、容量無制限のQuickStartエディションも登場》
Hadoop拡張レイヤー
・
・
・
・
・
・
Masterノード
SlaveノードCognos
BI*(バンドルバンドルバンドルバンドル)Hive(JDBC) / REST(http)
DataStage*(連携)
DB2*(連携)
R*(連携)
Streams*(バンドルバンドルバンドルバンドル)
Data Explorer*(バンドルバンドルバンドルバンドル)
MachineDataAnalytics*(アクセレレーターアクセレレーターアクセレレーターアクセレレーター)
SocialMediaAnalytics*(アクセレレーターアクセレレーターアクセレレーターアクセレレーター)
Nutch*(連携)Gnip
*(連携)
LZO/bzip2圧縮(分割可能)
PureData*(連携)
DBデータ取り出し・送り出し
データ探索の可視化
BigSheets
アプリ・リンク
ワークフロー
FLEXスケジューラースケジューラースケジューラースケジューラー
連携レイヤー
Guardium*(連携)
スケールアウト
BigSQLによるSQL互換のインターフェイス
HA on HDFS/GPFS-FPO
AdaptiveMR((((Symphony))))
(連携)
JAQL JAQLによるより高度なM/Rスクリプティング
Web管理コンソール
© 2013 IBM Corporation76
オンライン
BigInsights
� BigInsights(Hadoop)とDB2/Netezzaは連携可能� Hadoopの活⽤のポイントは、「バッチ処理の並列化(高速化)」、
「眠っている履歴データ(ログ)、非定型データの有効活⽤」
DB2
HDFS
DB2/JDBC Bridge
DB2
DataStage
Hadoop
DB2からHadoopへのJobをキックすることができる。(処理はUDF経由でJAQL呼び出し)
HadoopのデータとしてDB2を透過的に利⽤できる(UDF経由)
R Bridge
SPSS
統計解析ソフト
分析データのソースとしてHadoopを利⽤可能(になる予定)
JAQL
SQL
JAQL
Flume (サポート対象)高速データ移動、パラレル処理が可能なDataStage
BigInsightsは既存システムと連携可能
HadoopStreaming
RubyCなど
RJAVA
files
files
files
files
© 2013 IBM Corporation77
DB2とInfoSphere BigInsightsの連携
JaqlSubmitJaqlSubmit UDFUDF HDFSReadHDFSRead UDFUDF
UDFUDFSQLSQLDB2DB2Cubing servicesCubing services
JaqlJaql clientclient
JaqlJaql serverserverWeb log data on Web log data on HadoopHadoop HDFSHDFS
InfosphereInfosphere WarehouseWarehouse
InfosphereInfosphere BigInsightsBigInsights
HttpHttp (⼤量のデータを移動(⼤量のデータを移動させることには向かない)させることには向かない)
HttpHttp
Persistent data
例えば、過去10年分の
データを保管
例えば、直近2年分のオンライン・デー
タを保管①
②
③
④
⑤
⑥
© 2013 IBM Corporation78
お知らせ:クイックスタート・エディションは無償で利⽤可能� 非商用環境において、無期限・サイズ無制限で利⽤可能。
-提供形態:バイナリー版(インストーラー)⇒クラスタ環境構築可能VMイメージ (本日のデモで使います)
ここからダウンロード
ダウンロード:http://www.ibm.com/software/data/infosphere/biginsights/quick-start/index.html
© 2013 IBM Corporation79
IBM – BigInsightsコアエンジン
分析アクセレレーター
ユーザー・インターフェイス
ビジュアライゼーション 管理・コンソール
テキスト分析
アプリケーション・アクセレレーター
MapReduce +
ワークロード管理 セキュリティー
開発ツール
連携
データベース&DWH
Gurdium監査Optimデータマスキング・プライバ
シー
ETL-DataStage統計解析-SPSS
テキスト分析-ICA
インデックス
Apache™ Hadoop®
バンドル
Cognos BIBIエンジン
Streamsリアルタイム処理
Data Explorer検索エンジン
IBMは、コア部分に加えて付加価値機能、バンドル、連携モジュールをパッケージしています。
HadoopmapReduce
HadoopHDFS
© 2013 IBM Corporation80
BigInsightsに含まれるコンポーネント*(1 of 2):
機能 VersionBasic Edition
Enterprise Edition
統合インストーラー 含む 含むHadoopコア (ユーティリティー, HDFS, MapReduce) 1.1.1 含む 含むPig (言語 / クエリー言語) 0.10.0 含む 含むFlume (データ収集/集約) 1.3.0 含む 含むHive (DWH/クエリー) 0.9.0 含む 含む
Lucene (テキスト・サーチ) 3.3.0 含む 含むZookeeper (プロセス制御(コーディネイション)) 3.4.5 含む 含むAvro (データ・シリアライゼーション) 1.7.2 含む 含むHBase (高速データ読み書きストア) 0.94.3 含む 含むHCatalog (テーブル・ストレージ管理サービス) 0.4.0 含む 含むSqoop (RDBMSバルクデータ・トランスファー) 1.4.1 含む 含むOozie (ワークフロー/ジョブ・オーケストレーション) 3.2.0 含む 含むJaql (IBMアルマデン研究所が開発したクエリー・スクリプト言語) 含む 含む
オンライン・ドキュメント(マニュアル:InfoCenter) 含む 含むJAQLモジュールからのJDBCソースへのアクセス 含む 含むDB2連携 (ジョブのサブミット、データの読み込みなどの関数) 含む 含む
© 2013 IBM Corporation81
オープンソースのHadoopにはない機能Basic Edition
Enterprise Edition
Big SQL (標準的なSQLクエリー・サポート, JDBC/ODBCドライバ, DB2/Netezza/ Teradataなどからのデータのロード) なし 含む
JaqlからのPure Data for Analytics (Netezza), DB2 LUW w/ DPF連携R連携 (Jaqlモジュールから Rスクリプトの呼び出し) なし 含むLDAP/PAM/ファイル認証, Guardium, SPSS, Optim連携サポートなど なし 含むWEBコンソール なし 含む分析アクセレレーター (ソーシャルメディア、マシーンデータ解析) なし 含む
Platform Computing Symphonyエンハンス (GPFS-FPO, Adaptive MapReduce, 圧縮テキストファイル処理, flexible job スケジューラー, 高可⽤性など)
なし 含む
テキスト分析モジュール なし 含む
Eclipse開発ツール(テキスト解析の開発、Jaql,Hive,Java,Big SQLなど) なし 含むデータインポート・エキスポート、WEBデータ収集、機械学習などのモジュール なし 含むWebベースのアプリケーション・カタログ機能 なし 含むBigSheets: 表計算シートによる解析ツールBigIndex: Lucene拡張の分散インデックス・サーバ なし 含む
IBMによるサポート なし 含むStreams, Data Explorer, Cognos BI (限定ライセンス) なし 含むストレージサイズの制限 制限あり 制限なし
BigInsightsに含まれるコンポーネント*(2 of 2):
© 2013 IBM Corporation82
従来は・・・
�Apache Hadoop
Hadoop管理のためのUIは提供されるが、使い勝手はよくない。。。
© 2013 IBM Corporation83
Welcomeクラスタ状況
ファイル管理
アプリ状況Sheets
アプリケーション
ようこそ画面
BigInsightsは:
© 2013 IBM Corporation84
表シート形式のデータ探索
アプリケーション実⾏管理
スケジューリング管理
アプリケーション・デプロイ
ノード管理(追加削除)
サービス管理(プロセス)
クラスター管理
ファイル管理
セキュリティー管理
© 2013 IBM Corporation85
GUIからアプリ作成
© 2013 IBM Corporation86
作成したアプリケーションのリンク実⾏機能
作成したアプリの逐次処理
© 2013 IBM Corporation87
BigSheets – プログラミングなしでMapReduce。
コーディングをすることなく
データ探索、処理記述が可能
© 2013 IBM Corporation88
BigSheetsで⼀連の分析・処理操作を実⾏
画面上の操作を自動的にPig変換してMapReduce
実⾏
収集 抽出 探索・可視化 繰り返しデータのクローリング・統計データ、生
データなど
サンプルデータから分析が可能なフォーマットにクレンジン
グ・平準化
分析、アノテート、フィルタリング、
結果の可視化
トライアンドエラー⽅式で繰り
返し
まずは、サンプリングデータに
対して処理
© 2013 IBM Corporation89
分析ワークフローの定義も可能
1. データ収集、サンプリング 2. GUIツールから処
理ロジックを実装
3. ロジックのトライ&エラー、テスト、探索
4.アプリケーションとし登録して実⾏
5. 定期実⾏
© 2013 IBM Corporation90
分析の可視化も可能:⾒える化だけではなく、「⾒ながら」
分析をする前の仮説を⽴てる際に、データの傾向を捕らえることがトライ&エラーで可能
になります
© 2013 IBM Corporation91
チャートはカスタマイズ可能
マルチ・シリーズの
データ可視化も可能
© 2013 IBM Corporation92
IBM – BigInsightsコアエンジン
分析アクセレレーター
テキスト分析
アプリケーション・アクセレレーター
MapReduce +
ワークロード管理 セキュリティー
インデックス
Apache™ Hadoop®
通常のApache
HDFSとIBMが提供するGPFS-FPOファイル
システムの選択 Hadoop
mapReduceHadoopHDFS
エンジンとファイルシステムの選択
通常のApache
MapReduceエンジンと
IBMが提供するAdaptive MapReduceエンジンの
選択
エンタープライズ領域で求められる処理性能、可⽤性の要件に合わせたエンジンとファイルシステムを選択することができます。
© 2013 IBM Corporation93
Adaptive MapReduce(Platform Computing Symphony)
グリッド・サーバー
ブローカー
エンジン
Each engine polls broker~5 times per second (configurable)
Send work whenengine ready
クライアント
インプットデータのシリアライゼーション
ネットワーク転送(client to broker)
処理エンジンによってブローカーをポーリングする待ち時間
ネットワーク転送(broker to engine)
De-serializeInput data
結果処理
Serializeresult
ブローカーに結果をポストする時間
Time
…
BrokerCompute time
Symphonyのアドバンテージ:
Efficient C language routines use CDR (common data representation) and IOCP rather than slow, heavy-weight XML data encoding)Network transit time is reduced by avoiding text based HTTP protocol and encoding data in more compact CDR binary formatProcessing time for all Symphony services is reduced by using a native HPC C/C++ implementation for system services rather than JavaPlatform Symphony has a more efficient “push model”that avoids entirely the architectural problems with polling
BigInsightsが採用したPlatform SymphonyのMapReduceフレームワーク
インプットのシリアライゼーション
ネットワーク転送
SSM 処理時間 &ロギング時間
総処理時間ネットワーク転送(SSM to engine)
デシリアライゼーション
…
シリアライゼーション
ネットワーク転送(engine to SSM)
結果処理
待ち時間の最小化、シリアライゼーション、デシリアライゼーションの高速化、シャッフル処理の高速化、ネットワーク最適化などを実装
MapReduce処理の処理時間が短縮・高可⽤性を向上できる仕組みを提供
© 2013 IBM Corporation94
GPFS-FPOファイルシステム従来のHadoop ファイルシステム(HDFS)の代替となる付加価値ファイルシステム
分散ファイルシステム: GPFS-FPO
分散ファイルシステム: HDFS
Map/Reduce API
Hadoop FS APIs
Higher-level languages: Hive, BigSQL JAQL, Pig …
機能概要:-単一障害ポイントなし-ビルドインされたHA機能
-POSIX準拠-ACLサポート-ストレージプールのサポート-スナップショット・バックアップ
アプリケーション
アプリケーションからは
ファイルシステムの違いを意識する必要はありません。
© 2013 IBM Corporation95
IBM – BigInsightsコア・エンジン
分析アクセレレーター
ユーザー・インターフェイス
ビジュアライゼーション 管理・コンソール
テキスト分析
アプリケーション・アクセレレーター
Map Reduce +
ワークロード管理 セキュリティー
開発ツール
インデックス
Apache Hadoop
バンドル
Cognos BIBIエンジン
Streamsリアルタイム処理
Data Explorer検索エンジン
HadoopmapReduce
HadoopHDFS
連携
データベース&DWH
Gurdium監査Optimデータマスキング・プライバ
シー
ETL-DataStage統計解析-SPSS
テキスト分析-ICA
今までのSPSS(統計解析)で処理可能なデータ量、対象
を⼤幅に拡⼤
BI(ビジネス・インテリジェンス)からDBだけではなくHadoopに蓄積されているデータも処理
対象に
© 2013 IBM Corporation96
Cognos BI v10.2.1とBigInsights v2.1連携
CognosInsight
Application(Map-Reduce)
Storage(HBase, HDFS)
Hive BigSheets
CSV
InfoSphereBigInsights
Hivevia JDBC
Cognos BI server
Text AnalyticsREST API
探索 & 分析 レポート
SQL Interface
via JDBC
� 今までのBIで扱えるデータの範囲を拡⼤することが可能に。
� Hadoopで処理した結果をCSVファイルで保存し、その結果をBigSheetsで整形、処理、そして、CognosInsightでデータ取り込みを⾏う事が可能です。
Big SQLによってCognos BIサーバから様々な処理をプッシュダウンすることが可能になります
© 2013 IBM Corporation97
SPSS Analyticサーバー Hadoopプッシュバック
97
Big DataRequest
Stream File
Modeler Client Modeler Server
IBM SPSS Modeler
IBM SPSS Analytic ServerHadoop pushback
Hadoop Job
Analytics
IBM InfoSphere BigInsights& Other Hadoop Distributions
Relational Database
SQL / UDF
� SPSS Analytic Server の前提としてSPSS Modeler Serverが必要となります。� SPSS Modeler/Modeler Serverは V15 FP2以上が必要となります。
SPSS Modelerの分析処理をHadoop上で⾏うことができるようになります。
従来とおりのSPSSユーザー・インタフェースで⼤量データを取り扱えます。Hadoop内のHDFSファイル、Hcatalogによるテーブル定義は、SPSS Analytic Serverにデータソースとして登録するため、ユーザは物理的なファイルを意識する必要がありません、
© 2013 IBM Corporation98
SPSS Analyticサーバ HadoopプッシュバックAnalytic Server入⼒ノード
Analytic Server出⼒ノード
*1,*2 : 2013年5月現在
SPSS Modelerの使いやすさをそのまま利⽤でき、SPSS
Modelerが備えているデータ加⼯処理⽤ノードのほとんどの
機能を利⽤可能
スコアリングについては、ほとんどのモデリング手法でのスコアリングをHadoop上で利⽤可能-Hadoop上で可能なモデリング手法は、「Liner」、「Neural」、「CHAID」、「Quest」「C&R Tree」をサポートしています。(*1) SPSS Analytic Server からデータベースにアクセスすることも可能です。DB2 , Netezza , Oracle , SQL Server, Teradata をサポートしています。(*2)
© 2013 IBM Corporation99
BigInsightsコア・エンジン
分析アクセレレーター
ユーザー・インターフェイス
ビジュアライゼーション
管理・コンソール
テキスト分析
アプリケーション・アクセレレー
ター
Map Reduce +
ワークロード管理
セキュリティー
開発ツール
連携
データベースDWH
情報統制ガバナンス
ETL統計解析
インデックス
Apache Hadoop
バンドル
Cognos BIBIエンジン
Streamsリアルタイム処
理
Data Explorer検索エンジン
HadoopmapReduce
HadoopHDFS
ビルドした解析モジュール-アクセレレーターを利⽤することで利便性を向上し
ます。ポイント:単なる
Hadoop提供ではない
分析アクセレレーター
© 2013 IBM Corporation100
生の
ログ
・デ
ータ
とマ
シン
・デ
ータ
①ログの検索【インデックスの作成と検索】
②時系列に基づくシーケンス解析③特定原因の分析(カイ二乗検
定)
複数システムから収集する様々なログデータ
を平準化し、分析する
MDA
MDAアクセレレーターで実現する3つこと
© 2013 IBM Corporation101
①インデックス作成と検索
②パターン発⾒と頻度の分析
③原因の推定と有意検定
様々なRAWデータを取り込む際に正規化されたフォーマットに整形することが可能(アダプター)。フォーマット変換のカスタマイズは可能です。
MDA処理の流れ
データの統合と変換
© 2013 IBM Corporation102
取込が可能ログフォーマット(アダプター)� Apache Webaccess� Delimited Separated Values, もしくは CSVファイル� Data Power®� Generic (これが⼀般的なログフォーマット(正規表現による取込設定を⾏う)) � Hadoop Data Node � Hadoop Jobtracker� Hadoop Name Node � Hadoop Secondary Name Node � Hadoop Task Attempt � Hadoop Task Tracker � Syslog, もしくは システムログファイルなど� WebSphere® Application Server
© 2013 IBM Corporation103
①検索
Data Explorer (UI)
BigIndex(分散インデックス)
© 2013 IBM Corporation104
例:基本的なファセット検索画面(Data ExplorerのUI画面)
© 2013 IBM Corporation105
例:インデックス・アプリの実⾏画面
© 2013 IBM Corporation106
②時系列シーケンス化
平準化済み時系列データのシーケンス化
© 2013 IBM Corporation107
③ログの相関関係の調査
© 2013 IBM Corporation108
例:ログデータの時系列シーケンス表⽰
© 2013 IBM Corporation109
IBM – BigInsightsコア・エンジン
分析アクセレレーター
ユーザー・インターフェイス
ビジュアライゼーション 管理・コンソール
テキスト分析
アプリケーション・アクセレレーター
Map Reduce +
ワークロード管理 セキュリティー
開発ツール
連携
データベースDWH
情報統制ガバナンス
ETL統計解析
インデックス
Apache Hadoop
バンドル
Cognos BIBIエンジン
Streamsリアルタイム処理
Data Explorer検索エンジン
HadoopmapReduce
HadoopHDFS
今までのSQL知識を活⽤できるBig SQLを提供
© 2013 IBM Corporation110
� DWHと連携全てをDB/DWHに格納処理するのではなくHadoopでも分担処理
Hadoopは、Java/専⽤スクリプト言語で記述・実装する必要があり簡単ではないと思われています。
� SQLをサポートすることにより、今までの知識を活⽤することが目的。
なぜSQLクエリがHadoopに必要なのか?
110
プリプロセス型 アーカイブ型 探索・分析型
リアルタイム
バッチランディング
フィルタリングアーカイブ
探索分析
データウェアハウス
統合的に格納
データウェアハウス
データウェアハウス
保存
© 2013 IBM Corporation111
アプリケーション
BigSQL: SQLクエリーによるHadoopへのアクセス
BigSQLエンジンBigInsights
Data Sources
SQL
JDBC / ODBC Server
JDBC / ODBC Driver
� BigInsihgtsへNative SQLアクセス–ANSI SQL 92+、標準的なシンタックスサポート(joins, データ型など …)
� JDBC/ODBCドライバー– プリペア⽂/ キャンセルのサポート、– データベース・メタデータAPI、SSLのサポート
� 最適化実⾏の仕組み–MapReduceによる並⾏処理への変換–★インメモリーによる直接アクセス(low-latency queries向け・
シングルモード)
� 様々なデータストアのサポート– HBase (including secondary indexes)– CSV, Delimited files, Sequence files– JSON– Hive tables
Hive HBase CSV
© 2013 IBM Corporation112
BigInsightsからのSQLの呼び出し⽅法は?
� コマンドライン (JSqsh shell) � Webインターフェイス (BigInsights webコンソール) � Eclipse (BigInsights プラグイン) � ODBC/JDBC ( 3rdパーティのSQLツール含む)
© 2013 IBM Corporation113
Squirrel SQL クライアントからのSQL実⾏
© 2013 IBM Corporation114
Microsoft ExcelとBig SQLの連携(via ODBC)
© 2013 IBM Corporation
© 2013 IBM Corporation115
SQLサポートの概要(クエリ編):� Projection SELECT col1, col2 FROM t1
� RestrictionSELECT * FROM t1 WHERE col1 > 5
� Union SELECT EMPNO FROM EMPLOYEE WHERE WORKDEPT LIKE 'E%' UNION SELECT EMPNO FROM ACTIVITIES WHERE PROJNO IN('MA2100',
'MA2110', 'MA2112')
� Difference (EXCEPT)(SELECT * FROM T1) EXCEPT ALL (SELECT * FROM T2)
Intersection、Joins、Subqueries 、Built-in functionsなどなど。
© 2013 IBM Corporation116
SQL サポート – Join編� ⼀般的なJOIN⽅法とANSI joinシンタックスをサポート
� 例えば、HiveはANSI joinシンタックスはサポート
select ...from tpch.orders,
tpch.lineitemwhere o_orderkey =
l_orderkey
select ...from tpch.orders join
tpch.lineitemon o_orderkey =
l_orderkey
select ...from tpch.orders,
tpch.lineitemwhere o_orderkey =
l_orderkey
select ...from tpch.orders join
tpch.lineitemon o_orderkey =
l_orderkey
116
© 2013 IBM Corporation117
SQL サポート – Subqueries(サブクエリ)編
� Big SQLはサブクエリ(副参照)もサポート:
select c1, (select
count(*) from t2)from t1...
select c1from t1where c2 > (select ...)
© 2013 IBM Corporation118
SQLサポート – 関数編(⼀部抜粋) � 今までのSQLで使われている関数もサポート
– Numeric
– Trigonometric
– 日付関連の関数
– ⽂字列関数
– Aggregates関数などなど.
abs ceil floor ln log10mod power sqrt sign width_bucket
cos sin tan acos asinatan cosh sinh tanh
_add_days _add_months _add_years localtimestamp _age_day_of_week _day_of_year _week_of_year _days_between _months_between_years_between _ymdint_between _first_of_month _last_of_month extract
char_length bit_length octet_length upper lowersubstring position index translate trimjson_get_object
© 2013 IBM Corporation119
カタログ・テーブルのサポート (Hcatalog編)[localhost][foo] 1> select * from select * from select * from select * from syscat.tablessyscat.tablessyscat.tablessyscat.tables where where where where
tablenametablenametablenametablename='users';='users';='users';='users';
+------------+-----------+
| schemaname | tablename |
+------------+-----------+
| default | users |
+------------+-----------+
1 row in results(first row: 0.14s; total: 0.15s)
[localhost][foo] 1> select * from select * from select * from select * from syscat.columnssyscat.columnssyscat.columnssyscat.columns where where where where
tablenametablenametablenametablename='users';='users';='users';='users';
+------------+-----------+-----------+--------+-----------+-------+
| schemaname | tablename | name | type | precision | scale |
+------------+-----------+-----------+--------+-----------+-------+
| default | users | id | INT | 10 | 0 |
| default | users | office_id | INT | 10 | 0 |
| default | users | name | STRING | 0 | 0 |
| default | users | children | ARRAY | 0 | 0 |
+------------+-----------+-----------+--------+-----------+-------+
4 rows in results(first row: 0.19s; total: 0.21s)
Other BigInsights catalog tables track index and schema information
© 2013 IBM Corporation120
ありがとうございました。
IBM BigInsights