Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
HadoopとRDBMSを シームレスに連携させる Smart SQL Processing ビッグデータの管理・分析手法を革新する取り組み
8. July, 2014 日本オラクル株式会社 データベース事業統括 大橋雅人 ([email protected])
Hadoop Conference Japan 2014
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 2
Safe Harbor Statement
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。 オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。 Oracleは、米国オラクル・コーポレーション及びその子会社、関連会社の米国及びその他の国における登録商標または商標です。 他社名又は製品名は、それぞれ各社の商標である場合があります。
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Agenda
1
2
3
Hadoopを取り巻く環境
Smart SQL Processing
本日のまとめ
3
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Agenda
1
2
3
Hadoopを取り巻く環境
Smart SQL Processing
本日のまとめ
4
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
ビッグデータ顧客事例
5
ビッグデータの分析
• R&D、サプライチェーン、顧客と消費者
•統合されたデータサイエンス組織
ビジネスの変革
•スペインの大手銀行 、 1300万の顧客
•顧客に関するすべての関連情報を収集、統合
カスタマー・エクスペリエンスの改善
• 7500万の登録プレイヤー
•ゲームを改善するためにユーザーの利用形態を把握 BDA ODA
BDA Exadata
BDA Exadata CONSUMER GOODS
FINANCIAL SERVICES
GAMING
BDA(Hadoop) :Oracle Big Data Appliance Exadata(RDBMS) :Oracle Exadata Database Machine ODA(RDBMS) :Oracle Database Appliance
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
2つのシステムの強み
6
0
1
2
3
4
5
ツールの成熟度
高度な非機能要件
ACIDトランザク
ション
セキュリティ
データフォーマッ
トの多様性
データの密度
ETLのシンプルさ
データ格納の
コスト効率
データの格納速度
ビジネスとの
相互運用
Hadoop
RDBMS
• Hadoop とRDBMSは 補完関係にある
•補完関係であることを 活用する
•車輪の再発明は行わない
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
0
1
2
3
4
5
ツールの成熟度
高度な非機能要件
ACIDトランザク
ション
セキュリティ
データフォーマッ
トの多様性
データの密度
ETLのシンプルさ
データ格納の
コスト効率
データの格納速度
ビジネスとの
相互運用
Hadoop RDBMS Goal
2つのシステムの強みを組みあわせる
7
• どのように構築するか
• どのように利用するか
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Hadoopを活用する際の障壁 プラットフォームが問題なわけではない
•スキル –Hadoopを活用するツールやトレーニングの不足
•インテグレーション –Hadoopを既存のアーキテクチャに加えることの複雑さ
•セキュリティ –ガバナンスやルール遵守の明確な方法がない
8
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 9
どうすればもっと Hadoopの活用が進むのか
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 10
SQL
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 11
データマネジメントの標準言語「SQL」 Happy 40th Birthday SQL!
SELECT dept, sum(salary)
FROM emp, dept
WHERE dept.empid = emp.empid
GROUP BY dept
今も活躍 より速く、より多くの場所で利用されている
YEAR 1974 YEAR 2014
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Hadoop上でのSQL活用というトレンドは明確。だけど、、
12
Stinger
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
より高度な関数や機能活用のニーズへの対応
• Hive QL:基本的な関数には対応 –基本的な関数
• round, sqrt, floor, ceiling, concat, lower, upper, etc.
–集計関数 • count, sum, min, max, avg, variance, stddev, etc.
–ウィンドウ関数 • lag, lead, first, last, row_number, etc.
13
SQL • Hive QL:限定的な機能
–サブクエリー
– JOIN
–分析関数
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
next = lineNext.getQuantity();
}
if (!q.isEmpty() && (prev.isEmpty() || (eq(q, prev) && gt(q, next)))) {
state = "S";
return state;
}
if (gt(q, prev) && gt(q, next)) {
state = "T";
return state;
}
if (lt(q, prev) && lt(q, next)) {
state = "B";
return state;
}
if (!q.isEmpty() && (next.isEmpty() || (gt(q, prev) && eq(q, next)))) {
state = "E";
return state;
}
if (q.isEmpty() || eq(q, prev)) {
state = "F";
return state;
}
return state;
}
private boolean eq(String a, String b) {
if (a.isEmpty() || b.isEmpty()) {
return false;
}
return a.equals(b);
}
private boolean gt(String a, String b) {
if (a.isEmpty() || b.isEmpty()) {
return false;
}
return Double.parseDouble(a) > Double.parseDouble(b);
}
private boolean lt(String a, String b) {
if (a.isEmpty() || b.isEmpty()) {
return false;
}
return Double.parseDouble(a) < Double.parseDouble(b);
}
public String getState() {
return this.state;
}
}
BagFactory bagFactory = BagFactory.getInstance();
@Override
public Tuple exec(Tuple input) throws IOException {
long c = 0;
String line = "";
String pbkey = "";
V0Line nextLine;
V0Line thisLine;
V0Line processLine;
V0Line evalLine = null;
V0Line prevLine;
boolean noMoreValues = false;
String matchList = "";
ArrayList<V0Line> lineFifo = new ArrayList<V0Line>();
boolean finished = false;
DataBag output = bagFactory.newDefaultBag();
if (input == null) {
return null;
}
if (input.size() == 0) {
return null;
}
Object o = input.get(0);
if (o == null) {
return null;
}
//Object o = input.get(0);
if (!(o instanceof DataBag)) {
int errCode = 2114;
String msg = "Expected input to be DataBag, but"
Simplified, sophisticated, standards based syntax
SELECT first_x, last_z
FROM ticker MATCH_RECOGNIZE (
PARTITION BY name ORDER BY time
MEASURES FIRST(x.time) AS first_x,
LAST(z.time) AS last_z
ONE ROW PER MATCH
PATTERN (X+ Y+ W+ Z+)
DEFINE X AS (price < PREV(price)),
Y AS (price > PREV(price)),
W AS (price < PREV(price)),
Z AS (price > PREV(price) AND
z.time - FIRST(x.time) <= 7 ))
250行以上の Java UDF 12 行のOracle SQL
Oracle SQLなら、20倍もコードが少なくて済む
株式市場でのパターンを検出する:Double Bottom (W)
ニーズに対応するためには、コード作成が必要
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Hadoopのセキュリティ機能はまだまだ発展途上
15
SSN EMPID LAST FIRST SALARY
111-11-1111 275895 Smith John 125275
222-22-2222 335685 Jones Sally 250950
333-33-3333 558544 Stinson Chuckie 32000
まだまだ、、
列へのアクセス制限機能
行レベルのセキュリティ機能
詳細な監査機能
マスキングなどのリダクション機能
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Hadoopをもっともっと使いたい!でも、、
• もっと 、SQL 機能をフル活用して簡単にHadoopを活用できれば・・・
• もっと、RDBMSのデータとHadoopのデータを組み合わせて、データを移動することなく、アドホックにかつ高速に分析できれば・・・
• もっと、Hadoopにも高いセキュリティ機能があれば・・・
16
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
RDBMS Hadoop/NoSQL Ecosystem
Big Data Management System
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
実現へのChallenge
次のような要件を満たすシステムを創る
• SQL一つで全てのデータが使える – RDBMSと、Hadoop等全てのデータに対して、SQLの全機能を利用できる
– RDBMSと、Hadoop等全てのデータに単一のビューを提供する
– 既存アプリケーションコードに、変更の必要がない
– Hadoop やRDBMSのデータに変更や移動の必要性がない
• Hadoop上のデータに対しても、最良のパフォーマンスを提供する
• Hadoopのデータに高度なセキュリティを実装する
18
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Agenda
1
2
3
Hadoopを取り巻く環境
Smart SQL Processing
本日のまとめ
19
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Smart SQL Processing どうやって実現するのか? 実現のポイント
1. Oracle Databaseからのクエリーで、HDFSのデータにアクセス可能とする
2. Oracle Databaseのメタデータ管理を拡張することで、Oracle DatabaseからHDFS上のオブジェクトを把握可能とする
3. Oracle Exadata のSmart Scan同等機能をHadoopのノードに実装し、HDFSへのリクエスト処理を高速化する
4. HadoopのデータにもOracle Databaseのセキュリティ機能を適用する
20
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Smart SQL Processing 実現のポイント1,2 Hadoop 上のデータにOracle Databaseからアクセス
HDFS Data Node
HDFS Data Node
Local Process Local Process
Oracle Storage Server
Oracle Storage Server
Local Process Local Process
Oracle SQL
Big Data Appliance +
Hadoop
Exadata +
Oracle Database
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 22
Big Data Appliance +
Hadoop
HDFS Data Node
Exadata +
Oracle Database
Oracle Catalog
External Table
create table customer_address
( ca_customer_id number(10,0)
, ca_street_number char(10)
, ca_state char(2)
, ca_zip char(10)
)
organization external (
TYPE ORACLE_HIVE
DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS
(com.oracle.bigdata.cluster hadoop_cl_1)
LOCATION ('hive://customer_address')
)
HDFS Data Node
HDFS Name Node
Hive metadata
External Table
Hive metadata
Smart SQL Processing 実現のポイント1,2 Hadoop のメタデータをOracle Catalogと連携
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 23
create table customer_address
( ca_customer_id number(10,0)
, ca_street_number char(10)
, ca_state char(2)
, ca_zip char(10)
)
organization external (
TYPE ORACLE_HIVE
DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS
(com.oracle.bigdata.cluster hadoop_cl_1)
LOCATION ('hive://customer_address')
)
Big Data Appliance +
Hadoop
HDFS Data Node
Exadata +
Oracle Database
Oracle Catalog
External Table HDFS Data Node
HDFS Name Node
Hive metadata
External Table
Hive metadata
Smart SQL Processing 実現のポイント1,2 Hadoop のメタデータをOracle Catalogと連携
create table customer_address
( ca_customer_id number(10,0)
, ca_street_number char(10)
, ca_state char(2)
, ca_zip char(10)
)
organization external (
TYPE ORACLE_HIVE
DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS
(com.oracle.bigdata.cluster hadoop_cl_1)
LOCATION ('hive://customer_address')
)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 24
HDFS Data Node
Oracle Catalog
External Table
Select c_customer_id
, c_customer_last_name
, ca_county
From customers DBのテーブル
, customer_address Hadoopの外部表
where c_customer_id = ca_customer_id
and ca_state = ‘CA’
HDFS Data Node
HDFS Name Node
Hive metadata
External Table
Hive metadata
Smart SQL Processing 実現のポイント1,2 Hadoop上でのクエリの実行
HDFS Data Node
HDFS Data Node
次を決定 • データの位置 • データの構造 • 並列化
特定のデータノードにクエリを発行 • データ要求 • コンテキスト
• SerDe • RecordReader • InputFormat
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Smart SQL Processing 実現のポイント3 よりインテリジェントなクエリの実行
25
全てのデータに クエリー実行
Oracle SQL
Oracle NoSQL DB
HDFS Data Node
Oracle NoSQL DB
HDFS Data Node
Oracle Database Storage Server
Oracle Database Storage Server
Fast 大規模な並列処理
ローカルでフィルタリング
データの移動を極小化
Storage Index
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Storage Indexes
Smart SQL Processing 実現のポイント3 Hadoop上でのScan処理の高速化
•自動的にデータ単位毎の最大値と最小値を収集
• データ格納単位をスキャンする前に目的のデータが最大値-最小値の間にあるかを確認
•最大値-最小値の間になければ、スキャンを行わず、スキャンにかかる時間を削減
26
HDFS Data Node
HDFS Data Node
HDFS Name Node
Hive metadata
HDFS Data Node
HDFS Data Node
“Blocks”
Min Max
Min Max
Min Max
Select c_customer_id
, c_customer_last_name
, ca_county
From customers DBのテーブル
, customer_address Hadoopの外部表
where c_customer_id = ca_customer_id
and ca_state = ‘CA’
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 27
HDFS Data Node
Oracle Catalog
External Table
Select c_customer_id
, c_customer_last_name
, ca_county
From customers DBのテーブル
, customer_address Hadoopの外部表
where c_customer_id = ca_customer_id
and ca_state = ‘CA’
HDFS Data Node
HDFS Name Node
Hive metadata
External Table
Hive metadata
Smart SQL Processing 実現のポイント3 Hadoop上でのクエリの高速化
HDFS Data Node
HDFS Data Node
“Tables”
I/OとSmart Scanの実行 • 行のフィルタ • 必要な列に絞り込み
データベースのクエリー 結果と結合
必要なデータのみ移動 • 関連する行 • 関連する列
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 28
Smart SQL Processing 実現のポイント4 すべてのデータをセキュアに管理
Hadoop側のデータに対して 高度なセキュリティ機能を実装
• マスキング/リダクション
•仮想プライベートデータベース
• ファイングレイン・アクセス制御
Big Data Appliance +
Hadoop
Exadata +
Oracle Database
SSN EMPID LAST FIRST SALARY
111-11-1111 275895 Smith John 125275
222-22-2222 335685 Jones Sally 250950
333-33-3333 558544 Stinson Chuckie 32000
EMPID LAST FIRST
275895 Smith John
335685 Jones Sally
SSN SALARY
111-11-XXXX 125275
222-22-YYYY 250950
333-33-ZZZZ 32000
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Agenda
1
2
3
Hadoopを取り巻く環境
Smart SQL Processing
本日のまとめ
29
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Big Data Management System
• Oracle SQL一つで全てのデータを – Oracle Database、Hadoop、全てのデータに対して、
Oracle SQLの機能を完全に利用可能
–既存アプリケーションコードに、変更が必要ない
• Hadoop上のデータに最良のパフォーマンスを – Oracle Exadata のSmart Scan 同等機能をHadoopのノードに実装
• Hadoopのデータに高度なセキュリティを – Oracle Databaseのセキュリティ機能を継承
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 31
Launch Webcast Oracle Big Data Breakthrough: Connect All Your Data with SQL
日本時間:7/16(水) AM2:00-3:45 Andrew Mendelsohn Executive Vice President, Database Server Technologies, Oracle
Paul Sonderegger Senior Principal, Business Intelligence Market Development, Business Analytics Product Group, Oracle
Dan McClary Principal Product Manager, Big Data, Oracle
http://www.oracle.com/bigdata
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Apache Sentryへの貢献
32
Founding
・セキュリティ管理機能(ファイングレインアクセス制御)をHadoopに実装するApache Sentryの初期メンバーに参画
・Oracle Databaseで長年つちかったセキュリティーに関する技術や知見をもとにApache Sentryに貢献
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 33
Thank you, Hadoop User Group Japan Thank you, Recruit Technologies Co.,Ltd.
Thank you, All
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 34
Top Related