資料 - Oracle

#odddtky
for your Skill
Oracle DBA & Developer Days 2014
データベース・エンジニアの
ためのHadoop活用術
Oracle Big Data SQL
日本オラクル株式会社
データベース事業統括 製品戦略統括本部
プリンシパル・セールスコンサルタント 能仁 信亮
プリンシパル・セールスコンサルタント 立山 重幸
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
使える実践的なノウハウがここにある
• 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明する
ものです。また、情報提供を唯一の目的とするものであり、いかなる契約
にも組み込むことはできません。以下の事項は、マテリアルやコード、機
能を提供することをコミットメント(確約)するものではないため、購買決定
を行う際の判断材料になさらないで下さい。オラクル製品に関して記載さ
れている機能の開発、リリースおよび時期については、弊社の裁量により
決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
3
本セッションのアジェンダ
1
Big Data SQLが生まれた背景
2
Big Data SQLを理解するためのHadoop再入門
3
Big Data SQL Technical Overview
4
Big Data SQL Demo
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
4
Big Data SQLが生まれた背景
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
5
Hadoopの活用例 – Skybox Imaging
http://www.skyboximaging.com/
• 参考情報:
– http://blog.cloudera.com/blog/2012/10/sneak-peek-into-skybox-imagings-cloudera-powered-satellite-system/
– http://searchbusinessanalytics.techtarget.com/feature/Companies-using-Hadoop-for-analytics-bring-meaning-to-satellite-data
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
6
Hadoopの活用例 – データウェアハウスの拡張
論理データウェアハウス (Logical Data Warehouse)
Gartnerが提唱
旧来のデータストアに加えて、Hadoopなどの複数の最適な技術を組あわせて
データウェアハウスを構築
Hadoopを組み合わせて大規模データウェアハウスを構築している例
Facebook
300PB
Nokia
数PB
https://code.facebook.com/posts/229861827208629/scalingthe-facebook-data-warehouse-to-300-pb/
Strata NY 2012にて講演
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
7
典型的なデータ活用パターン
データの特性や活用目的にあわせ、最適なテクノロジーを組み合わせる
NoSQL
•KeyとValueのシンプルな構造
•低コストでのスケールアウト
Hadoop
RDBMS
•分散ファイルシステム
•並列分散処理用フレームワーク
•業務トランザクション
•データ分析
•ミッション・クリティカル環境
Hadoop
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
8
Big Data Management Systems




 低コストでの拡張性
 オープンプラットフォーム
 急速な技術的な進化
