Skip to main content
© 2015 IBM Corporation
データの仮想化を具体化する
IBMのロジカルデータウェアハウス
© 2015 IBM Corporation2
いまさら聞けない?!Hadoopとは。
○○という単語
の出現回数を調
べたいな・・・
プログラムを書
けば、なんだっ
てできるさ!
だってコン
ピュータだもの
パソコン1台では
荷が重いよ。容
量も足りないよ。
ファイルを複数のコン
ピュータに分散して、処
理も各自で行ったものを
後で集計すればいい!
ついでに、障害にも強く
して、プログラムを作り
やすいようにライブラリ
も整えよう!
© 2015 IBM Corporation3
 Hadoopとは、複数のコンピュータで構成された分散型のファイルシステム(HDFS)にファ
イルを格納し、それに対してプログラムを分散実行する環境です
 プログラム(基本はJava)さえ書けば、どんな処理でも実行できます
 処理はシステムを構成する複数のコンピュータで分散して実行(Map)されます。実行結果
は親玉コンピュータで集計(Reduce)します
 分散処理の実行や集計、プログラム作成を楽にするライブラリは、Hadoopに組み込まれてい
ます
 それどころか、データベースっぽく使える機能(HiveやHbase)や、データをかき集める機
能(Scoop)などを組み合わせれば、相当便利に使えます
 ファイルは自動的に3つのコピーを異なるコンピュータに配置するなど、耐障害性についても
よく考えられています
 安価なx86サーバーを大量に並べれば、処理能力も格納容量もリニアに増やせるので、コスト
が安いく拡張しやすいこともメリットです
いまさら聞けない?!Hadoopとは。
© 2015 IBM Corporation4
Hadoop(主にMapReduce)の問題点
• 深いJavaの知識とスキルが必要
• 分析のための機能がほとんど備わっていない
使い方が難しい
• In-Memoryで処理を行うためのフレームワークがない
• 処理のステップ毎にファイルへの書き出しが必要
メモリを活用した性能向上が不可能
• インタラクティブな処理は実行できない(バッチ処理にしか向いていない)
ワークフローの柔軟性がない
• データの更新ができない/できるとしても簡単じゃない
• ANSI標準のSQLが通らない
• 絶望的に遅い
データベース的に使うには無理がある
© 2015 IBM Corporation5
解決策1:Sparkを使う
• APIを使って簡単に実装
• Python, Scala, Javaなど幅広い言語への対応
使い方が簡単
• 処理のステップ毎にファイルを作らないから高速
In-Memoryで処理
• インタラクティブに処理を実行可能
• バッチ処理ももちろん可能
柔軟なワークフロー
© 2015 IBM Corporation6
Spark on HadoopだけじゃないのがSpark
Apache Spark
Spark SQL
Spark
Streaming
GraphX MLlib SparkR
Apache Hadoop-HDFS
Apache Hadoop-YARN
リソース管
理
ストレージ
管理
コンピュー
ティング層
Slave node 1 Slave node 2 Slave node n…
Single node, with local
storage
© 2015 IBM Corporation7
IBM Open Platform with Apache HadoopでSpark
 100%オープンソース
 最新のソースを配布: “days, not months”
 Sparkも入っています
 無償で本番環境に適用可能
 IBM analyticsやデータ分析技術と、Apache Hadoopを分離
 サポートサービスを提供
Apache Open Source Components
HDFS
YARN
MapReduce
Ambari HBase
Spark
Flume
Hive Pig
Sqoop
HCatalog
Solr/Lucene
IBM Open Platform with Apache Hadoop
http://www.ibm.com/analytics/us/en/technology/spark/
© 2015 IBM Corporation8
解決策2:ANSI標準のSQLが使えるモジュールを使う(BigSQL)
SQLベースの
アプリケーション
Big SQL Engine
Data Storage
IBM data server
client
SQL MPP Run-
time
DFS
複雑なSQLにも標準技術でしっかり対応
–SELECT: joins, unions, aggregates, 副問い合わせ . . .
–GRANT/REVOKE, INSERT … INTO
–ストアド・プログラムやユーザー定義関数に対応
–標準的な(DB2用の)JDBC/ODBCドライバで接続
高速に実行
–Javaで記述されたMapReduce層を、C++で書き換え
–デーモンとして常時待機(起動にかかる遅延がない)
–可能ならばメモリ上で処理し、ディスクへのアクセスを
抑える (アグリゲーションやソートなどの処理において
有効)
–DB2出自のコストベースのオプティマイザ(140以上の
クエリ・リライト・ルールを実装)
複数のストレージ形式をサポート
–Text (delimited), Sequence, RCFile, ORC, Avro,
Parquet
–Data persisted in DFS, Hive, HBase
–IBM独自の形式を利用する必要なし
他のRDBMSとの間で、データのロードやクエリーを
統合して実行可能
BigInsights
© 2015 IBM Corporation9
IBM Big SQLはTPC-DSのすべてのSQLを実行可能
 ImpalaやHiveでは、多くのクエ
