• 検索結果がありません。

#odddtky Oracle DBA & Developer Days 2014 データベース エンジニアのための Hadoop 活用術 Oracle Big Data SQL for your Skill 使える実践的なノウハウがここにある 日本オラクル株式会社データベース事業統括製品戦略統括本

N/A
N/A
Protected

Academic year: 2022

シェア "#odddtky Oracle DBA & Developer Days 2014 データベース エンジニアのための Hadoop 活用術 Oracle Big Data SQL for your Skill 使える実践的なノウハウがここにある 日本オラクル株式会社データベース事業統括製品戦略統括本"

Copied!
75
0
0

読み込み中.... (全文を見る)

全文

(1)
(2)

データベース・エンジニアの ための Hadoop 活用術

Oracle Big Data SQL

日本オラクル株式会社

データベース事業統括 製品戦略統括本部

プリンシパル・セールスコンサルタント 能仁 信亮 プリンシパル・セールスコンサルタント 立山 重幸

Oracle DBA & Developer Days 2014

for your Skill

使える実践的なノウハウがここにある

#odddtky

(3)

• 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明する ものです。また、情報提供を唯一の目的とするものであり、いかなる契約 にも組み込むことはできません。以下の事項は、マテリアルやコード、機 能を提供することをコミットメント(確約)するものではないため、購買決定 を行う際の判断材料になさらないで下さい。オラクル製品に関して記載さ れている機能の開発、リリースおよび時期については、弊社の裁量により 決定されます。

Oracle

Java

は、

Oracle Corporation

及びその子会社、関連会社の米国及びその他の国における登録商標です。

文中の社名、商品名等は各社の商標または登録商標である場合があります。

(4)

本セッションのアジェンダ

1

2

3

4

Big Data SQL が生まれた背景

Big Data SQL を理解するための Hadoop 再入門 Big Data SQL Technical Overview

Big Data SQL Demo

(5)

Big Data SQL が生まれた背景

(6)

Hadoop の活用例 – Skybox Imaging

参考情報

:

– http://blog.cloudera.com/blog/2012/10/sneak-peek-into-skybox-imagings-cloudera-powered-satellite-system/

http://www.skyboximaging.com/

(7)

Hadoop の活用例 – データウェアハウスの拡張

論理データウェアハウス (Logical Data Warehouse)

Gartner

が提唱

旧来のデータストアに加えて、

Hadoop

などの複数の最適な技術を組あわせて データウェアハウスを構築

Hadoop

を組み合わせて大規模データウェアハウスを構築している例

Facebook 300PB

https://code.facebook.com/posts/229861827208629/scaling- the-facebook-data-warehouse-to-300-pb/

Nokia 数 PB

Strata NY 2012

にて講演

(8)

典型的なデータ活用パターン

データの特性や活用目的にあわせ、最適なテクノロジーを組み合わせる

NoSQL

• Key

Value

のシンプルな構造

低コストでのスケールアウト

RDBMS

•業務トランザクション

データ分析

ミッション・クリティカル環境

Hadoop

•分散ファイルシステム

並列分散処理用フレームワーク

Hadoop

(9)

Exadata

for

Oracle Database

Big Data Appliance

for

Hadoop, NoSQL Database

究極のパフォーマンス

高いセキュリティ

豊富な連携ツール群

幅広いカバー範囲

低コストでの拡張性

オープンプラットフォーム

急速な技術的な進化

Big Data Management Systems

(10)

Oracle Big Data Appliance

事前に設定/最適化されたビッグデータ用

Hadoop

プラットフォーム 最適化済み

低リスク、事前構築/調整済み

Engineered System

製品

DIY

と比べて

21%

のコスト削減、

30%

の構築 期間短縮

処理時間の短縮

独自機能

Perfect Balance

により、

MapReduce

の処理時間を短縮

最大

15

MapReduce

処理を高速化

Oracle Database

との親和性

Oracle Big Data SQL

との活用により、

RDBMS

Hadoop

の利点を組み合わせた統

DWH

をシンプル、かつ迅速に、セキュア に構築可能

 Oracle Big Data Connectors

との活用によ

高度なセキュリティ

Kerberos

LDAP

認証、

Apache Sentry

による 認可、ネットワークおよび

HDFS

