Upload
others
View
5
Download
1
Embed Size (px)
Citation preview
データベース・エンジニアのためのHadoop活用術Oracle Big Data SQL
日本オラクル株式会社
データベース事業統括製品戦略統括本部
プリンシパル・セールスコンサルタント能仁信亮
プリンシパル・セールスコンサルタント立山重幸
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.
Oracle DBA & Developer Days 2014for your Skill
使える実践的なノウハウがここにある
#odddtky
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
•以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。
3
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
本セッションのアジェンダ
1
2
3
4
Big Data SQLが生まれた背景
Big Data SQLを理解するためのHadoop再入門
Big Data SQL Technical Overview
Big Data SQL Demo
4
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Big Data SQLが生まれた背景
5
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Hadoopの活用例 – Skybox Imaging
• 参考情報:
– 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
6
http://www.skyboximaging.com/
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Hadoopの活用例 –データウェアハウスの拡張
7
論理データウェアハウス (Logical Data Warehouse)Gartnerが提唱
旧来のデータストアに加えて、Hadoopなどの複数の最適な技術を組あわせてデータウェアハウスを構築
Hadoopを組み合わせて大規模データウェアハウスを構築している例
Facebook300PB
https://code.facebook.com/posts/229861827208629/scaling-the-facebook-data-warehouse-to-300-pb/
Nokia数PB
Strata NY 2012にて講演
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
典型的なデータ活用パターンデータの特性や活用目的にあわせ、最適なテクノロジーを組み合わせる
NoSQL•KeyとValueのシンプルな構造•低コストでのスケールアウト
RDBMS•業務トランザクション•データ分析•ミッション・クリティカル環境
Hadoop•分散ファイルシステム•並列分散処理用フレームワーク
8
Hadoop
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Exadatafor
Oracle Database
Big Data Appliancefor
Hadoop, NoSQL Database
究極のパフォーマンス 高いセキュリティ 豊富な連携ツール群 幅広いカバー範囲
低コストでの拡張性 オープンプラットフォーム 急速な技術的な進化
Big Data Management Systems
9
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Oracle Big Data Appliance事前に設定/最適化されたビッグデータ用Hadoopプラットフォーム
最適化済み低リスク、事前構築/調整済みEngineeredSystem製品
DIYと比べて21%のコスト削減、30%の構築期間短縮
処理時間の短縮独自機能Perfect Balanceにより、MapReduceの処理時間を短縮
最大15倍MapReduce処理を高速化
Oracle Databaseとの親和性Oracle Big Data SQLとの活用により、RDBMSとHadoopの利点を組み合わせた統合DWHをシンプル、かつ迅速に、セキュアに構築可能
Oracle Big Data Connectorsとの活用により HadoopからOracle Databaseへの ロードを最大15TB/時間と高速化
高度なセキュリティKerberos/LDAP認証、Apache Sentryによる認可、ネットワークおよびHDFSデータのHDD暗号化をサポート
Oracle Audit Vault & Database Firewallによる一元化された監査
10
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Full Rack : 18 ノード
Oracle Big Data Appliance ソフトウェア
•40Gb/sec InfiniBand 合計 100 port (内部接続とExadataへの接続で利用)•10Gb/sec Ethernet 合計16 ports(データセンターの機器との接続)
•288 Intel® Xeon® E5 Processor cores•1152 GB メモリ•864TB の合計ディスク容量
Starter Rack : 6 ノード
•96 Intel® Xeon® E5 Processor cores•384 GB メモリ•288TB の合計ディスク容量
Big Data Appliance ノード Sun X4-2L Server
•2 ×8Core Intel® Xeon® E5-2650 V2Processors (2.6 GHz)
•12 x 4 TB 7.2K RPM 高容量 SAS (hot-swap)•64 GB (8 x 8GB) 512GBまで拡張可能
InfiniBand Network
•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
事前に設定/最適化されたビッグデータ用Hadoopプラットフォーム
Oracle Big Data Appliance
*ハードウェアのサポート契約で、上記ソフトウェアのサポートを追加料金なしでご提供(Oracle NoSQL Databaseを除く)
In-Rack Expansionを利用して6ノードずつ追加可能
11
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
データ分析の課題分断されたサイロな環境を対象に分析を実施する必要がある
12
Hadoop
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
データ分析の課題それぞれが異なるデータアクセスインターフェースをもつ
13
Hadoop
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
SQL on Hadoopは時代の流れ
• Apache Hive
• Stinger
• Presto
• Impala
• Spark SQL
14
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
データ分析の課題統合されたSQLインターフェースが存在しない
15
Hadoop
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
未対応の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 ✔ ✖
16
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
SQLの書き換えが必要な例 : HiveUNION ALLの例
• アプリケーションの改修が必要であったり、ツールによっては対応できない場合もある
• オプティマイザが未成熟なため、SQLの書き方によってパフォーマンスが大きく影響される。結果としてSQLの書換が必要となるケースもある
17
> 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;
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Oracle Big Data ManagementBig Data分析でもSQLによる既存資産が流用可能
18
NoSQLHadoop
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Before After
統合されたクエリーによるメリット
Data Science
専任エンジニア
???
すべてのユーザー
19
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Before After
統合されたクエリーによるメリット
アプリケーション開発
20
HadoopHadoop
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
HDFSData Node
HDFSData Node
Local Process Local Process
OracleStorage Server
OracleStorage Server
Local Process Local Process
Oracle SQL
Big Data Appliance+
Hadoop
Exadata+
Oracle Database
全てのデータにOracle DBからOracle SQLでアクセス可能
Oracle Big Data SQLOracle DatabaseとHadoopのデータをSQLで有効活用
Smart Scan機能をHadoopのノードに実装
Oracle Databaseのセキュリティ機能をHadoop上のデータにも適用
21
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Big Data SQLを理解するためのHadoop再入門
22
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
分散ファイルシステム. 分散処理フレームワーク
Hadoop
Big Data SQLを理解する上で必要となる知識
ある程度の知識が必要 不要
HDFS MapReduce
23
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
HDFS
Node-A Node-B Node-C Node-D Node-E Node-F
元ファイル
1 2 3 4
1
3
2
4
1
3
3
2
1
4
2
4
Replication数に応じて指定のブロックサイズでいずれかのノードに割り振られる(Big Data Applianceのデフォルトのブロックサイズは256MB)
Hadoop Distributed File System (HDFS)
分散配置
24
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
HDFSの構成 (クライアントからの読込み)クライアント/ プログラム
NameNode(Active)NameNode
(Standby)
DataNode③各ブロックを管理するノードに
データをリクエスト
①ファイルを管理するノードを問合せ
②ファイルに含まれる各ブロックを管理するノード名を返却
25
DataNode
DataNode
DataNode
補足• Hadoopでは、データの格納とデータの処理を同一ノードで行います (Exadataのようなデータベース・サーバーとストレージ・サーバーのような区分けがない)
• ネットワークの転送量を抑えるために、可能な限りブロックが存在するノードで、そのブロックに対する処理を行います (=データ・ローカリティ)
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Q1 Hadoopって非構造データを扱うんですよね?Hadoopで利用される代表的なデータフォーマット
26
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
• HDFS(Hadoop分散ファイルシステム)は「ファイルシステム」です–ファイルとして扱えるものであれば、なんでも扱えます
–ということで、非構造データ「も」扱うことができます
27
Yes or No?
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Schema-on-Write と Schema-on-Read
Schema-on-Write Schema-on-Read
28
• データの保存時に専用フォーマットに変換してデータを保存
• データを読み取る際に、格納されたデータフォーマットを動的に解釈
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
最近のHadoop界隈での流行
•旧来は、HadoopではSchema-on-Readが主流だった
•読み取り時のパフォーマンスが(柔軟性よりも)重要なデータに関しては、Hadoopでも列指向データ型に格納する流れがでてきた– ORC File(Facebookなどで利用される), Parquet(TwitterがOSSとして公開)などの列指向フォーマットが代表格
–最適化されたデータフォーマットにあらかじめ変換しておくという意味では、Schema-on-Writeのアプローチ
• 「柔軟性 vs読み取り時の性能」を考慮して、最適なフォーマットを選択
29
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Big Data SQLでは?
•多様なフォーマットが扱えます。
•詳しくは、本セッションの後半で扱います。
30
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Q2じゃあ、HDFSにあるデータをどう利用するの?データの読取り方式
31
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
HDFS上のファイルを分散処理するために何が必要か?
•分散処理を行うためには?–巨大なファイルを分割(スプリット)する
• 並列処理のための分割
–分割されたスプリットからレコード(キー・バリューのペア)を認識する
32
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
テキストファイルの処理例 ー TextInputFormat
33
{"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}
例: 100GBのファイル
Block B1
Block B2
Block B3
Key: 1256Value: {"custId":1067283,"movieId":1124,"genreId”9,"time":"2012-07-01:00:01:26","recommended":"Y","activity":7}
ファイルを分割するTextInputFormat
テキストファイル用のTextInputFormatでは、分割の単位はブロックBig Data Applianceでは、デフォルトブロックサイズ256MB100GBのファイルであれば、400個の(Splitに)分割されて処理される
キーとバリューの組としてレコード(行)を生成する
LineRecordReader
ファイルの中の何行目か
行に含まれる内容
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
レコードを行と列として認識する仕組みは?
• プログラム(MapReduce)では、キーとバリューとして扱えれば十分– ValueがJSON形式でそのまま入っているが、プログラムの中で解釈すればよい
• SQLとして扱うのであれば、キーとバリューではなく、列としてレコードを解釈する必要がある
• Hadoop上のSQLエンジン Hiveでは、レコードを列として解釈するSerDe(シリアライズ・デシリアライズ用のクラス)の仕組みを持つ– 前ページの例では、JSON形式のデータを列として解釈するJSON用のSerDeを利用して、データを行と列として解釈
34
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Big Data SQLでは?
•以下の2つの方式をサポート–ネイティブ(C言語での独自)実装の読取り方式
• 高速
• 現在のバージョンではデリミタ区切りのフォーマットのみに対応
– InputFormat, SerDe(この節の内容)を利用した読取り• 既存のものや、新規に作成したものを活用することで、任意のフォーマットに対応可能
• この場合でも、データを読取る仕組みを利用するだけでMapReduceは利用しない
35
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Q3 データってどうやってとりこむの?データ取り込みから加工
36
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Hadoopのデータソースってなんでしょうか?
• ファイルとして生成されるデータ– Webログ, システム・ログ
•機器の生成するデータ–自動車や複合機などの製品が生成するデータ
–製造機器など工場内で生成するデータ
• リレーショナルデータベース (OLTP)
37
Apache Flume, fluentdなど
独自アプリケーションやApache Flumeなど
SqoopやOracle GoldenGateなど
データソース 典型的な取込み方法
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Apache Flume
• データ収集のための効率的な基盤– Big Data Applianceに含まれる
–特にログファイルの準リアルタイムの収集に強みをもつ• ファイル単位ではなくログに出力されたものを順次収集 (TailSource)
38
Agent1
HDFS
Agent
ログの転送
AgentAgent2
Agent3
Agent4
Thirft, JMS, HTTP等多様なソースに対応
収集したデータの格納先はApache HBaseやApache Solr
等にも対応
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Oracle Databaseからのデータ収集Oracle Data Integrator, Oracle GoldenGate
39
Load to Oracle
OLH/OSCHTransform
Hive
Oracle Data Integrator
Hive/HDFS Federate Hive/HDFS to Oracle
Big Data SQL
Oracle DB OLTP
Hive/HDFS
GoldenGate
Hive/HDFSをターゲットとする連携はOracle GoldenGate Java Adapterのサンプル実装として提供
Hadoop
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Big Data SQLでは?
• この節で紹介したツールなどで取り込んだデータを利用
• Oracle Databaseからのデータの移動に対応予定(次ページ)
40
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
ExadataからBig Data Applianceへのデータの移動Big Data SQLの今後の機能拡張予定
Big Data ApplianceCloudera Hadoop
ExadataOracle Database
Copy to BDA
Oracle Big Data SQL
直近13ヶ月分のデータ
14ヶ月目以降のデータ
今後の拡張予定機能
41
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
まとめ
• Q1: Hadoopって非構造データを扱うんですよね
– 非構造データも扱うことができるが、HDFSはファイルシステムなため任意のデータの格納が可能。最近は、列指向の(極めて構造的な)データフォーマットも登場している
• Q2:じゃあ、HDFSにあるデータをどう利用するの?
– ファイルフォーマットを解釈する仕組み(InputFormat/RecordReader), それを行・列として解釈する仕組み(Hive SerDe)などを利用して多様なフォーマットを利用可能に
– Big Data SQLもそれらの仕組みを活用することが可能
• Q3:データってどうやってとりこむの?
– 準リアルタイムにデータを収集する仕組み(Apache Flume)や、Oracle Data Integrator、Golden GateのHadoop対応機能を活用
42
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Big Data SQL Technical Overview
43
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Oracle Big Data SQL
•パワフルなSQL on Hadoop– Oracle SQL問い合わせがHadoop上で使える
– Hadoopのリソースを有効活用したSQL処理
• Hadoop と Oracle Databaseのシンプルな統合– Exadataにアクセスすれば、全てのデータにクエリ可能
– HadoopとRDBMSデータの結合
•最適化されたハードウェア– Hadoop用に最適化されたBig Data Appliance上で稼働
– ExadataとはInfinibandで高速アクセス
44
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Oracle Big Data SQL
45
HDFSData Node
HDFSData Node
Local Process Local Process
OracleStorage Server
OracleStorage Server
Local Process Local Process
Oracle SQL
Big Data Appliance+
Hadoop
Exadata+
Oracle Database
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
どのような仕組みなのか?
ポイント1:
Hiveのメタデータを利用した外部表作成
ポイント2:
パフォーマンス最適化のためのSmart Scan機能
ポイント3:
アーキテクチャ
46
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Hive (おさらい兼ねて)
• HDFSに格納されたデータに対してSQLライクなインタフェース(HiveQL)を提供
•様々なフォーマットに対応可能
• ファイルの保存場所やパースするための設定をメタデータとして保持
• HiveQLは内部的にMapReduceを実行
47
• Big Data SQLは、管理をシンプルにするためにHiveのメタデータを利用します。ただし、必須ではありません。
• Big Data SQLは、クエリの実行にはHiveを利用しません。
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
HDFSにファイルを置きます
48
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}
例: JSON形式のログファイル
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Hive表を定義します(Schema on Read)一つのカラムとして読み込む場合
49
> 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”,…
HiveQL:CREATE EXTERNAL TABLE movieapp_log_json(click STRING)ROW FORMATDELIMITEDLINES TERMINATED BY '¥n' STORED AS TEXTFILELOCATION '/user/oracle/applog';
Classic DDL Data source metadata
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Hive表を定義します(Schema on Read)SerDeを使って、カラム定義する場合
50
> select * from movielog_cols
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 Data source metadata
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Hive MetadataほとんどのSQL on HadoopのエンジンはHive Metadataを共有します
51
Hive Metastore
Hive ImpalaShark
(Spark)Oracle Big Data SQL …
Table 定義:movieapp_log_jsonmovielogmovieapp_log_avro
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Hiveのメタデータを利用した外部表作成
52
CREATE TABLE movieapp_log_json
(click VARCHAR2(4000))
ORGANIZATION EXTERNAL
(TYPE ORACLE_HIVE
DEFAULT DIRECTORY DEFAULT_DIR
)
REJECT LIMIT UNLIMITED;
Big Data Appliance+
Hadoop
Exadata+
Oracle Database
Oracle Catalog
外部表
Hive metadata
外部表
Hive Metastore
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 53
今までのOracle外部表の書き方にちょっと付け足すだけ
CREATE TABLE movielog(click VARCHAR2(4000))ORGANIZATION EXTERNAL( TYPE ORACLE_HIVE
DEFAULT DIRECTORY Dir1 ACCESS PARAMETERS
(com.oracle.bigdata.tablename=logscom.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. |
社内検証結果:様々な形式での動作が確認できています
54
分類 検証項目 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. |
社内検証結果:例)CSVファイル HDFS Access Driver
55
元データ
テーブル作成
クエリ結果bango,namae123,tateyama456,nounin789,suzuki
CREATE TABLE sample11 (bango number , namae VARCHAR2(10))ORGANIZATION EXTERNAL
(TYPE ORACLE_HDFSDEFAULT 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. |
社内検証結果:例)Json SerDeを利用したHive Access Driver
56
元データ
{"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_HIVEDEFAULT DIRECTORY DEFAULT_DIRACCESS PARAMETERS(
com.oracle.bigdata.cluster=cluster1com.oracle.bigdata.tablename=default.test_json ));
テーブル作成
クエリ結果
・・・・
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
型変換
• Hiveのデータ型は、以下の対応表の通りOracle型に変換できます
57
https://docs.oracle.com/cd/E55905_01/doc.40/e55814/bigsql.htm#BJEIDGHC
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
どのような仕組みなのか?
ポイント1:
Hiveのメタデータを利用した外部表作成
ポイント2:
パフォーマンス最適化のためのSmart Scan機能
ポイント3:
アーキテクチャ
58
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Exadataでお馴染みのSmart Scan機能をHadoopに実装
59
RDBMSとHadoopに対するクエリ
Oracle SQL
HDFSData NodeBDS Server
HDFS Data NodeBDS Server
Oracle DatabaseStorage Server
Oracle DatabaseStorage Server
Fast大規模並列分散処理
ローカルでの絞り込み
転送データの極小化
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 60
大規模並列分散処理:
•並列度の指定が可能– Oracle Databaseの並列度設定が自動的にHadoop側の並列設定に反映されます
例) 左記のSQLでOracle Databaseの並列度を20に設定することで、Hadoop側のBig Data SQLの処理も20並列で動作します
CREATE TABLE movieapp_log_json(click VARCHAR2(4000))ORGANIZATION EXTERNAL(TYPE ORACLE_HIVEDEFAULT DIRECTORY DEFAULT_DIR)
PARALLEL 20 REJECT LIMIT UNLIMITED;
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
ローカルでの絞り込み・データ転送の極小化:
select last_name, state, movie, genrefrom movielog m, customer cwhere genre=‘comedy’and c.custid = m.custid
Hadoop上での実行
1
NameNode/Hive Metastoreから以下の情報取得:• データの保持場所• データの構造• 対象のブロック数
1
2
Big Data SQL Serverが並列読込み:• DataNodeが並列にデータアクセス• 行と列の絞り込み
2
Hive Metastore
HDFSNameNode
3
データベースサーバーでの処理• 関連するデータのみ転送されてくる• データベースのテーブルとジョイン• データベースセキュリティポリシーの適用
3
HDFS Data NodeBDS Server
HDFS Data NodeBDS Server
movielog
customerDB
Hadoop
61
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
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優先)
62
CREATE TABLE BDS_SAMPLECol1 VARCHAR2(30) , Col2 NUMBER(30)
ORGANIZATION EXTERNAL (TYPE ORACLE_HDFSDEFAULT DIRECTORY DEFAULT_DIRACCESS PARAMETERS(
com.oracle.bigdata.cluster=cluster1com.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. |
Smart Scanの実行モード 2/2
63
Data mode 内部処理
C
Java
データ
Hiveデータ型
Oracleデータ型
処理
Oracleデータ型
処理変換
変換(SerDe) 変換
• Java data modeはSerDeを利用するため、利便性に優れるものの、内部的には一度、Hiveデータ型に変換された後に、Oracleデータ型への変換が行われるため、C data modeより実行速度が劣ります。
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
どのような仕組みなのか?
ポイント1:
Hiveのメタデータを利用した外部表作成
ポイント2:
パフォーマンス最適化のためのSmart Scan機能
ポイント3:
アーキテクチャ
64
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
IB
Ente
rpri
se M
anag
erOracle Big Data SQL導入の前提条件
Big Data SQLに接続するためには、Exadata上で稼働するOracle 12.1.0.2以上が必須になります
65
ハードウェア・ネットワークOS (Oracle Linux), JDK
Cloudera’s Distribution including Apache Hadoop
Clo
ud
era
Man
ager
Big Data SQL
(Option)
自動構成ツール
Perfect Balance
Big Data Connectors (別ライセンス)
カスタム・アプリケーション
MySQL(Cloudera Manager, Hive等のレポジトリ)
Oracle Big Data SQLは、Hadoopを利用したEngineered Systemである、Oracle Big Data Appliance上で稼働するオプションソフトウェアです
Oracle Big Data Appliance
Oracle Exadata
Oracle 12c
Exadata – Big Data Appliance間は、Infinibandで結線されている必要があります
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Big Data SQLのプロセス
66
Data Data Data
BDSQLSRV
BDSQLRS
BDSQLMS
InfiniBand
RDBMSHDFS
BDSCLI
Data Node
Config接続情報
Agent
Oracle Big Data Appliance Exadata Database Server
$ORACLE_HOME/bigdatasql
extprocbds_クラスタ名
•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. |
ソフトウェア設定手順
67
項番 設定対象 設定項目 設定概要
1 Exadata 12.1.0.2へのバージョンアップOracle Database の 12.1.0.2へのバージョンアップおよび対応するStorage Server Softwareへのバージョンアップ
2 ExadataBig Data SQL用前提パッチの適用(Oracle Database側)
Big Data SQL利用の前提となるOracle Database側のパッチpatch#19377855の適用(opatchによるパッチ適用)
3 Big Data ApplianceBig Data SQL用前提パッチの適用(Big Data Appliance側)
Big Data SQL利用の前提となるOracle Database側のパッチpatch#19607796の適用
4 Big Data ApplianceBig Data Appliance側でのBigData SQLの有効化
Big Data Applianceの有効化コマンドを実行し、Big Data Appliance側でBig Data SQLを利用可能にします
5 ExadataExadata側でのBig Data SQLの設定
Big Data Applianceで生成されるコマンドを、Exadataの各Database Serverで実行し、Exadata側にBig Data SQLの設定を行います
前提:ExadataおよびBig Data Applianceは設置済Big Data ApplianceはVersion4.0でセットアップ済み
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
運用・監視 (Cloudera Manager)
68
監視 リソース制御
Cloudera Managerでプロセスのステータス監視や起動・停止が可能
CPUやメモリなどのリソース制御はcgroupにより行う
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
Oracle Enterprise ManagerとCloudera Managerの連携方式
Big Data ApplianceEnterprise Manager(Oracle Management Service)
EnterpriseManager
forBig Data
Appliance Plugin
Cloudera Manager
サービス監視ヘルスチェック
リソース監視サービス設定
サービス起動・停止
サービス追加
リソース・死活監視
インシデント管理
Cloudera Managerからの管理が必要な項目
サーバー・スイッチ・PDU
69
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
AWRレポートの例
70
Big Data Appliance 側でのSmart Scanに関する待機イベント
1
23
統計値①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. |
Big Data SQL Demo
71
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |
デモ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ドライバ
72
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 73
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |