#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. |
© Copyright 2024 ExpyDoc