データの

HDD

号化をサポート

Oracle Audit Vault & Database Firewall

によ る一元化された監査

(11)

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 V2 Processors (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

*ハードウェアのサポート契約で、上記ソフトウェアのサポート

In-Rack Expansion

を利用して

6

ノードずつ追加可能

(12)

データ分析の課題

分断されたサイロな環境を対象に分析を実施する必要がある

Hadoop

(13)

データ分析の課題

それぞれが異なるデータアクセスインターフェースをもつ

Hadoop

(14)

SQL on Hadoop は時代の流れ

• Apache Hive

• Stinger

• Presto

• Impala

• Spark SQL

(15)

データ分析の課題

統合された

SQL

インターフェースが存在しない

Hadoop

(16)

未対応の 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 ✔ ✖

(17)

SQL の書き換えが必要な例 : Hive

UNION ALL

の例

アプリケーションの改修が必要であったり、ツールによっては対応できない場合もある

オプティマイザが未成熟なため、

SQL

の書き方によってパフォーマンスが大きく影響される。結果として

SQL

の書換 が必要となるケースもある

> 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;

(18)

Oracle Big Data Management

Big Data

分析でも

SQL

による既存資産が流用可能

NoSQL Hadoop

(19)

Before After

統合されたクエリーによるメリット

Data Science

専任

エンジニア

???

すべての

ユーザー

(20)

Before After

統合されたクエリーによるメリット

アプリケーション開発

Hadoop

Hadoop

(21)

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

全てのデータにOracle DBから Oracle SQLでアクセス可能

Oracle Big Data SQL

Oracle Database

Hadoop

のデータを

SQL

で有効活用

Smart Scan機能をHadoopの ノードに実装

Oracle Databaseのセキュリティ 機能をHadoop上のデータにも 適用

(22)

Big Data SQL を理解するための

Hadoop 再入門

(23)

分散ファイルシステム

.

分散処理フレームワーク

Hadoop

Big Data SQL を理解する上で必要となる知識

ある程度の知識が必要 不要

HDFS MapReduce

(24)

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

Hadoop Distributed File System (HDFS)

分散配置

(25)

HDFS の構成 ( クライアントからの読込み )

クライアント/ プログラム

NameNode (Active) NameNode

(Standby)

DataNode

③各ブロックを管理するノードに

データをリクエスト

①ファイルを管理する ノードを問合せ

②ファイルに含まれる各ブロックを 管理するノード名を返却

DataNode DataNode DataNode

補足

• Hadoop

では、データの格納とデータの処理を同一ノー

ドで行います

(Exadata

のようなデータベース・サー バーとストレージ・サーバーのような区分けがない

)

ネットワークの転送量を抑えるために、可能な限りブ ロックが存在するノードで、そのブロックに対する処理 を行います (=データ・ローカリティ)

(26)

Q1 Hadoop って非構造データを扱うんですよね?

Hadoop

で利用される代表的なデータフォーマット

(27)

• HDFS(Hadoop 分散ファイルシステム ) は「ファイルシステム」です

ファイルとして扱えるものであれば、なんでも扱えます

ということで、非構造データ「も」扱うことができます

Yes or No?

(28)

Schema-on-Write と Schema-on-Read

Schema-on-Write Schema-on-Read

• データの保存時に専用フォーマット

に変換してデータを保存 • データを読み取る際に、格納され

たデータフォーマットを動的に解釈

(29)

最近の Hadoop 界隈での流行

• 旧来は、 Hadoop では Schema-on-Read が主流だった

• 読み取り時のパフォーマンスが ( 柔軟性よりも ) 重要なデータに関しては、

Hadoop でも列指向データ型に格納する流れがでてきた

– ORC File(Facebook

などで利用される

), Parquet(Twitter

OSS

として公開

)

などの列指 向フォーマットが代表格

最適化されたデータフォーマットにあらかじめ変換しておくという意味では、

Schema- on-Write

のアプローチ

• 「柔軟性 vs 読み取り時の性能」を考慮して、最適なフォーマットを選択

(30)

Big Data SQL では?

• 多様なフォーマットが扱えます。

• 詳しくは、本セッションの後半で扱います。

(31)

Q2 じゃあ、 HDFS にあるデータをどう利用するの?

データの読取り方式

(32)

HDFS 上のファイルを分散処理するために何が必要か?

• 分散処理を行うためには ?

巨大なファイルを分割

(

スプリット

)

する

並列処理のための分割

分割されたスプリットからレコード

(

キー・バリューのペア

)

を認識する

(33)

テキストファイルの処理例 ー TextInputFormat

{"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: 1256

Value: {"custId":1067283,"movieId":1124,

"genreId”9,"time":"2012-07-01:00:01:26",

"recommended":"Y","activity":7}

ファイルを分割する

TextInputFormat

テキストファイル用の

TextInputFormat

では、分割の単位はブロック

Big Data Appliance

では、デフォルトブロックサイズ

256MB

100GB

のファイルであれば、

400

個の

(Split

)

分割されて処理される

キーとバリューの組として レコード

(

)

を生成する

LineRecordReader

ファイルの中の何行目か

行に含まれる内容

(34)

レコードを行と列として認識する仕組みは?

• プログラム (MapReduce) では、キーとバリューとして扱えれば十分

– Value

JSON

形式でそのまま入っているが、プログラムの中で解釈すればよい

• SQL として扱うのであれば、キーとバリューではなく、列としてレコードを解 釈する必要がある

• Hadoop 上の SQL エンジン Hive では、レコードを列として解釈する SerDe( シ リアライズ・デシリアライズ用のクラス ) の仕組みを持つ

前ページの例では、

JSON

形式のデータを列として解釈する

JSON

用の

SerDe

を利用し て、データを行と列として解釈

(35)

Big Data SQL では?

• 以下の 2 つの方式をサポート

ネイティブ

(C

言語での独自

)

実装の読取り方式

高速

現在のバージョンではデリミタ区切りのフォーマットのみに対応

– InputFormat, SerDe(

この節の内容

)

を利用した読取り

既存のものや、新規に作成したものを活用することで、任意のフォーマットに対応可能

この場合でも、データを読取る仕組みを利用するだけで

MapReduce

は利用しない

(36)

Q3 データってどうやってとりこむの?

データ取り込みから加工

(37)

Hadoop のデータソースってなんでしょうか?

• ファイルとして生成されるデータ

– Web

ログ

,

システム・ログ

• 機器の生成するデータ

自動車や複合機などの製品が生成するデータ

製造機器など工場内で生成するデータ

• リレーショナルデータベース (OLTP)

Apache Flume, fluentd など

独自アプリケーションや Apache Flume など

Sqoop や

Oracle GoldenGate など

データソース 典型的な取込み方法

(38)

Apache Flume

• データ収集のための効率的な基盤

– Big Data Appliance

に含まれる

特にログファイルの準リアルタイムの収集に強みをもつ

ファイル単位ではなくログに出力されたものを順次収集

(TailSource)

Agent1

HDFS

Agent

ログの転送

Agent Agent2

Agent3 Agent4

収集したデータの格納先は

(39)

Oracle Database からのデータ収集

Oracle Data Integrator, Oracle GoldenGate

Load to Oracle

OLH/OSCH Transform

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

(40)

Big Data SQL では?

• この節で紹介したツールなどで取り込んだデータを利用

• Oracle Database からのデータの移動に対応予定 ( 次ページ )

(41)

Exadata から Big Data Appliance へのデータの移動

Big Data SQL

の今後の機能拡張予定

Big Data Appliance Cloudera Hadoop

Exadata Oracle Database

Copy to BDA

Oracle Big Data SQL

直近

13

ヶ月分の

14

ヶ月目以降の データ

データ

今後の拡張予定機能

(42)

まとめ

• Q1: Hadoop

って非構造データを扱うんですよね

非構造データも扱うことができるが、

HDFS

はファイルシステムなため任意のデータの格納が可能。最 近は、列指向の

(

極めて構造的な

)

データフォーマットも登場している

• Q2:

じゃあ、

HDFS

にあるデータをどう利用するの?

ファイルフォーマットを解釈する仕組み

(InputFormat/RecordReader),

それを行・列として解釈する仕組

(Hive SerDe)

などを利用して多様なフォーマットを利用可能に

– Big Data SQL

もそれらの仕組みを活用することが可能

• Q3:

データってどうやってとりこむの?

準リアルタイムにデータを収集する仕組み

(Apache Flume)

や、

Oracle Data Integrator

Golden Gate

Hadoop

対応機能を活用

(43)

Big Data SQL Technical Overview

(44)

Oracle Big Data SQL

• パワフルな SQL on Hadoop

– Oracle SQL

問い合わせが

Hadoop

上で使える

– Hadoop

のリソースを有効活用した

SQL

処理

• Hadoop と Oracle Database のシンプルな統合

– Exadata

にアクセスすれば、全てのデータにクエリ可能

– Hadoop

RDBMS

データの結合

• 最適化されたハードウェア

– Hadoop

用に最適化された

Big Data Appliance

上で稼働

(45)

Oracle Big Data SQL

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

(46)

どのような仕組みなのか ?

ポイント 1 :

Hive のメタデータを利用した外部表作成 ポイント 2 :

パフォーマンス最適化のための Smart Scan 機能 ポイント 3 :

アーキテクチャ

(47)

Hive (おさらい兼ねて)

• HDFS に格納されたデータに対して SQL ライクなインタフェース (HiveQL) を提供

• 様々なフォーマットに対応可能

• ファイルの保存場所やパースするための設定をメタデータとして保持

• HiveQL は内部的に MapReduce を実行

• Big Data SQL は、管理をシンプルにするために Hive のメ タデータを利用します。ただし、必須ではありません。

• Big Data SQL は、クエリの実行には Hive を利用しません。

(48)

HDFS にファイルを置きます

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

形式のログファイル

(49)

Hive 表を定義します( Schema on Read )

一つのカラムとして読み込む場合

> 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 FORMAT DELIMITED

LINES TERMINATED BY '¥n' STORED AS TEXTFILE

LOCATION '/user/oracle/applog';

Classic DDL Data source metadata

(50)

Hive 表を定義します( Schema on Read )

SerDe

を使って、カラム定義する場合

> 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';

(51)

Hive Metadata

ほとんどの

SQL on Hadoop

のエンジンは

Hive Metadata

を共有します

Hive Metastore

Hive Impala

Shark (Spark)

Oracle Big Data SQL …

Table

定義

:

movieapp_log_json movielog

movieapp_log_avro

(52)

Hive のメタデータを利用した外部表作成

CREATE TABLE movieapp_log_json (click VARCHAR2(4000))

ORGANIZATION EXTERNAL (TYPE ORACLE_HIVE

DEFAULT DIRECTORY DEFAULT_DIR )

REJECT LIMIT UNLIMITED;

Big Data Appliance

+

Exadata

+

Oracle Catalog

外部表

Hive metadata

外部表

Hive Metastore

(53)

今までの 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

など

(54)

社内検証結果:

様々な形式での動作が確認できています

分類 検証項目

HDFS

ドライバ

Hive

ドライバ

ファイル形式 テキスト

JSON

XML

正規表現(

Apache Access Log

格納方式

Sequence File

Avro

RC

ORC

圧縮

gzip , LZO

クエリ

Hadoop

内結合

Hadoop – Exadata

結合

(55)

社内検証結果 :

例) 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‘));