リーで書き換えを必要とし、いく
つかは大幅な書き換えが必要で
した。
 中には、製品の制約から、書き
換えても動作させることができな
かったり、長時間実行しても応答
がないクエリーもありました。
© 2015 IBM Corporation10
解決策3:in-Hadoop Analyticsへの対応(BigR)
R言語をHadoopに格納されたデータに対して実行したい
けれど・・・
R言語で表現されたアルゴリズムをMapReduce処理に置
き換える(複数ノードでの並列実行処理に書き換える)
手段が必要
メモリを活用するなど、処理の最適化をしないと、実行
速度が上がらなくて使い物にならない
 R言語から機械学習のアルゴリズムをHadoopクラスタ上で並列実行
 メモリを活用して高速に動作
© 2015 IBM Corporation11
Text Analytics
POSIX Distributed File System
Multi-workload, Multi-tenant
scheduling
IBM BigInsights
Enterprise Management
Machine Learning
with Big R
Big R
IBM Open Platform with Apache Hadoop
IBM BigInsights
Data Scientist
IBM BigInsights
Analyst
Big SQL
BigSheets
Big SQL
BigSheets
for Apache Hadoop
IBM BigInsights for Apache Hadoop
© 2015 IBM Corporation12
「Hadoopだけ」より「Hadoopと一緒に」の方が幸せになれると思います
IBMのロジカル・データウェアハウス
© 2015 IBM Corporation13
データベースは、「現在が正確にわかる」から、「将来を予測する」へ
クラウド
素早いデプロイ
管理不要
常に最新の機能が実装
分析対応
In-DB analytics
複数のデータソースを統合
Hadoop
NoSQL
用途特化型の高性能
列指向
In-Memory
高可用性と拡張性
クラスタ
TCOの削減
アプライアンス
自働管理
基本的なアーキテクチャ
分離レベル
読み取り一貫性
基本的な機能
バックアップ
チューニング
高性能
TPC-C
パーティショニング
マテリアライズド・ビュー
© 2015 IBM Corporation14
一般的な予測分析の実行環境と問題点
 予測分析にかかる時間=データ転送+分析時間
 分析に必要となるすべてのデータを、データベースから実行環境へ転送する
ため、対象となるデータ量に応じて膨大な時間が必要
 分析処理にかかる時間は実行環境の性能に依存
