ビッグ・データでのクラウドSQLの使用
Oracle Cloud SQLをOracle Big Dataで使用できます。
クラウド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_HDFS
、ORACLE_HIVE
またはORACLE_BIGDATA
アクセス・ドライバを使用して、追加の外部表を定義することもできます。前者の場合、HiveデータベースがOracle Databaseスキーマにマップされ、対応するHive表がそれらのスキーマ内でOracle外部表として定義されます。すべてのデータ認可は、Hadoopの認可ルールに基づきます。たとえば、Hadoop (CDH)のCloudera Distributionを使用するクラスタ用のApache Sentry、またはHDFSアクセス制御リスト(ACL)などです。
クラウドSQL問合せサーバーでは、外部表およびビューの定義はサポートされ、データの格納はサポートされません。問合せサーバーを再起動すると、データベースはクリーンな状態にリストアされます。外部表(ORACLE_HIVE
、ORACLE_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で、Hiveデータベースのカンマ区切りリストを指定してSynchronized Hive Databases
構成パラメータを更新します。これは、問合せサーバーからすべてのHiveデータベースへのアクセスを計画していない場合にお薦めします。メタストア内のすべてのHiveデータベースを問合せサーバーと同期するには、*
ワイルドカード文字を使用します。
Apache AmbariでSynchronized Hive Databases
構成パラメータを次のように使用して、問合せサーバーと同期させるHiveデータベースのリストを更新できます。
-
ログイン資格証明を使用してApache Ambariにログインします。
-
Apache Ambariで、サイド・ツールバーの「Services」の下にある「Cloud SQL」をクリックします。
-
「Configs」タブをクリックします。
-
「Advanced metadata-sync」タブを展開します。
-
「Synchronized Hive Databases」テキスト・ボックスに、Hiveデータベースの名前をカンマで区切って入力します。例: htdb0,htdb1
-
「保存」をクリックします
Cloudera Managerで、sync_hive_db_list
構成パラメータをHiveデータベースのカンマ区切りリストで更新します。これは、問合せサーバーからすべてのHiveデータベースへのアクセスを計画していない場合にお薦めします。メタストア内のすべてのHiveデータベースを問合せサーバーと同期するには、*
ワイルドカード文字を使用します。
Cloudera Managerのsync_hive_db_list
構成パラメータを次のように使用することで、問合せサーバーと同期するようにHiveデータベースのリストを更新できます。
-
ログイン資格証明を使用してCloudera Managerにログインします。
-
Cloudera Managerで、「Search」フィールドを使用して、「Synchronized Hive Databases」構成パラメータを検索します。「Search」フィールドに「/Synchronized Hive Databases」と入力(またはリストに名前が表示されるまでその一部を入力)して、[Enter]を押します。
-
「Cloud SQL: Synchronized Hive Databases」をクリックします。
-
「Synchronized Hive Databases」テキスト・ボックスに、
htdb0,htdb1
などカンマで区切ったHiveデータベース名を入力し、「Save Changes」をクリックします。この2つのHiveデータベースのみが問合せサーバーと同期されます。