(56)

社内検証結果 :

例) 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

テーブル

作成

クエリ結果

・・・・

(57)

型変換

• Hive のデータ型は、以下の対応表の通り Oracle 型に変換できます

https://docs.oracle.com/cd/E55905_01/doc.40/e55814/bigsql.htm#BJEIDGHC

(58)

どのような仕組みなのか ?

ポイント 1 :

Hive のメタデータを利用した外部表作成 ポイント 2 :

パフォーマンス最適化のための Smart Scan 機能 ポイント 3 :

アーキテクチャ

(59)

Exadata でお馴染みの Smart Scan 機能を Hadoop に実装

RDBMS

Hadoop

に対するクエリ

Oracle SQL

HDFSData Node BDS Server HDFS Data Node BDS Server

Oracle Database Storage Server Oracle Database Storage Server

Fast

大規模並列分散処理 ローカルでの絞り込み 転送データの極小化

(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_HIVE

DEFAULT DIRECTORY DEFAULT_DIR )

PARALLEL 20

REJECT LIMIT UNLIMITED;

(61)

ローカルでの絞り込み・データ転送の極小化:

select last_name, state, movie, genre

from movielog m, customer c where genre=‘comedy’

and c.custid = m.custid

Hadoop

上での実行

1

NameNode/Hive Metastore