© 2015 IBM Corporation15
“予測”ができるデータベースによる解決
• 予測分析にかかる時間=分析時間+結果の転送時間
• 分析に必要となるすべてのデータを保持している、データベース上で分析
を実行するため、その処理結果のみを転送するだけ
• 分析処理にかかる時間はデータベースの処理性能に強く依存
© 2015 IBM Corporation16
データの形式や場所に縛られないアプローチ
クラウド上の
データベース
OLTP用の
データベース
DWH用の
データベース HadoopNoSQL
これらすべてで同じように分析を引き受けられる?
複数の場所にまたがるデータを横断的に分析する方法は?
Federation / Fluid Query
© 2015 IBM Corporation17
場所に縛られないデータへのアプローチには共通技術基盤が必要
オンプレミスかクラウドか
(クラウド・ファースト)
オンプレミスでもプライベート・クラウド
でもパブリック・クラウドでも、データが
存在する意識せずに同じ機能を活用
(最も適した場所に配置されたデータを、
あらゆる場所から活用できる環境作り)
© 2015 IBM Corporation18
資源としてのデータ活用
© 2015 IBM Corporation19
プロセス中心から洞察中心へのシフト
Systems of
Engageme
nt
Systems of
Record
Systems of
Insight
すべての意思決定に作用
すべての意思疎通を刺激
すべてのプロセスの動力
顧客の声
個々への理解
製品の開発/改善
満たされていないニーズの把握
振舞駆動型の
サービス
文脈に基づいた対応
人材開発
適材適所の人材配置
リアルタイムに対応
要求の変化を把握
Twitterから得た洞察によって、憶測に頼らない経営判断を可能にする
© 2015 IBM Corporation20
“声”をアクションに結びつけるパートナーシップ
世界中で行われてい
る会話を把握するこ
とのできる稀有の存
在
アドバンスド・
アナリティクス
豊富な業界知
識と経験
ビッグデータの取り込
みとマッチング
クラウドからオンプレ
ミスまで幅広く対応
両者のパートナー
シップ
新しい価値の創造
• IBMは非構造化データのソーシャル分析に集中
• IBMの有するアドバンスド・アナリティクスの技術を
ソーシャル・メディアに活用
• クラウド/オンプレミス/モバイルあるいは業務プロ
セスとの融合など、柔軟なデリバリ手法を準備
価値につなげるまでの時間を短縮
• 企業で活用する価値のある洞察を導き出すための業界知
識と経験
• 無駄なく迅速にデータを解析するための技術
© 2015 IBM Corporation21
本日のまとめ
© 2015 IBM Corporation22
Hadoopの利点と欠点
高い拡張性
低いコスト
様々なデータ形式や処理形式に対応
扱いにくい
データベース技術者にとっては足かせが多い
できないこと(不便すぎること)も多い
© 2015 IBM Corporation23
これからのデータウェアハウスに必要なもの
データの置き場所に縛られない
(移動や変換を必要としない)
予測ができる
© 2015 IBM Corporation24
データウェアハウスによる将来の“予測”
蓄積されたデータから、「事実」を計算
するだけでなく、「予測」した結果を算
出するアルゴリズムを実行できるデー
タウェアハウス
© 2015 IBM Corporation25
あらゆる場所にあるデータを連携
データは1カ所にあるとは限らない
データが発生した場所にとどめるのか
適切な処理と移動を行うのか
複数の場所に分散したデータを分析
するにはどうするのがいいのか
© 2015 IBM Corporation26
SoRとSoEを、SoI(System of Insight)を通じて融合することにフォーカスし
ている唯一のベンダー
© 2015 IBM Corporation28
Sample Code – BigR
Code using Big R
library(bigr)
temperatureData <- bigr.frame(dataSource="DEL",
dataPath="/user/temperature.csv", header=TRUE)
coltypes(temperatureData)=ifelse(1:10 %in% c(3, 6),
"numeric", "character")
buildAvgTempFunc <- function(df) {
maxMin <- df[ , c(‘minTemp’, ‘maxTemp’)]
df$avgTempDay <- rowMeans(maxMin)
avgTempCity <- aggregate (df$avgTempDay,
by=list(city=df$city), FUN=mean)
return(data.frame(avgTempCity))
}
avgTemperature <- groupApply(temperatureData,
temperatureData$city, buildAvgTempFunc,
data.frame(city=“city", average_temperature=1.0))
bigr.persist(avgTemperature, dataSource="DEL",
dataPath="/user/output.csv", header=T, del=',')
 This code (using Big R) achieves the same as the original R code on the same dataset in the csv file in HDFS.
 Note that the function call buildAvgTempFunc has same R code snippet as in original R code.
 The groupApply function is specific to bigr package. Other similar useful functions are rowApply and tableApply
Original R Code
tempData <- read.table(“temperature.csv", header =
TRUE, sep=“,’)
coltypes(tempData) = ifelse(1:10 %in% c(3, 4), numeric,
character)
maxMin <- tempData[ , c(‘minTemp’, ‘maxTemp’)]
tempData$avgTempDay <- rowMeans(maxMin)
avgTempCity <- aggregate (tempData$avgTempDay,
by=list(city=tempData$city), FUN=mean)
write(avgTempCity, file = “output.csv", sep = “, “)