Big Data Appliance
Exadata
for
Hadoop, NoSQL Database
for
Oracle Database
究極のパフォーマンス
高いセキュリティ
豊富な連携ツール群
幅広いカバー範囲
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
9
Oracle Big Data Appliance
事前に設定/最適化されたビッグデータ用Hadoopプラットフォーム
最適化済み
処理時間の短縮
低リスク、事前構築/調整済みEngineered
System製品
独自機能Perfect Balanceにより、MapReduce
の処理時間を短縮
DIYと比べて21%のコスト削減、30%の構築
期間短縮
最大15倍MapReduce処理を高速化
Oracle Databaseとの親和性
高度なセキュリティ
Oracle Big Data SQLとの活用により、
RDBMSとHadoopの利点を組み合わせた統
合DWHをシンプル、かつ迅速に、セキュア
に構築可能
Kerberos/LDAP認証、Apache Sentryによる
認可、ネットワークおよびHDFSデータのHDD暗
号化をサポート
Oracle Big Data Connectorsとの活用によ
り HadoopからOracle Databaseへの ロード
を最大15TB/時間と高速化
Oracle Audit Vault & Database Firewallによ
る一元化された監査
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
10
Oracle Big Data Appliance
事前に設定/最適化されたビッグデータ用Hadoopプラットフォーム
Full Rack : 18 ノード
Big Data Appliance ノード Sun X4-2L Server
•288 Intel® Xeon® E5 Processor cores
•1152 GB メモリ
•864TB の合計ディスク容量
•2 ×8Core Intel® Xeon® E5-2650 V2
Processors (2.6 GHz)
•12 x 4 TB 7.2K RPM 高容量 SAS (hot-swap)
•64 GB (8 x 8GB) 512GBまで拡張可能
Starter Rack : 6 ノード
•96 Intel® Xeon® E5 Processor cores
•384 GB メモリ
•288TB の合計ディスク容量
Oracle Big Data Appliance ソフトウェア
InfiniBand Network
•40Gb/sec InfiniBand 合計 100 port
(内部接続とExadataへの接続で利用)
•10Gb/sec Ethernet 合計16 ports
(データセンターの機器との接続)
In-Rack Expansionを利用して
6ノードずつ追加可能
•Oracle Linux
•Oracle Java VM
•Cloudera Distribution of Apache Hadoop (CDH)
•Cloudera Manager
•Cloudera Impala, Search, Navigator, HBase & BDR
•Oracle R Distribution
•Oracle NoSQL Database
*ハードウェアのサポート契約で、上記ソフトウェアのサポート
を追加料金なしでご提供(Oracle NoSQL Databaseを除く)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
11
データ分析の課題
分断されたサイロな環境を対象に分析を実施する必要がある
Hadoop
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
12
データ分析の課題
それぞれが異なるデータアクセスインターフェースをもつ
Hadoop
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
13
SQL on Hadoopは時代の流れ
• Apache Hive
• Stinger
• Presto
• Impala
• Spark SQL
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
14
データ分析の課題
統合されたSQLインターフェースが存在しない
Hadoop
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
15
未対応のSQL機能の例 : Impala
SQL Language Feature
Oracle
Impala
ORDER BY
✔
✔
UNION ALL
✔
✔
BETWEEN
✔
✔
SQL-2003 Window 関数(moving average, LEAD/LAG等)
✔
2.0(最新バージョン)で実装
WHERE句の中でのサブクエリー
✔
2.0(最新バージョン)で実装
集合演算子 (MINUS, INTERSECT)
✔
✖
SQL-1999 集計関数(ROLLUP, GROUPING SET)
✔
✖
Recursive WITH
✔
✖
SQL Pattern Matching
✔
✖
User defined Table-functions
✔
✖
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
16
SQLの書き換えが必要な例 : Hive
UNION ALLの例
> SELECT a, b FROM test1 UNION ALL SELECT a,b FROM test2;
このままだとHiveではエラーが発生
以下のSQLに書換えが必要
> SELECT * FROM (SELECT a, b FROM test1 UNION ALL SELECT a,b FROMtest2) t;
• アプリケーションの改修が必要であったり、ツールによっては対応できない場合もある
• オプティマイザが未成熟なため、SQLの書き方によってパフォーマンスが大きく影響される。結果としてSQLの書換
が必要となるケースもある
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
17
Oracle Big Data Management
Big Data分析でもSQLによる既存資産が流用可能
Hadoop
NoSQL
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
18
統合されたクエリーによるメリット
Before
Data Science
After
すべての
ユーザー
専任
エンジニア
???
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
19
統合されたクエリーによるメリット
Before
Hadoop
アプリケーション開発
After
Hadoop
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
20
Oracle Big Data SQL
Oracle DatabaseとHadoopのデータをSQLで有効活用
Big Data Appliance
Exadata
+
Hadoop
+
Oracle Database
Oracle SQL
全てのデータにOracle DBから
Oracle SQLでアクセス可能
Smart Scan機能をHadoopの
ノードに実装
Local Process
HDFS
Data Node
Local Process
HDFS
Data Node
Local Process
Oracle
Storage Server
Local Process
Oracle
Storage Server
Oracle Databaseのセキュリティ
機能をHadoop上のデータにも
適用
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
21
Big Data SQLを理解するための
Hadoop再入門
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
22
Big Data SQLを理解する上で必要となる知識
Hadoop
HDFS
MapReduce
分散ファイルシステム.
分散処理フレームワーク
ある程度の知識が必要
不要
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
23
Hadoop Distributed File System (HDFS)
分散配置
元ファイル
1
2
3
4
HDFS
1
2
1
3
1
2
3
4
3
2
4
4
Node-A
Node-B
Node-C
Node-D
Node-E
Node-F
Replication数に応じて指定のブロックサイズでいずれかのノードに割り振られる
(Big Data Applianceのデフォルトのブロックサイズは256MB)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
24
HDFSの構成 (クライアントからの読込み)
NameNode
(Standby)
NameNode
(Active)
①ファイルを管理する
ノードを問合せ
クライアント/ プログラム
②ファイルに含まれる各ブロックを
管理するノード名を返却
DataNode
③各ブロックを管理するノードに
データをリクエスト
DataNode
DataNode
DataNode
補足
•
•
Hadoopでは、データの格納とデータの処理を同一ノー
ドで行います (Exadataのようなデータベース・サー
バーとストレージ・サーバーのような区分けがない)
ネットワークの転送量を抑えるために、可能な限りブ
ロックが存在するノードで、そのブロックに対する処理
を行います (=データ・ローカリティ)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
25
Q1
Hadoopって非構造データを扱うんですよね?
Hadoopで利用される代表的なデータフォーマット
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
26
Yes or No?
• HDFS(Hadoop分散ファイルシステム)は「ファイルシステム」です
– ファイルとして扱えるものであれば、なんでも扱えます
– ということで、非構造データ「も」扱うことができます
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
27
Schema-on-Write と Schema-on-Read
Schema-on-Write
Schema-on-Read
• データの保存時に専用フォーマット • データを読み取る際に、格納され
に変換してデータを保存
たデータフォーマットを動的に解釈
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
28
最近のHadoop界隈での流行
• 旧来は、HadoopではSchema-on-Readが主流だった
• 読み取り時のパフォーマンスが(柔軟性よりも)重要なデータに関しては、
Hadoopでも列指向データ型に格納する流れがでてきた
– ORC File(Facebookなどで利用される), Parquet(TwitterがOSSとして公開)などの列指
向フォーマットが代表格
– 最適化されたデータフォーマットにあらかじめ変換しておくという意味では、Schemaon-Writeのアプローチ
• 「柔軟性 vs 読み取り時の性能」を考慮して、最適なフォーマットを選択
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
29
Big Data SQLでは?
• 多様なフォーマットが扱えます。
• 詳しくは、本セッションの後半で扱います。
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
30
Q2
じゃあ、HDFSにあるデータをどう利用するの?
データの読取り方式
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
31
HDFS上のファイルを分散処理するために何が必要か?
• 分散処理を行うためには?
– 巨大なファイルを分割(スプリット)する
• 並列処理のための分割
– 分割されたスプリットからレコード(キー・バリューのペア)を認識する
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
32
テキストファイルの処理例 ー TextInputFormat
キーとバリューの組として
レコード(行)を生成する
LineRecordReader
ファイルを分割する
TextInputFormat
例: 100GBのファイル
ファイルの中の何行目か
{"custId":1185972,"movieId":null,"genreId":null,"time":"2012-07-01:00:00:07","recommended":null,"activity":8}
{"custId":1354924,"movieId":1948,"genreId":9,"time":"2012-07-01:00:00:22","recommended":"N","activity":7}
{"custId":1083711,"movieId":null,"genreId":null,"time":"2012-07-01:00:00:26","recommended":null,"activity":9}
{"custId":1234182,"movieId":11547,"genreId":44,"time":"2012-07-01:00:00:32","recommended":"Y","activity":7}
{"custId":1010220,"movieId":11547,"genreId":44,"time":"2012-07-01:00:00:42","recommended":"Y","activity":6}
{"custId":1143971,"movieId":null,"genreId":null,"time":"2012-07-01:00:00:43","recommended":null,"activity":8}
{"custId":1253676,"movieId":null,"genreId":null,"time":"2012-07-01:00:00:50","recommended":null,"activity":9}
{"custId":1351777,"movieId":608,"genreId":6,"time":"2012-07-01:00:01:03","recommended":"N","activity":7}
{"custId":1143971,"movieId":null,"genreId":null,"time":"2012-07-01:00:01:07","recommended":null,"activity":9}
{"custId":1363545,"movieId":27205,"genreId":9,"time":"2012-07-01:00:01:18","recommended":"Y","activity":7}
{"custId":1067283,"movieId":1124,"genreId":9,"time":"2012-07-01:00:01:26","recommended":"Y","activity":7}
{"custId":1126174,"movieId":16309,"genreId":9,"time":"2012-07-01:00:01:35","recommended":"N","activity":7}
{"custId":1234182,"movieId":11547,"genreId":44,"time":"2012-07-01:00:01:39","recommended":"Y","activity":7}}
{"custId":1346299,"movieId":424,"genreId":1,"time":"2012-07-01:00:05:02","recommended":"Y","activity":4}
Block B1
Block B2
Key: 1256
Value: {"custId":1067283,"movieId":1124,
"genreId”9,"time":"2012-07-01:00:01:26",
"recommended":"Y","activity":7}
行に含まれる内容
Block B3
テキストファイル用のTextInputFormatでは、分割の単位はブロック
Big Data Applianceでは、デフォルトブロックサイズ256MB
100GBのファイルであれば、400個の(Splitに)分割されて処理される
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
33
レコードを行と列として認識する仕組みは?
• プログラム(MapReduce)では、キーとバリューとして扱えれば十分
– ValueがJSON形式でそのまま入っているが、プログラムの中で解釈すればよい
• SQLとして扱うのであれば、キーとバリューではなく、列としてレコードを解
釈する必要がある
• Hadoop上のSQLエンジン Hiveでは、レコードを列として解釈するSerDe(シ
リアライズ・デシリアライズ用のクラス)の仕組みを持つ
– 前ページの例では、JSON形式のデータを列として解釈するJSON用のSerDeを利用し
て、データを行と列として解釈
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
34
Big Data SQLでは?
• 以下の2つの方式をサポート
– ネイティブ(C言語での独自)実装の読取り方式
• 高速
• 現在のバージョンではデリミタ区切りのフォーマットのみに対応
– InputFormat, SerDe(この節の内容)を利用した読取り
• 既存のものや、新規に作成したものを活用することで、任意のフォーマットに対応可能
• この場合でも、データを読取る仕組みを利用するだけでMapReduceは利用しない
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
35
Q3
データってどうやってとりこむの?
データ取り込みから加工
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
36
Hadoopのデータソースってなんでしょうか?
データソース
典型的な取込み方法
• ファイルとして生成されるデータ
Apache Flume,
fluentdなど
– Webログ, システム・ログ
• 機器の生成するデータ
– 自動車や複合機などの製品が生成するデータ
– 製造機器など工場内で生成するデータ
• リレーショナルデータベース (OLTP)
独自アプリケーションや
Apache Flumeなど
Sqoopや
Oracle GoldenGateなど
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
37
Apache Flume
• データ収集のための効率的な基盤
– Big Data Applianceに含まれる
– 特にログファイルの準リアルタイムの収集に強みをもつ
• ファイル単位ではなくログに出力されたものを順次収集 (TailSource)
Agent1
ログの転送
Agent2
Agent
HDFS
Agent3
Agent4
Thirft, JMS, HTTP等
多様なソースに対応
Agent
収集したデータの格納先は
Apache HBaseやApache Solr
等にも対応
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
38
Oracle Databaseからのデータ収集
Oracle Data Integrator, Oracle GoldenGate
Hadoop
Oracle DB
OLTP
Oracle Data Integrator
Transform
Hive
GoldenGate
Hive/HDFSをターゲットとする連携は
Oracle GoldenGate Java Adapterの
サンプル実装として提供
Hive/HDFS
Hive/HDFS
Load to Oracle
OLH/OSCH
Federate Hive/HDFS to Oracle
Big Data SQL
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
39
Big Data SQLでは?
• この節で紹介したツールなどで取り込んだデータを利用
• Oracle Databaseからのデータの移動に対応予定(次ページ)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
40
今後の拡張予定機能
ExadataからBig Data Applianceへのデータの移動
Big Data SQLの今後の機能拡張予定
Oracle Big Data SQL
Copy to BDA
直近13ヶ月分の
データ
14ヶ月目以降の
データ
Big Data Appliance
Cloudera Hadoop
Exadata
Oracle Database
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
41
まとめ
• Q1: Hadoopって非構造データを扱うんですよね
– 非構造データも扱うことができるが、HDFSはファイルシステムなため任意のデータの格納が可能。最
近は、列指向の(極めて構造的な)データフォーマットも登場している
• Q2:じゃあ、HDFSにあるデータをどう利用するの?
– ファイルフォーマットを解釈する仕組み(InputFormat/RecordReader), それを行・列として解釈する仕組
み(Hive SerDe)などを利用して多様なフォーマットを利用可能に
– Big Data SQLもそれらの仕組みを活用することが可能
• Q3:データってどうやってとりこむの?
– 準リアルタイムにデータを収集する仕組み(Apache Flume)や、Oracle Data Integrator、Golden Gateの
Hadoop対応機能を活用
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
42
Big Data SQL Technical Overview
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
43
Oracle Big Data SQL
• パワフルなSQL on Hadoop
– Oracle SQL問い合わせがHadoop上で使える
– Hadoopのリソースを有効活用したSQL処理
• Hadoop と Oracle Databaseのシンプルな統合
– Exadataにアクセスすれば、全てのデータにクエリ可能
– Hadoop とRDBMSデータの結合
• 最適化されたハードウェア
– Hadoop用に最適化されたBig Data Appliance上で稼働
– ExadataとはInfinibandで高速アクセス
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
44
Oracle Big Data SQL
Big Data Appliance
Exadata
+
Hadoop
+
Oracle Database
Oracle SQL
Local Process
HDFS
Data Node
Local Process
HDFS
Data Node
Local Process
Oracle
Storage Server
Local Process
Oracle
Storage Server
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
45
どのような仕組みなのか?
ポイント1:
Hiveのメタデータを利用した外部表作成
ポイント2:
パフォーマンス最適化のためのSmart Scan機能
ポイント3:
アーキテクチャ
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
46
Hive (おさらい兼ねて)
• HDFSに格納されたデータに対してSQLライクなインタフェース(HiveQL)を提供
• 様々なフォーマットに対応可能
• ファイルの保存場所やパースするための設定をメタデータとして保持
• HiveQLは内部的にMapReduceを実行
• Big Data SQLは、管理をシンプルにするためにHiveのメ
タデータを利用します。ただし、必須ではありません。
• Big Data SQLは、クエリの実行にはHiveを利用しません。
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
47
HDFSにファイルを置きます
例: JSON形式のログファイル
Hadoop
{"custId":1185972,"movieId":null,"genreId":null,"time":"2012-07-01:00:00:07","recommended":null,"activity":8}
{"custId":1354924,"movieId":1948,"genreId":9,"time":"2012-07-01:00:00:22","recommended":"N","activity":7}
{"custId":1083711,"movieId":null,"genreId":null,"time":"2012-07-01:00:00:26","recommended":null,"activity":9}
{"custId":1234182,"movieId":11547,"genreId":44,"time":"2012-07-01:00:00:32","recommended":"Y","activity":7}
{"custId":1010220,"movieId":11547,"genreId":44,"time":"2012-07-01:00:00:42","recommended":"Y","activity":6}
{"custId":1143971,"movieId":null,"genreId":null,"time":"2012-07-01:00:00:43","recommended":null,"activity":8}
{"custId":1253676,"movieId":null,"genreId":null,"time":"2012-07-01:00:00:50","recommended":null,"activity":9}
{"custId":1351777,"movieId":608,"genreId":6,"time":"2012-07-01:00:01:03","recommended":"N","activity":7}
{"custId":1143971,"movieId":null,"genreId":null,"time":"2012-07-01:00:01:07","recommended":null,"activity":9}
{"custId":1363545,"movieId":27205,"genreId":9,"time":"2012-07-01:00:01:18","recommended":"Y","activity":7}
{"custId":1067283,"movieId":1124,"genreId":9,"time":"2012-07-01:00:01:26","recommended":"Y","activity":7}
{"custId":1126174,"movieId":16309,"genreId":9,"time":"2012-07-01:00:01:35","recommended":"N","activity":7}
{"custId":1234182,"movieId":11547,"genreId":44,"time":"2012-07-01:00:01:39","recommended":"Y","activity":7}}
{"custId":1346299,"movieId":424,"genreId":1,"time":"2012-07-01:00:05:02","recommended":"Y","activity":4}
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
48
Hive表を定義します(Schema on Read)
一つのカラムとして読み込む場合
HiveQL:
CREATE EXTERNAL TABLE movieapp_log_json
(
click STRING
)
ROW FORMAT
DELIMITED
LINES TERMINATED BY '¥n'
STORED AS TEXTFILE
LOCATION '/user/oracle/applog';
Classic DDL
> select * from movieapp_log_json
{"custId":1185972,"movieId":null,"genreId":null,"time":"2012-07-01:00:00:07",…
{"custId":1354924,"movieId":1948,"genreId":9,"time":"2012-07-01:00:00:22",…
{"custId":1083711,"movieId":null,"genreId":null,"time":"2012-07-01:00:00:26",…
{"custId":1234182,"movieId":11547,"genreId":44,"time":"2012-07-01:00:00:32”,…
{"custId":1010220,"movieId":11547,"genreId":44,"time":"2012-07-01:00:00:42",…
{"custId":1143971,"movieId":null,"genreId":null,"time":"2012-07-01:00:00:43",…
{"custId":1253676,"movieId":null,"genreId":null,"time":"2012-07-01:00:00:50",…
{"custId":1351777,"movieId":608,"genreId":6,"time":"2012-07-01:00:01:03”,…
Data source metadata
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
49
Hive表を定義します(Schema on Read)
SerDeを使って、カラム定義する場合
HiveQL:
CREATE EXTERNAL TABLE movielog_cols (
custid int,
movieid int,
activity int, …)
ROW FORMAT SERDE
'org.apache.hive.hcatalog.data.JsonSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'/user/oracle/applog_json';
Classic DDL
> select * from movielog_cols
Data source metadata
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
50
Hive Metadata
ほとんどのSQL on HadoopのエンジンはHive Metadataを共有します
Oracle Big Data SQL
Shark
(Spark)
Hive
Hive Metastore
Impala
…
Table 定義:
movieapp_log_json
movielog
movieapp_log_avro
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
51
Hiveのメタデータを利用した外部表作成
Oracle Catalog
Hive Metastore
Hive metadata
CREATE TABLE movieapp_log_json
(click VARCHAR2(4000))
ORGANIZATION EXTERNAL
(TYPE ORACLE_HIVE
DEFAULT DIRECTORY DEFAULT_DIR
)
REJECT LIMIT UNLIMITED;
外部表
外部表
Exadata
Big Data Appliance
+
Oracle Database
+
Hadoop
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
52
今までのOracle外部表の書き方にちょっと付け足すだけ
CREATE TABLE movielog
(click VARCHAR2(4000))
ORGANIZATION EXTERNAL
( TYPE ORACLE_HIVE
DEFAULT DIRECTORY Dir1
ACCESS PARAMETERS
(
com.oracle.bigdata.tablename=logs
com.oracle.bigdata.cluster=mycluster)
)
REJECT LIMIT UNLIMITED
• 新しい定義項目
– アクセスドライバタイプ
• ORACLE_HIVE : Hiveのメタストアからメタデータを引き継ぐ
• ORACLE_HDFS:メタデータをCreate Table文の中で定義
– アクセスパラメータ
•
•
•
•
•
•
tablename
Hadoop cluster
column mapping
error handling
overflow handling
Logging
など
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
53
社内検証結果:
様々な形式での動作が確認できています
分類
検証項目
ファイル形式
HDFSドライバ
Hiveドライバ
テキスト
○
○
JSON
○
○
XML
○
○
正規表現(Apache Access Log)
○
○
Sequence File
○
○
Avro
○
○
RC
○
○
ORC
○
○
圧縮
gzip , LZO
○
○
クエリ
Hadoop内結合
○
○
Hadoop – Exadata結合
○
○
格納方式
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
54
社内検証結果:
例)CSVファイル HDFS Access Driver
元データ
bango,namae
123,tateyama
456,nounin
789,suzuki
クエリ結果
CREATE TABLE sample11 (
bango number , namae VARCHAR2(10))
ORGANIZATION EXTERNAL
(TYPE ORACLE_HDFS
DEFAULT DIRECTORY default_dir
テーブル
ACCESS PARAMETERS(
作成
com.oracle.bigdata.rowformat
=Delimited fields terminated by ',’ )
LOCATION
('hdfs://cluster1-ns/user/hive/warehouse/sample‘));
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
55
社内検証結果:
例)Json SerDeを利用したHive Access Driver
{"field1":"data1","field2":100,"field3":"more data1","field4":123.001}
元データ
{"field1":"data2","field2":200,"field3":"more data2","field4":123.002}
クエリ結果
{"field1":"data3","field2":300,"field3":"more data3","field4":123.003}
{"field1":"data4","field2":400,"field3":"more data4","field4":123.004}
・・・・
CREATE TABLE test_json(
field1 varchar2(20), field2 number, field3 varchar2(20),
field4 number )
ORGANIZATION EXTERNAL (
テーブル TYPE ORACLE_HIVE
作成
DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS(
com.oracle.bigdata.cluster=cluster1
com.oracle.bigdata.tablename=default.test_json ));
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
56
型変換
• Hiveのデータ型は、以下の対応表の通りOracle型に変換できます
https://docs.oracle.com/cd/E55905_01/doc.40/e55814/bigsql.htm#BJEIDGHC
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
57
どのような仕組みなのか?
ポイント1:
Hiveのメタデータを利用した外部表作成
ポイント2:
パフォーマンス最適化のためのSmart Scan機能
ポイント3:
アーキテクチャ
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
58
Exadataでお馴染みのSmart Scan機能をHadoopに実装
RDBMSとHadoop
に対するクエリ
Fast
大規模並列分散処理
Oracle SQL
ローカルでの絞り込み
転送データの極小化
HDFS Data Node
BDS Server
OracleDatabase
StorageServer
HDFSData Node
BDS Server
OracleDatabase
Storage Server
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
59
大規模並列分散処理:
CREATE TABLE movieapp_log_json
(click VARCHAR2(4000))
ORGANIZATION EXTERNAL
(TYPE ORACLE_HIVE
DEFAULT DIRECTORY DEFAULT_DIR
)
PARALLEL 20
REJECT LIMIT UNLIMITED;
• 並列度の指定が可能
– Oracle Databaseの並列度設定が自動的にHadoop
側の並列設定に反映されます
例) 左記のSQLでOracle Databaseの並列度を20に
設定することで、Hadoop側のBig Data SQLの処理も
20並列で動作します
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
60
ローカルでの絞り込み・データ転送の極小化:
Hadoop上での実行
1
select last_name, state,
movie, genre
from movielog m, customer c
where genre=‘comedy’
and c.custid = m.custid
• データの保持場所
• データの構造
• 対象のブロック数
2
DB
3
1
customer
2
3
HDFS
NameNode
Hadoop
Hive Metastore
NameNode/Hive Metastoreから
以下の情報取得:
HDFS Data Node
BDS Server
HDFS Data Node
BDS Server
Big Data SQL Serverが並列読込み:
• DataNodeが並列にデータアクセス
• 行と列の絞り込み
データベースサーバーでの処理
• 関連するデータのみ転送されてくる
• データベースのテーブルとジョイン
• データベースセキュリティポリシーの適用
movielog
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
61
Smart Scanの実行モード 1/2
• Big Data SQLのSmart Scan機能は、パフォーマンスに影響を与える2種類のModeがあり
ます。
C : 独自実装の高速処理モード 現バージョンではデリミタ区切りのテキストのみに対応
Java : 内部的にHiveのStorageHandlerを利用したデータの読取りを行う
• Data Modeは、Create Table時にcom.oracle.bigdata.datamodeで指定します。
無指定の場合は、auto(デフォルト)となりC , Java modeが自動適用されます(C優先)
CREATE TABLE BDS_SAMPLE
Col1 VARCHAR2(30) , Col2 NUMBER(30)
ORGANIZATION EXTERNAL (
TYPE ORACLE_HDFS
DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS(
com.oracle.bigdata.cluster=cluster1
com.oracle.bigdata.rowformat=Delimited fields terminated by '|'
com.oracle.bigdata.datamode=c)
LOCATION ('hdfs://cluster1-ns/user/hive/warehouse/lineitems'));
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
62
Smart Scanの実行モード 2/2
• Java data modeはSerDeを利用するため、利便性に優れるものの、内部的には一度、
Hiveデータ型に変換された後に、Oracleデータ型への変換が行われるため、C data
modeより実行速度が劣ります。
内部処理
Data mode
C
変換
Oracle
データ型
処理
データ
Java
変換
(SerDe)
Hive
データ型
変換
Oracle
データ型
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
処理
63
どのような仕組みなのか?
ポイント1:
Hiveのメタデータを利用した外部表作成
ポイント2:
パフォーマンス最適化のためのSmart Scan機能
ポイント3:
アーキテクチャ
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
64
Oracle Big Data SQL導入の前提条件
Oracle Big Data Appliance
Oracle Big Data SQLは、Hadoopを利用した
Engineered Systemである、Oracle Big Data
Appliance上で稼働するオプションソフトウェアです
カスタム・アプリケーション
Cloudera
Manager
Enterprise Manager
Perfect
Balance
Big Data
Connectors
(別ライセンス)
Big Data
SQL
(Option)
Oracle Exadata
IB
Oracle 12c
Cloudera’s Distribution including
Apache Hadoop
MySQL
(Cloudera Manager, Hive等のレポジトリ)
自動構成ツール
ハードウェア・ネットワーク
OS (Oracle Linux), JDK
Big Data SQLに接続するためには、
Exadata上で稼働するOracle 12.1.0.2以
上が必須になります
Exadata – Big Data Appliance間は、
Infinibandで結線されている必要があります
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
65
Big Data SQLのプロセス
Oracle Big Data Appliance
Data
Data
Data
Exadata Database Server
Config
接続情報
$ORACLE_HOME
/bigdatasql
RDBMS
HDFS
Data Node
BDSQLSRV
BDSQLMS
Agent
extprocbds_クラスタ名
BDSCLI
BDSQLRS
InfiniBand
•Big Data SQL Server(BDSQLSRV)は、DB Serverとの通信を担う。Data Nodeと通信する事でHDFSからデータを取得する
•Management Server (BDSQLMS)はBDSCLIから設定変更、アラート履歴表示、メトリック表示、メンテナンス操作等を管理
•Restart Server (BDSQLRS) はBDSQLSRVとBDSQLMSを監視。プロセスの生死、メモリ使用状況など
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
66
ソフトウェア設定手順
前提:ExadataおよびBig Data Applianceは設置済
Big Data ApplianceはVersion4.0でセットアップ済み
項番 設定対象
設定項目
設定概要
1
Exadata
12.1.0.2へのバージョンアップ
Oracle Database の 12.1.0.2へのバージョンアップおよび対
応するStorage Server Softwareへのバージョンアップ
2
Exadata
Big Data SQL用前提パッチの
適用(Oracle Database側)
Big Data SQL利用の前提となるOracle Database側のパッチ
patch#19377855の適用(opatchによるパッチ適用)
3
Big Data Appliance
Big Data SQL用前提パッチの
適用(Big Data Appliance側)
Big Data SQL利用の前提となるOracle Database側のパッチ
patch#19607796の適用
4
Big Data Appliance
Big Data Appliance側でのBig
Data SQLの有効化
Big Data Applianceの有効化コマンドを実行し、Big Data
Appliance側でBig Data SQLを利用可能にします
Exadata
Exadata側でのBig Data SQLの
設定
Big Data Applianceで生成されるコマンドを、Exadataの各
Database Serverで実行し、Exadata側にBig Data SQLの設
定を行います
5
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
67
運用・監視 (Cloudera Manager)
監視
リソース制御
CPUやメモリなどの
リソース制御は
cgroupにより行う
Cloudera Managerでプ
ロセスのステータス監
視や起動・停止が可能
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
68
Oracle Enterprise ManagerとCloudera Managerの連携方式
Enterprise Manager
(Oracle Management Service)
リソース・死活監視
インシデント管理
Big Data Appliance
Cloudera Manager
Enterprise
Manager
for
Big Data
Appliance
Plugin
サービス監視
ヘルスチェック
リソース監視
サービス追加
サービス設定
サービス
起動・停止
サーバー・スイッチ・PDU
Cloudera Managerからの管理が必要な項目
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
69
AWRレポートの例
Big Data Appliance 側でのSmart Scanに関する待機イベント
1
2
3
統計値
①cell XT granule bytes requested for predicate offload
BDSがSelect対象とするデータのサイズ(バイト)
②cell XT granules requested for predicate offload
BDSのリクエスト数
③cell interconnect bytes returned by XT smart scan
DBに転送されるBDSのスマートスキャン結果
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
70
Big Data SQL Demo
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
71
デモ
Analyze All Your Data with Oracle Big Data SQL
• Virtual Box環境(Big Data Lite version4.0.1)を利用します
– ご興味のある方が後日操作できるようにチュートリアルに沿って行います
– Virtual BoxイメージはOTNで公開されています
http://www.oracle.com/technetwork/database/bigdata-appliance/oracle-bigdatalite-2104726.html
環境構築手順はQuick Deployment Guideをご参照ください
http://www.oracle.com/technetwork/database/bigdata-appliance/bigdatalite-40-quickdeploy-2301390.pdf
• チュートリアル
http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/12c/BigDataSQL/BigDataSQL_HOL.html
– Part1:環境の確認
– Part2:Oracle_HDFSドライバ
– Part3:Oracle_Hiveドライバ
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
72
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
73
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |