© 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 = “, “)

[db tech showcase Tokyo 2015] B34:データの仮想化を具体化するIBMのロジカルデータウェアハウス by 日本アイ・ビー・エム株式会社 一志達也

  • 1.
    © 2015 IBMCorporation データの仮想化を具体化する IBMのロジカルデータウェアハウス
  • 2.
    © 2015 IBMCorporation2 いまさら聞けない?!Hadoopとは。 ○○という単語 の出現回数を調 べたいな・・・ プログラムを書 けば、なんだっ てできるさ! だってコン ピュータだもの パソコン1台では 荷が重いよ。容 量も足りないよ。 ファイルを複数のコン ピュータに分散して、処 理も各自で行ったものを 後で集計すればいい! ついでに、障害にも強く して、プログラムを作り やすいようにライブラリ も整えよう!
  • 3.
    © 2015 IBMCorporation3  Hadoopとは、複数のコンピュータで構成された分散型のファイルシステム(HDFS)にファ イルを格納し、それに対してプログラムを分散実行する環境です  プログラム(基本はJava)さえ書けば、どんな処理でも実行できます  処理はシステムを構成する複数のコンピュータで分散して実行(Map)されます。実行結果 は親玉コンピュータで集計(Reduce)します  分散処理の実行や集計、プログラム作成を楽にするライブラリは、Hadoopに組み込まれてい ます  それどころか、データベースっぽく使える機能(HiveやHbase)や、データをかき集める機 能(Scoop)などを組み合わせれば、相当便利に使えます  ファイルは自動的に3つのコピーを異なるコンピュータに配置するなど、耐障害性についても よく考えられています  安価なx86サーバーを大量に並べれば、処理能力も格納容量もリニアに増やせるので、コスト が安いく拡張しやすいこともメリットです いまさら聞けない?!Hadoopとは。
  • 4.
    © 2015 IBMCorporation4 Hadoop(主にMapReduce)の問題点 • 深いJavaの知識とスキルが必要 • 分析のための機能がほとんど備わっていない 使い方が難しい • In-Memoryで処理を行うためのフレームワークがない • 処理のステップ毎にファイルへの書き出しが必要 メモリを活用した性能向上が不可能 • インタラクティブな処理は実行できない(バッチ処理にしか向いていない) ワークフローの柔軟性がない • データの更新ができない/できるとしても簡単じゃない • ANSI標準のSQLが通らない • 絶望的に遅い データベース的に使うには無理がある
  • 5.
    © 2015 IBMCorporation5 解決策1:Sparkを使う • APIを使って簡単に実装 • Python, Scala, Javaなど幅広い言語への対応 使い方が簡単 • 処理のステップ毎にファイルを作らないから高速 In-Memoryで処理 • インタラクティブに処理を実行可能 • バッチ処理ももちろん可能 柔軟なワークフロー
  • 6.
    © 2015 IBMCorporation6 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
  • 7.
    © 2015 IBMCorporation7 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/
  • 8.
    © 2015 IBMCorporation8 解決策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
  • 9.
    © 2015 IBMCorporation9 IBM Big SQLはTPC-DSのすべてのSQLを実行可能  ImpalaやHiveでは、多くのクエ リーで書き換えを必要とし、いく つかは大幅な書き換えが必要で した。  中には、製品の制約から、書き 換えても動作させることができな かったり、長時間実行しても応答 がないクエリーもありました。
  • 10.
    © 2015 IBMCorporation10 解決策3:in-Hadoop Analyticsへの対応(BigR) R言語をHadoopに格納されたデータに対して実行したい けれど・・・ R言語で表現されたアルゴリズムをMapReduce処理に置 き換える(複数ノードでの並列実行処理に書き換える) 手段が必要 メモリを活用するなど、処理の最適化をしないと、実行 速度が上がらなくて使い物にならない  R言語から機械学習のアルゴリズムをHadoopクラスタ上で並列実行  メモリを活用して高速に動作
  • 11.
    © 2015 IBMCorporation11 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
  • 12.
    © 2015 IBMCorporation12 「Hadoopだけ」より「Hadoopと一緒に」の方が幸せになれると思います IBMのロジカル・データウェアハウス
  • 13.
    © 2015 IBMCorporation13 データベースは、「現在が正確にわかる」から、「将来を予測する」へ クラウド 素早いデプロイ 管理不要 常に最新の機能が実装 分析対応 In-DB analytics 複数のデータソースを統合 Hadoop NoSQL 用途特化型の高性能 列指向 In-Memory 高可用性と拡張性 クラスタ TCOの削減 アプライアンス 自働管理 基本的なアーキテクチャ 分離レベル 読み取り一貫性 基本的な機能 バックアップ チューニング 高性能 TPC-C パーティショニング マテリアライズド・ビュー
  • 14.
    © 2015 IBMCorporation14 一般的な予測分析の実行環境と問題点  予測分析にかかる時間=データ転送+分析時間  分析に必要となるすべてのデータを、データベースから実行環境へ転送する ため、対象となるデータ量に応じて膨大な時間が必要  分析処理にかかる時間は実行環境の性能に依存
  • 15.
    © 2015 IBMCorporation15 “予測”ができるデータベースによる解決 • 予測分析にかかる時間=分析時間+結果の転送時間 • 分析に必要となるすべてのデータを保持している、データベース上で分析 を実行するため、その処理結果のみを転送するだけ • 分析処理にかかる時間はデータベースの処理性能に強く依存
  • 16.
    © 2015 IBMCorporation16 データの形式や場所に縛られないアプローチ クラウド上の データベース OLTP用の データベース DWH用の データベース HadoopNoSQL これらすべてで同じように分析を引き受けられる? 複数の場所にまたがるデータを横断的に分析する方法は? Federation / Fluid Query
  • 17.
    © 2015 IBMCorporation17 場所に縛られないデータへのアプローチには共通技術基盤が必要 オンプレミスかクラウドか (クラウド・ファースト) オンプレミスでもプライベート・クラウド でもパブリック・クラウドでも、データが 存在する意識せずに同じ機能を活用 (最も適した場所に配置されたデータを、 あらゆる場所から活用できる環境作り)
  • 18.
    © 2015 IBMCorporation18 資源としてのデータ活用
  • 19.
    © 2015 IBMCorporation19 プロセス中心から洞察中心へのシフト Systems of Engageme nt Systems of Record Systems of Insight すべての意思決定に作用 すべての意思疎通を刺激 すべてのプロセスの動力 顧客の声 個々への理解 製品の開発/改善 満たされていないニーズの把握 振舞駆動型の サービス 文脈に基づいた対応 人材開発 適材適所の人材配置 リアルタイムに対応 要求の変化を把握 Twitterから得た洞察によって、憶測に頼らない経営判断を可能にする
  • 20.
    © 2015 IBMCorporation20 “声”をアクションに結びつけるパートナーシップ 世界中で行われてい る会話を把握するこ とのできる稀有の存 在 アドバンスド・ アナリティクス 豊富な業界知 識と経験 ビッグデータの取り込 みとマッチング クラウドからオンプレ ミスまで幅広く対応 両者のパートナー シップ 新しい価値の創造 • IBMは非構造化データのソーシャル分析に集中 • IBMの有するアドバンスド・アナリティクスの技術を ソーシャル・メディアに活用 • クラウド/オンプレミス/モバイルあるいは業務プロ セスとの融合など、柔軟なデリバリ手法を準備 価値につなげるまでの時間を短縮 • 企業で活用する価値のある洞察を導き出すための業界知 識と経験 • 無駄なく迅速にデータを解析するための技術
  • 21.
    © 2015 IBMCorporation21 本日のまとめ
  • 22.
    © 2015 IBMCorporation22 Hadoopの利点と欠点 高い拡張性 低いコスト 様々なデータ形式や処理形式に対応 扱いにくい データベース技術者にとっては足かせが多い できないこと(不便すぎること)も多い
  • 23.
    © 2015 IBMCorporation23 これからのデータウェアハウスに必要なもの データの置き場所に縛られない (移動や変換を必要としない) 予測ができる
  • 24.
    © 2015 IBMCorporation24 データウェアハウスによる将来の“予測” 蓄積されたデータから、「事実」を計算 するだけでなく、「予測」した結果を算 出するアルゴリズムを実行できるデー タウェアハウス
  • 25.
    © 2015 IBMCorporation25 あらゆる場所にあるデータを連携 データは1カ所にあるとは限らない データが発生した場所にとどめるのか 適切な処理と移動を行うのか 複数の場所に分散したデータを分析 するにはどうするのがいいのか
  • 26.
    © 2015 IBMCorporation26 SoRとSoEを、SoI(System of Insight)を通じて融合することにフォーカスし ている唯一のベンダー
  • 28.
    © 2015 IBMCorporation28 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 = “, “)