から 以下の情報取得

:

データの保持場所

データの構造

対象のブロック数

1

2

Big Data SQL Server

が並列読込み

:

• DataNode

が並列にデータアクセス

行と列の絞り込み

2

Hive Metastore HDFS

NameNode

3

データベースサーバーでの処理

関連するデータのみ転送されてくる

データベースのテーブルとジョイン

データベースセキュリティポリシーの適用

3

HDFS Data Node BDS Server

HDFS Data Node BDS Server

movielog

customer

DB

Hadoop

(62)

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

(63)

Smart Scan の実行モード 2/2

Data mode

内部処理

C

Java

データ

Hive

データ型

Oracle

データ型 処理

Oracle

データ型 処理

変換

変換

(SerDe)

変換

• Java data mode

SerDe

を利用するため、利便性に優れるものの、内部的には一度、

Hive

データ型に変換された後に、

Oracle

データ型への変換が行われるため、

C data

mode

より実行速度が劣ります。

(64)

どのような仕組みなのか ?

ポイント 1 :

Hive のメタデータを利用した外部表作成 ポイント 2 :

パフォーマンス最適化のための Smart Scan 機能 ポイント 3 :

アーキテクチャ

(65)

IB

En terpri se Manager

Oracle Big Data SQL 導入の前提条件

