28
© 2015 IBM Corporation データの仮想化を具体化する IBMのロジカルデータウェアハウス

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

Embed Size (px)

Citation preview

© 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 SQLSpark

StreamingGraphX 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

複数のデータソースを統合HadoopNoSQL

用途特化型の高性能列指向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 ofEngageme

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