ビッグ・データでのクラウドSQLの使用

Oracle Cloud SQLをOracle Big Dataで使用できます。

ノート

クラウドSQLはビッグ・データには含まれません。クラウドSQLを使用するには追加料金を支払う必要があります。クラウドSQLの追加を参照してください。

クラウドSQLの概要

Oracle Cloud SQLでは、Apache Hive、HDFS、Oracle NoSQL Database、Apache Kafka、Apache HBaseおよびその他のオブジェクト・ストア(Oracle Object StoreおよびS3)など、複数のビッグ・データ・ソースに格納された非リレーショナル・データに対する問合せがサポートされています。これにより、分散データに対して統一した問合せが可能になるため、すべてOracleデータベースに格納されているかのように、異なるデータ・ストアからデータをシームレスに表示および分析できます。

クラウドSQLには、手動またはアプリケーションを介して、Hadoopエコシステム内のデータに対して複雑なOracle SQL文を実行できる問合せサーバーが用意されています。

クラウドSQLを使用すると、スケールアウト処理向けに特別に設計されたOracle外部表を拡張できます。外部表は、データベースの外部にあるデータの場所を識別して説明するOracle Databaseオブジェクトです。外部表の問合せには、他のデータベース表に対して使用するのと同じSQL SELECT構文を使用できます。

外部表は、アクセス・ドライバを使用してデータベース外部のデータを解析します。外部データの各タイプに、固有のアクセス・ドライバが必要です。クラウドSQLには、ビッグ・データ用の3つのアクセス・ドライバがあります。次のためのドライバがあります:

  • Apache Hiveでメタデータが定義されているデータ

  • HDFSに格納されたデータへのアクセス(Oracleデータ管理者のみがメタデータを指定)

  • オブジェクト・ストアに格納されたデータへのアクセス(同じく、Oracleデータ管理者のみがメタデータを指定)

クラウドSQLでは、Hiveメタストアに定義されているメタデータに対して外部表が自動的に定義されます。Hiveデータベースに対してOracle Databaseスキーマが作成され、Hive表に対して外部表が作成されます。

ビッグ・データ・クラスタでCloudera Distribution including Hadoopが使用される場合は、データへのアクセスを制御するためにCloudera Sentry認可ポリシーが使用されます。

クラウドSQLデプロイメントのコンポーネント

クラウドSQLアーキテクチャは、クラウドSQL問合せサーバーで構成されています。これは、Oracle Database 19c互換の問合せエンジンであり、ビッグ・データ・サービス・クラスタのワーカー・ノードで実行するクラウドSQLプロセス(クラウドSQLセルと呼ばれる)と連携します。問合せサーバーは、ビッグ・データ・サービスの独自のノードにインストールされます。

HDFS内のデータは未定義のフォーマットで格納されるため、SQL問合せでは、データが行および列で処理されるようにデータを解析および解釈するための構造が必要です。クラウドSQLでは、これを実行するために、使用可能なHadoop構造を利用し、特にInputFormatおよびSerDe Javaクラス、オプションでHiveメタデータ定義を使用します。DataNode上のクラウドSQL処理セルは、この汎用のHadoopインフラストラクチャの上位にあるレイヤーです。セルで提供される3つの主要な機能は、スマート・スキャン、ストレージ索引および集計オフロードです。これらの詳細は、クラウドSQL問合せ処理を参照してください。

クラウドSQL問合せサーバーについて

Oracle Cloud SQL問合せサーバーは、Oracle Big Data ServiceにクラウドSQLをインストールすると用意されるOracle Databaseインスタンスです。

クラウドSQL問合せサーバーを使用し、Oracle外部表を使用して、クラスタに格納されているデータ(HDFSおよびHiveフォーマット)を問い合せます。これにより、Oracle Databaseで提供されるSQL機能をすべて利用できます。

問合せサーバーにより、Hiveメタストア内のメタデータに基づいて、外部表が自動的に定義されます。ORACLE_HDFSORACLE_HIVEまたはORACLE_BIGDATAアクセス・ドライバを使用して、追加の外部表を定義することもできます。前者の場合、HiveデータベースがOracle Databaseスキーマにマップされ、対応するHive表がそれらのスキーマ内でOracle外部表として定義されます。すべてのデータ認可は、Hadoopの認可ルールに基づきます。たとえば、Hadoop (CDH)のCloudera Distributionを使用するクラスタ用のApache Sentry、またはHDFSアクセス制御リスト(ACL)などです。

クラウドSQL問合せサーバーでは、外部表およびビューの定義はサポートされ、データの格納はサポートされません。問合せサーバーを再起動すると、データベースはクリーンな状態にリストアされます。外部表(ORACLE_HIVEORACLE_HDFSおよびORACLE_BIGDATAタイプ)、関連する統計、ユーザー定義ビューおよび資格証明は保持されます。再起動により、ユーザー・データを含む通常の表は削除されます。

問合せサーバーをインストールするには、サービス・コンソールでビッグ・データ・サービスのオプションとしてクラウドSQLを指定する必要があります。問合せサーバーにより、問合せに備えて、Hiveメタストア・データベース内の表に対応するOracle外部表が自動的に作成されます。Apache AmbariまたはCloudera Manager管理ソフトウェアで「Restart this Cloud SQL Query Server」または「Synchronize Hive Databases」コマンドのいずれかを実行することで、問合せサーバー内の外部表のセットを、対応するHiveメタストア表と自動的に同期させることができます。dbms_bdsqs.sync_hive_databases PL/SQL APIパッケージ・プロシージャも使用できます。