Big Data SQL

に接続するためには、

Exadata

上で稼働する

Oracle 12.1.0.2

上が必須になります

ハードウェア・ネットワーク

OS (Oracle Linux), JDK

Cloudera’s Distribution including Apache Hadoop

Cl oude ra Mana ger

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

で結線されている必要があります

(66)

Big Data SQL のプロセス

Data Data Data

BDSQLSRV

BDSQLRS BDSQLMS

InfiniBand

RDBMS HDFS

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

から設定変更、アラート履歴表示、メトリック表示、メンテナンス操作等を管理

(67)

ソフトウェア設定手順

項番 設定対象 設定項目 設定概要

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

を利用可能にします

5 Exadata Exadata

側での

Big Data SQL

設定

Big Data Appliance

で生成されるコマンドを、

Exadata

の各

Database Server

で実行し、

Exadata

側に

Big Data SQL

の設 定を行います

前提:

Exadata

および

Big Data Appliance

は設置済

Big Data Appliance

Version4.0

でセットアップ済み

(68)

運用・監視 (Cloudera Manager)

監視 リソース制御

Cloudera Manager

でプ ロセスのステータス監 視や起動・停止が可能

CPU

やメモリなどの リソース制御は

cgroup

により行う

(69)

Oracle Enterprise Manager と Cloudera Manager の連携方式

Big Data Appliance Enterprise Manager

(Oracle Management Service)

Enterprise Manager

for Big Data Appliance

Plugin

Cloudera Manager

サービス監視 ヘルスチェック

リソース監視 サービス設定 サービス 起動・停止 サービス追加

リソース・死活監視

インシデント管理

Cloudera Manager

からの管理が必要な項目 サーバー・スイッチ・

PDU

(70)

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

のスマートスキャン結果

(71)

Big Data SQL Demo

(72)

デモ

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

ドライバ

(73)
(74)
(75)

参照

関連したドキュメント

ⅴ)行使することにより又は当社に取得されることにより、普通株式1株当たりの新株予約権の払

ⅴ)行使することにより又は当社に取得されることにより、普通株式1株当たりの新株予約権の払

ⅴ)行使することにより又は当社に取得されることにより、普通株式1株当たりの新株予約権の払

ⅴ)行使することにより又は当社に取得されることにより、普通株式1株当たりの新株予約権の払

ⅴ)行使することにより又は当社に取得されることにより、普通株式1株当たりの新株予約権の払

ⅴ)行使することにより又は当社に取得されることにより、普通株式1株当たりの新株予約権の払

ⅴ)行使することにより又は当社に取得されることにより、普通株式1株当たりの新株予約権の払

ⅴ)行使することにより又は当社に取得されることにより、普通株式1株当たりの新株予約権の払