重要な用語および概念

エッジ・ノード、セル・ノードおよびHadoopクラスタ統合について、少し理解しておくと役立ちます。これらの用語は、Oracle Cloud SQL Query Serverを理解する上で重要です。

エッジ・ノード
Hadoopクラスタのエッジ・ノードは、Hadoopクラスタと外部ネットワークの間のインタフェースです。エッジ・ノードは通常、クライアント・アプリケーションの実行に使用されます。エッジ・ノードは、NFSまたはHttpFSを介してHDFSアクセスを提供するか、RESTサーバーを実行することにより、データ・ゲートウェイとして機能できます。問合せサーバー・ノードは、Oracle Big Data Serviceのエッジ・ノードとみなすことができます。Hadoopデータは保存されず、このノードでは処理は実行されません。
セル・ノード

クラウドSQLセルはDataNodeで実行され、問合せ処理の一部を、データが存在するHadoopクラスタDataNodeにプッシュ・ダウンできます。これにより、処理のためにデータベースに送信する必要があるデータ量において負荷の分散と削減の両方が行われます。このため、ビッグ・データ・ワークロードのパフォーマンスが大幅に向上する可能性があります。

Hadoopクラスタ統合

クラウドSQLには、Apache AmbariまたはCloudera Managerで管理できる次の3つのサービス・ロールが含まれています:

  • クラウドSQL問合せサーバー: Hadoopクラスタに対してSQL問合せを実行できます。アプリケーションは、JDBCまたはSQL*Netを使用してこのサーバーに接続します。
  • クラウドSQLエージェント: クラウドSQLのインストールを管理します。
  • クラウドSQLサーバー: クラウドSQLセルとも呼ばれ、問合せ処理の一部を、データが存在するHadoopクラスタDataNodeにプッシュ・ダウンできます。

問合せサーバーと同期するHiveデータベースの指定

Oracle Cloud SQL Query Serverと同期するHiveデータベースを制御できます。このことは、Hiveデータベースおよび表が数多くあるが、その一部のデータベースおよび表に対してのみSQLアクセスが必要な場合に、特に重要になります。データベースおよび表の数を少なくすると、Hiveメタデータと問合せサーバーとの同期が高速になります。

ノート

クラウドSQL問合せサーバーは、内部データをOracle表に格納することを目的としたものではありません。問合せサーバーが再起動されるたびに、初期状態およびクリーンアップ状態にリセットされます。これにより、ストレージ管理やデータベース構成などの一般的なデータベース・メンテナンスが不要になります。問合せサーバーの目的は、Hadoop、オブジェクト・ストア、KafkaおよびNoSQLデータベース内のデータに対してSQLフロント・エンドを提供することです。問合せサーバーは、汎用のRDBMSではありません。
Apache Ambariの使用

Apache Ambariで、Hiveデータベースのカンマ区切りリストを指定してSynchronized Hive Databases構成パラメータを更新します。これは、問合せサーバーからすべてのHiveデータベースへのアクセスを計画していない場合にお薦めします。メタストア内のすべてのHiveデータベースを問合せサーバーと同期するには、*ワイルドカード文字を使用します。

Apache AmbariでSynchronized Hive Databases構成パラメータを次のように使用して、問合せサーバーと同期させるHiveデータベースのリストを更新できます。

  1. ログイン資格証明を使用してApache Ambariにログインします。

  2. Apache Ambariで、サイド・ツールバーの「Services」の下にある「Cloud SQL」をクリックします。

  3. 「Configs」タブをクリックします。

  4. 「Advanced metadata-sync」タブを展開します。

  5. 「Synchronized Hive Databases」テキスト・ボックスに、Hiveデータベースの名前をカンマで区切って入力します。例: htdb0,htdb1

  6. 「保存」をクリックします

Cloudera Managerの使用

Cloudera Managerで、sync_hive_db_list構成パラメータをHiveデータベースのカンマ区切りリストで更新します。これは、問合せサーバーからすべてのHiveデータベースへのアクセスを計画していない場合にお薦めします。メタストア内のすべてのHiveデータベースを問合せサーバーと同期するには、*ワイルドカード文字を使用します。

Cloudera Managerのsync_hive_db_list構成パラメータを次のように使用することで、問合せサーバーと同期するようにHiveデータベースのリストを更新できます。

  1. ログイン資格証明を使用してCloudera Managerにログインします。

  2. Cloudera Managerで、「Search」フィールドを使用して、「Synchronized Hive Databases」構成パラメータを検索します。「Search」フィールドに「/Synchronized Hive Databases」と入力(またはリストに名前が表示されるまでその一部を入力)して、[Enter]を押します。

  3. 「Cloud SQL: Synchronized Hive Databases」をクリックします。

  4. 「Synchronized Hive Databases」テキスト・ボックスに、htdb0,htdb1などカンマで区切ったHiveデータベース名を入力し、「Save Changes」をクリックします。この2つのHiveデータベースのみが問合せサーバーと同期されます。