Oracle® Big Data Appliance

ソフトウェア・ユーザーズ・ガイド

リリース4 (4.3)

E70116-01(原本部品番号:E65665-02)

2015年10月

管理者およびソフトウェア開発者が入手できるOracle Big Data Applianceソフトウェアを説明します。

Oracle Big Data Applianceソフトウェア・ユーザーズ・ガイド, リリース4 (4.3)

E70116-01

Copyright © 2011, 2015, Oracle and/or its affiliatesAll rights reserved.

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供される場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXはThe Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- 関連ドキュメント

- 表記規則

- バッカス・ナウア記法の構文

第I部 管理

1 Oracle Big Data Applianceの概要

- 1.1 ビッグ・データとは

- 1.1.1 多様性

- 1.1.2 高い複雑性

- 1.1.3 大量

- 1.1.4 高速度

- 1.2 Oracleのビッグ・データ・ソリューション

- 1.3 ビッグ・データ用のソフトウェア

- 1.3.1 ソフトウェア・コンポーネントの概要

- 1.4 分析用データの取得

- 1.4.1 Hadoop Distributed File System

- 1.4.2 Apache Hive

- 1.4.3 Oracle NoSQL Database

- 1.5 ビッグ・データの体系化

- 1.5.1 MapReduce

- 1.5.2 Oracle Big Data SQL

- 1.5.3 Oracle Big Data Connectors

- 1.5.4 ビッグ・データに対するRのサポート

- 1.6 ビッグ・データの分析と視覚化

2 Oracle Big Data Applianceの管理

- 2.1 Oracle Enterprise Managerを使用した複数のクラスタの監視

- 2.1.1 Enterprise Manager Webインタフェースの使用

- 2.1.2 Enterprise Managerコマンドライン・インタフェースの使用

- 2.2 Cloudera Managerを使用した操作の管理

- 2.2.1 Oracle Big Data Applianceのステータスの監視

- 2.2.2 管理タスクの実行

- 2.2.3 Cloudera Managerを使用したCDHサービスの管理

- 2.3 Hadoop監視ユーティリティの使用方法

- 2.3.1 MapReduceジョブの監視

- 2.3.2 HDFSの状態の監視

- 2.4 Cloudera Hueを使用したHadoopの操作

- 2.5 Oracle Big Data Applianceソフトウェアについて

- 2.5.1 ソフトウェア・コンポーネント

- 2.5.2 未構成のソフトウェア

- 2.5.3 サービス間でのリソースの割当て

- 2.6 CDHソフトウェア・サービスについて

- 2.6.1 シングルラックCDHクラスタ上でサービスが実行される場所

- 2.6.2 マルチラックCDHクラスタ上でサービスが実行される場所

- 2.6.3 MapReduceについて

- 2.6.4 NameNodeの自動フェイルオーバー

- 2.6.5 ResourceManagerの自動フェイルオーバー

- 2.6.6 MapとReduceのリソース構成

- 2.7 ソフトウェアの可用性に与えるハードウェアの影響

- 2.7.1 論理ディスク・レイアウト

- 2.7.2 クリティカルおよび非クリティカルCDHノード

- 2.7.3 第1NameNodeノード

- 2.7.4 第2NameNodeノード

- 2.7.5 第1ResourceManagerノード

- 2.7.6 第2ResourceManagerノード

- 2.7.7 非クリティカルCDHノード

- 2.8 ハードウェア障害の管理

- 2.8.1 Oracle NoSQL Databaseクラスタについて

- 2.8.2 障害が発生しているノードを管理するための前提条件

- 2.8.3 障害が発生しているCDHクリティカル・ノードの管理

- 2.8.4 障害が発生している非クリティカル・ノードの管理

- 2.9 Oracle Big Data Applianceの停止および起動

- 2.9.1 前提条件

- 2.9.2 Oracle Big Data Applianceの停止

- 2.9.3 Oracle Big Data Applianceの起動

- 2.10 Oracle Big Data SQLの管理

- 2.10.1 Oracle Big Data SQLサービスの追加および削除

- 2.10.2 Oracle Big Data SQLへのリソースの割当て

- 2.11 Oracle Big Data Applianceのセキュリティ

- 2.11.1 事前定義済のユーザーおよびグループについて

- 2.11.2 ユーザー認証について

- 2.11.3 ファイングレイン認証について

- 2.11.4 HDFSでの透過的暗号化について

- 2.11.5 HTTPS/ネットワーク暗号化について

- 2.11.6 Oracle Big Data Applianceで使用されるポート番号

- 2.11.7 Puppetのセキュリティについて

- 2.12 Oracle Big Data Applianceの監査

- 2.12.1 Oracle Audit Vault and Database Firewallについて

- 2.12.2 Oracle Big Data Applianceプラグインの設定

- 2.12.3 Oracle Big Data Applianceの監視

- 2.13 オラクル社カスタマ・サポートに提供する診断情報の収集

3 Oracle Big Data Applianceへのユーザー・アクセスのサポート

- 3.1 Kerberosで保護されたクラスタへのアクセスについて

- 3.2 CDHへのリモート・クライアント・アクセスの提供

- 3.2.1 前提条件

- 3.2.2 サポートされているすべてのオペレーティング・システムにCDHクライアントをインストールする

- 3.2.3 保護されていないクラスタ用のCDHクライアントの構成

- 3.2.4 Kerberosで保護されたクラスタ用のCDHクライアントの構成

- 3.2.5 CDHクライアントからクラスタへのアクセス権の確認

- 3.3 Hiveへのリモート・クライアント・アクセスの提供

- 3.4 ユーザー・アカウントの管理

- 3.4.1 Hadoopクラスタ・ユーザーの作成

- 3.4.2 ユーザー・ログイン権限の付与(オプション)

- 3.5 削除されたファイルのリカバリ

- 3.5.1 ごみ箱からのファイルのリストア

- 3.5.2 ごみ箱を空にする間隔の変更

- 3.5.3 ごみ箱機能の無効化

4 Oracle Big Data Applianceと併用するためのOracle Exadata Database Machineの構成

- 4.1 通信の最適化について

- 4.1.1 Oracle Exadata Database Machineにデータをプルするアプリケーションについて

- 4.1.2 Oracle Exadata Database Machineにデータをプッシュするアプリケーションについて

- 4.2 通信の最適化の前提条件

- 4.3 Oracle Big Data Applianceへのインフィニバンド接続の指定

- 4.4 Oracle Exadata Database Machineへのインフィニバンド接続の指定

- 4.5 Exadata DatabaseノードでのSDPの有効化

- 4.6 インフィニバンド・ネットワーク上でのSDPリスナーの作成

第II部 Oracle Big Data Applianceソフトウェア

5 Perfect Balanceを使用したMapReduceジョブの最適化

- 5.1 Perfect Balanceとは

- 5.1.1 マップおよびリデュース・タスク間でのジョブの均衡化について

- 5.1.2 Perfect Balance機能の使用方法

- 5.1.3 Perfect Balanceのコンポーネント

- 5.2 アプリケーション要件

- 5.3 Perfect Balanceの概要

- 5.4 ジョブのリデューサ・ロードの分析

- 5.4.1 Job Analyzerについて

- 5.4.2 Job Analyzerをスタンドアロン・ユーティリティとして実行する

- 5.4.3 Perfect Balanceを使用したJob Analyzerの実行

- 5.4.4 Job Analyzerレポートの分析

- 5.5 Perfect Balanceの構成について

- 5.6 Perfect Balanceを使用したBalanced MapReduceジョブの実行

- 5.7 Perfect Balanceレポートについて

- 5.8 分割について

- 5.8.1 分割方法の選択

- 5.8.2 分割がアプリケーションに及ぼす影響

- 5.9 Perfect Balanceで実行されているジョブのトラブルシューティング

- 5.10 Perfect Balance APIの使用

- 5.10.1 Perfect Balanceを使用するためのJavaコードの変更

- 5.10.2 変更したJavaコードとPerfect Balanceの実行

- 5.11 Perfect Balanceの例について

- 5.11.1 この章の例について

- 5.11.2 例データ・セットの抽出

- 5.12 Perfect Balance構成プロパティ・リファレンス

第III部 Oracle Big Data SQL

6 データ・アクセスのためのOracle Big Data SQLの使用

- 6.1 Oracle Big Data SQLとは

- 6.1.1 Oracle外部表について

- 6.1.2 Oracle Big Data SQLのアクセス・ドライバについて

- 6.1.3 Smart Scanテクノロジについて

- 6.1.4 ストレージ索引について

- 6.1.5 Oracle Big Data SQLを使用したデータ・セキュリティについて

- 6.2 Oracle Big Data SQLのインストール

- 6.2.1 Oracle Big Data SQLを使用するための前提条件

- 6.2.2 インストールの実行

- 6.2.3 Oracle Big Data SQLのインストール後スクリプトの実行

- 6.2.4 Kerberos化されたクラスタへのOracle Big Data SQLアクセスの有効化

- 6.3 HiveデータのOracle外部表の作成

- 6.3.1 Hive表に関する情報の取得

- 6.3.2 CREATE_EXTDDL_FOR_HIVE関数の使用

- 6.3.3 ORACLE_HIVEのCREATE TABLE文の作成

- 6.4 Oracle NoSQL DatabaseのOracle外部表の作成

- 6.4.1 Oracle NoSQL DatabaseのHive外部表の作成

- 6.4.2 Oracle NoSQLデータのOracle Database表の作成

- 6.4.3 列データ型マッピングについて

- 6.4.4 Oracle NoSQL Databaseのデータのアクセス例

- 6.5 Apache HBaseのOracle外部表の作成

- 6.5.1 HBaseのHive外部表の作成

- 6.5.2 HBaseのOracle Database表の作成

- 6.6 HDFSファイルのOracle外部表の作成

- 6.6.1 デフォルトのアクセス・パラメータとORACLE_HDFSの使用

- 6.6.2 ORACLE_HDFSのデフォルト設定の上書き

- 6.7 SQL CREATE TABLE文について

- 6.7.1 基本的な構文

- 6.7.2 外部表の句について

- 6.8 データ型変換について

- 6.9 外部表の問合せ

- 6.9.1 ユーザー・アクセス権の付与

- 6.9.2 エラー処理の概要

- 6.9.3 ログ・ファイルについて

- 6.10 Oracle Exadata Database Machine上のOracle Big Data SQLについて

- 6.10.1 Big Data SQLエージェントの起動および停止

- 6.10.2 共通ディレクトリについて

- 6.10.3 一般的な構成プロパティ

- 6.10.4 クラスタ・ディレクトリについて

- 6.10.5 権限について

7 Oracle Big Data SQLリファレンス

- 7.1.1 DBMS_HADOOP PL/SQLパッケージ

- 7.1.1.1 CREATE_EXTDDL_FOR_HIVE

- 7.1.2 CREATE TABLE ACCESS PARAMETERS句

- 7.1.2.1 プロパティを指定するための構文ルール

- 7.1.2.2 ORACLE_HDFSアクセス・パラメータ

- 7.1.2.3 ORACLE_HIVEアクセス・パラメータ

- 7.1.2.4 com.oracle.bigdata.colmap

- 7.1.2.5 com.oracle.bigdata.datamode

- 7.1.2.6 com.oracle.bigdata.erroropt

- 7.1.2.7 com.oracle.bigdata.fields

- 7.1.2.8 com.oracle.bigdata.fileformat

- 7.1.2.9 com.oracle.bigdata.log.exec

- 7.1.2.10 com.oracle.bigdata.log.qc

- 7.1.2.11 com.oracle.bigdata.overflow

- 7.1.2.12 com.oracle.bigdata.rowformat

- 7.1.2.13 com.oracle.bigdata.tablename

- 7.1.3 Hiveの静的データ・ディクショナリ・ビュー

- 7.1.3.1 ALL_HIVE_DATABASES

- 7.1.3.2 ALL_HIVE_TABLES

- 7.1.3.3 ALL_HIVE_COLUMNS

- 7.1.3.4 DBA_HIVE_DATABASES

- 7.1.3.5 DBA_HIVE_TABLES

- 7.1.3.6 DBA_HIVE_COLUMNS

- 7.1.3.7 USER_HIVE_DATABASES

- 7.1.3.8 USER_HIVE_TABLES

- 7.1.3.9 USER_HIVE_COLUMNS

8 HadoopへのOracle表のコピー

- 8.1 Copy to BDAとは

- 8.2 Copy to BDAの使用の概要

- 8.3 Copy to BDAのインストール

- 8.3.1 Copy to BDAの前提条件

- 8.3.2 Oracle Big Data ApplianceのCopy to BDAのインストール

- 8.3.3 Oracle Exadata Database MachineのCopy to BDAのインストール

- 8.4 データ・ポンプ・ファイルの生成

- 8.4.1 データ・ポンプ形式ファイルについて

- 8.4.2 ターゲット・ディレクトリの識別

- 8.4.3 CREATE TABLE構文について

- 8.4.4 HDFSへのファイルのコピー

- 8.5 Hive表の作成

- 8.5.1 Hive外部表について

- 8.5.2 列マッピングの概要

- 8.5.3 データ型変換について

- 8.6 サンプル・スキーマの使用例

- 8.6.1 サンプル・データについて

- 8.6.2 EXPDIR Databaseディレクトリの作成

- 8.6.3 顧客データのデータ・ポンプ形式ファイルの作成

- 8.6.4 データ・ファイルの内容の確認

- 8.6.5 Hadoopへのファイルのコピー

- 8.6.6 Hive外部表の作成

- 8.6.7 Hiveのデータの問合せ

第IV部 Oracle Table Access for Hadoop and Spark

9 Oracle Table Access for Hadoop and Spark (OTA4H)

- 9.1 業務系データ、ビッグ・データおよび要件

- 9.2 Oracle Table Access for Hadoop and Spark (OTA4H)の概要

- 9.2.1 Hadoop 2.xを活用できる状況

- 9.2.2 Hadoopデータ・ソースとしてのOracle表

- 9.2.3 外部表

- 9.2.5 Hiveでの外部表の作成

- 9.3 OTA4Hの動作方法

- 9.3.1 新しいOracle Database表の作成

- 9.3.2 Hive DDL

- 9.4 OTA4Hの機能

- 9.4.1 パフォーマンスおよびスケーラビリティ機能

- 9.4.2 スマート接続管理

- 9.4.3 セキュリティ機能

- 9.5 OTA4HでのHiveQLの使用方法

- 9.6 OTA4HでのSpark SQLの使用方法

用語集

索引

はじめに

『Oracle Big Data Applianceソフトウェア・ユーザーズ・ガイド』では、インストールされたソフトウェアの管理方法と使用方法について説明しています。

対象読者

このガイドは、次のOracle Big Data Applianceユーザーを対象としています。

- アプリケーション開発者

- データ・アナリスト

- データ科学者

- データベース管理者

- システム管理者

『Oracle Big Data Applianceソフトウェア・ユーザーズ・ガイド』には、Oracle Big Data Applianceによってインストールされるソフトウェア、機能、概念および用語が記載されています。ただし、Hadoopクラスタの管理やMapReduceプログラムの作成方法について必要な情報は、別のソースから入手する必要があります。

関連ドキュメント

詳細は、次のドキュメントを参照してください。

- Oracle Big Data Appliance Perfect Balance Java APIリファレンス

- 『Oracle Enterprise Manager System Monitoring Plug-inインストレーション・ガイドfor Oracle Big Data Appliance』

- 『Oracle Big Data Applianceオーナーズ・ガイド』

- 『Oracle Big Data Connectorsユーザーズ・ガイド』

表記規則

このマニュアルでは次の表記規則を使用します。

表記規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

#プロンプト

ナンバー記号(#)プロンプトは、Linux rootユーザーとして実行されるコマンドを示します。

バッカス・ナウア記法の構文

このリファレンスの構文は、次の記号と表記規則を使用するバッカスナウア記法(BNF)の単純なバリエーションで示されます。

記号または表記規則

説明

[ ]

大カッコは、オプション項目を囲みます。

{ }

中カッコは、選択項目を囲み、そのうち1つのみが必須です。

|

縦線は、大カッコまたは中カッコ内の代替項目を区切ります。

...

省略記号は、先行する構文要素を反復できることを示します。

デリミタ

大カッコ、中カッコおよび縦線以外のデリミタは、記載されているとおりに入力する必要があります。

太字

太字で示されている語は、キーワードです。それらは記載されているとおりに入力する必要があります。(キーワードは、一部のオペレーティング・システムでは大/小文字の区別があります。)太字ではない語は、名前または値に置換する必要があるプレースホルダです。

第I部 管理

この部では、Oracle Big Data Applianceについて説明し、ルーチン管理タスクの手順を示します。ここには次の章が含まれます。

- Oracle Big Data Applianceの概要

- Oracle Big Data Applianceの管理

- Oracle Big Data Applianceへのユーザー・アクセスのサポート

- Oracle Big Data Applianceと併用するためのOracle Exadata Database Machineの構成

1 Oracle Big Data Applianceの概要

この章では、Oracle Big Data Applianceの概要およびシステムにインストールされるソフトウェアについて説明します。この章は次の項で構成されています:

- ビッグ・データとは

- Oracleのビッグ・データ・ソリューション

- ビッグ・データ用のソフトウェア

- 分析用データの取得

- ビッグ・データの体系化

- ビッグ・データの分析と視覚化

1.1 ビッグ・データとは

トランザクション型データをビジネス・インテリジェンスのソースとして使用する方法は、何年にもわたって一般的に利用されてきました。デジタル・テクノロジとワールド・ワイド・ウェブが現代生活のあらゆる局面に浸透するにつれ、これ以外のデータ・ソースがビジネスの意思決定に大きく貢献する可能性があります。多くの企業がそのような新しいデータ・ソースを求めています。つい最近まで捨てられていた大量のデータを分析することに商機を見いだそうとしているのです。

ビッグ・データの特徴は次のとおりです。

- 様々なデータ・ソース: 多様性

- データ型の複雑性: 高い複雑性

- 大量のデータ・フロー: 大量

- 高速のデータ・トランザクション: 高速度

これらの特徴によって、ビッグ・データから価値を生み出す上での課題と、ビッグ・データと従来のデータ・ソース(主に高度に構造化されたトランザクション型データを提供)との違いが明らかになります。

1.1.1 多様性

ビッグ・データは次のような様々なソースから取得されます。

- 機器センサー: 医療、製造、輸送などの機械センサーからの伝送

- 機械: 通話詳細レコード、Webログ、スマート・メーター読取り、グローバル・ポジショニング・システム(GPS)伝送、取引システム・レコード

- ソーシャル・メディア: Facebookなどのソーシャル・メディア・サイトやTwitterなどのブログ・サイトからのデータ・ストリーム

アナリストはこのデータのマイニングを繰り返すことで、有益な洞察を抽出する新しい方法を考案できます。現在は無関係のように見える情報でも、将来的にはビジネスに深く関係する可能性があります。

課題: このような多様性に対応できる柔軟なシステムを導入する

1.1.2 高い複雑性

データの種類が増えるにつれて、システムはますます複雑になります。データの種類が複雑になると、あまり構造化されていない性質のために、ビッグ・データの量も増加します。

課題: 幅広いデータ・タイプに適用できるソリューションを見つけること。

1.1.3 大量

ソーシャル・メディアでは、毎日TB単位のデータが生成される可能性があります。機器センサーやその他の機械では、同量のデータが1時間足らずで生成される場合があります。

たとえば顧客関係管理(CRM)システムからの顧客プロファイル、トランザクション型の統合基幹業務システム(ERP)データ、ストア・トランザクション、総勘定元帳データといった、従来のデータ・ウェアハウスのデータ・ソースでさえも、過去10年間で容量が10倍に増加しています。

課題: 拡大するシステムに拡張性と使いやすさをもたらす

1.1.4 高速度

大量のセンサー、Webログ、その他の機械などのソースは、個人がトランザクション型データベースに発注情報を入力するような従来のソースよりもきわめて高速にデータを生成し続けています。

課題: 構造化システムに負荷をかけずにデータを高速処理する

1.2 Oracleのビッグ・データ・ソリューション

Oracle Big Data Applianceは、ハードウェアとソフトウェアのコンポーネントを組み合せたエンジニアド・システムです。ハードウェアはビッグ・データ用ソフトウェア・コンポーネントの拡張機能を実行するために最適化されています。

Oracle Big Data Applianceでは、次のことを実現します。

- ビッグ・データ用に最適化された完全なソリューション

- ハードウェアとソフトウェアを1つのベンダーでサポート

- デプロイが容易なソリューション

- Oracle DatabaseおよびOracle Exadata Database Machineとの緊密な連携

Oracleでは、様々なデータ・ソースから企業内に流入する膨大で複雑なデータ・ストリームの取得、体系化および深い分析のサポートを可能にする、ビッグ・データ用プラットフォームを提供しています。データ構造、ワークロードの特性、およびエンドユーザー要件に基づいて、最適なストレージ・ロケーションと処理ロケーションを選択できます。

Oracle Databaseによって、大規模なユーザー・コミュニティは同じ方法を使用して、すべてのデータにアクセスし分析することが可能です。Oracle Databaseの前にOracle Big Data Applianceを追加することで、既存のデータ・ウェアハウスに新しい情報ソースを提供できます。Oracle Big Data Applianceは、真のビジネス価値を持つ関連情報をOracle Databaseで分析できるように、ビッグ・データを取得および体系化するためのプラットフォームです。

高速度と効率性を最大化するため、Oracle Big Data Applianceは、Oracle Databaseを実行しているOracle Exadata Database Machineに接続できます。Oracle Exadata Database Machineは、データ・ウェアハウスのホスティングやデータベースのトランザクション処理に卓越したパフォーマンスを発揮します。さらに、Oracle Exalytics In-Memory Machineに接続して、ビジネス・インテリジェンスおよびビジネス・プランニング・アプリケーションに最適なパフォーマンスを実現できます。このようなエンジニアド・システム間の接続はインフィニバンドを経由しているため高度に並列化され、バッチや問合せワークロードの高速データ転送が可能です。

図1-1は、このようなエンジニアド・システム間の関係を示しています。

図1-1 ビッグ・データ用Oracleエンジニアド・システム

1.3 ビッグ・データ用のソフトウェア

Oracle Linuxオペレーティング・システムおよびCloudera's Distribution including Apache Hadoop (CDH)は、Oracle Big Data Applianceにインストールされたその他すべてのソフトウェア・コンポーネントの基礎となります。CDHは、連携して機能するようにテストおよびパッケージ化された各種コンポーネントの包括的なスタックです。

CDHはバッチ処理インフラストラクチャを備え、ファイルの格納と複数のコンピュータにまたがったワークロードの分散が可能です。データは格納されているコンピュータ上で処理されます。Oracle Big Data Applianceの単一ラック環境では、CDHによって、クラスタを構成している18台のサーバー全体にファイルとワークロードが分散されます。各サーバーはクラスタ内のノードです。

ソフトウェア・フレームワークは次の主要コンポーネントで構成されます。

- ファイル・システム: Hadoop Distributed File System (HDFS)は、サイズの大きいファイルを複数のサーバーにまたがって格納する、拡張性に優れたファイル・システムです。RAIDテクノロジを使用せずに、複数のサーバー間でデータをレプリケートすることにより、信頼性を実現します。Oracle Big Data Appliance上のLinuxファイル・システムの最上位で実行されます。

- MapReduceエンジン: MapReduceエンジンは、Javaで記述されたアルゴリズムの大規模な並列実行に対応したプラットフォームを提供します。Oracle Big Data Appliance 3.0は、デフォルトでYARNを実行します。

- 管理フレームワーク: Cloudera Managerは、CDHのための包括的な管理ツールです。Oracle Enterprise Managerを使用すると、Oracle Big Data Appliance上のハードウェアとソフトウェアの両方を監視することもできます。

- Apacheプロジェクト: CDHには、Hive、Pig、Oozie、ZooKeeper、HBase、Sqoop、Sparkなど、MapReduceおよびHDFS用のApacheプロジェクトが含まれています。

- Clouderaアプリケーション: Oracle Big Data Applianceは、Cloudera Enterprise Data Hub Editionに含まれるすべての製品(Impala、Search、Navigatorなど)をインストールします。

CDHはJavaで記述され、Javaはアプリケーション開発言語です。ただし、一部のCDHユーティリティやOracle Big Data Applianceで使用可能なその他のソフトウェアは、使いやすいように、別の言語を使用したWebベースのグラフィカル・インタフェースを備えています。

1.3.1 ソフトウェア・コンポーネントの概要

主要ソフトウェア・コンポーネントは、次に示す3つの基本タスクを実行します。

- 取得

- 体系化

- 分析と視覚化

それぞれのタスクに最適なツールは、情報の密度と構造化の程度によって異なります。図1-2は、ツール間の関係とそれぞれが実行するタスクを示しています。

図1-2 Oracle Big Data Applianceソフトウェアの概要

1.4 分析用データの取得

オンライン・トランザクション処理(OLTP)に使用されているデータベースは、従来のデータ・ウェアハウスのデータ・ソースです。Oracleのソリューションでは、同じOracleデータ・ウェアハウス内で従来のデータ・ストアとビッグ・データの分析が可能です。リレーショナル・データは、Oracle Big Data Applianceとは別のハードウェア上で実行されていても、ビジネス・インテリジェンスの重要なソースであることにかわりありません。

Oracle Big Data Applianceは、ビッグ・データを取得および格納するための次の機能を備えています。

- Hadoop Distributed File System

- Apache Hive

- Oracle NoSQL Database

1.4.1 Hadoop Distributed File System

Oracle Big Data Appliance上のCloudera's Distribution including Apache Hadoop (CDH)では、Hadoop Distributed File System (HDFS)を使用します。HDFSは、レコード指向データを含む非常に大きなファイルを格納します。Oracle Big Data Appliance上で、HDFSは大きなデータ・ファイルを256メガバイト(MB)のチャンクに分割し、各チャンクをクラスタ内の3つの異なるノードにレプリケートします。チャンクのサイズとレプリケーション数は構成可能です。

チャンク化により、HDFSでは、1つのサーバーの物理ストレージよりも大きなファイルを格納できるようになります。また、複数のコンピュータを使用し、マルチ・プロセッサでデータを並列処理(それぞれがローカルに格納されているデータを処理)することも可能です。レプリケーションにより、1台のサーバーに障害が発生しても、別のサーバーがそのワークロードを自動的に引き継ぐので、データの高可用性が実現します。

HDFSは通常、あらゆるタイプのビッグ・データの格納に使用されます。

関連項目:

- Hadoopテクノロジの概念的な情報は、サードパーティの次の文献を参照してください。
『Hadoop: The Definitive Guide, Third Edition』Tom White著(O'Reilly Media Inc., 2012, ISBN: 978-1449311520)。

- Cloudera's Distribution including Apache Hadoopのドキュメントの詳細は、次のClouderaライブラリを参照してください。
http://oracle.cloudera.com/

1.4.2 Apache Hive

Hiveはオープンソース・データ・ウェアハウスで、HDFS内に格納されているデータのデータ要約、アドホック問合せおよびデータ分析をサポートします。HiveQLと呼ばれるSQLライクな言語を使用します。インタプリタによって、HiveQL問合せからMapReduceコードが生成されます。Hiveにデータを格納することにより、MapReduceプログラムをJavaで記述しないですみます。

HiveはCDHのコンポーネントで、常にOracle Big Data Applianceにインストールされます。Oracle Big Data Connectorsは、Hive表にアクセスできます。

1.4.3 Oracle NoSQL Database

Oracle NoSQL Databaseは、実績が証明されているストレージ・テクノロジBerkeley DB Java Editionに基づく分散キー/値データベースです。HDFSが非構造化データの非常に大きなファイルを格納するのに対して、Oracle NoSQL Databaseでは、データの索引付けとトランザクションをサポートします。ただし、高度に構造化されたデータを格納するOracle Databaseとは異なり、Oracle NoSQL Databaseは、特にストレージ・ノード全体にわたって、一貫性のルールも緩やかで、スキーマ構造はなく、結合に対してごく限られたサポートしかしていません。

NoSQLデータベース(Not Only SQLデータベース)は、過去10年間にわたりビッグ・データの格納に特化して開発されてきました。ただし、実装方法は様々です。Oracle NoSQL Databaseには、次の特徴があります。

- システム定義で一貫性のあるハッシュ索引を使用したデータ分散

- レプリケーションによる高可用性のサポート

- 緩やかな一貫性保証による単一レコード、単一操作のトランザクションの実現

- Java APIを搭載

Oracle NoSQL Databaseは、信頼性、拡張性、予測可能性および可用性に優れたデータ格納を実現するように設計されています。キー/値のペアは、主キーに基づき、断片またはパーティション(データのサブセットのこと)に格納されます。各断片上のデータを複数のストレージ・ノードにレプリケートすることで高可用性を確保します。Oracle NoSQL Databaseは、一般にはキー検索によるデータの高速問合せをサポートします。

インテリジェント・ドライバによってNoSQLデータベースとクライアント・アプリケーションが接続され、ストレージ・ノード上の要求されたキー/値に最小のレイテンシでアクセスできるようになります。

Oracle NoSQL Databaseは、適切なデータ分散と最適なロード・バランシングを実現するハッシング・アルゴリズムとバランシング・アルゴリズム、ストレージ・ノードの障害とリカバリを処理するレプリケーション管理コンポーネント、およびデータベースの状態を監視する使いやすい管理インタフェースを備えています。

Oracle NoSQL Databaseは通常、ビッグ・データの識別と分析のための、顧客プロファイルや類似するデータの格納に使用されます。たとえば、Webサイトにログインすると、格納されている顧客プロファイル(Oracle NoSQL Databaseのレコード)と最近のサイト上でのアクティビティ(現在HDFSにストリーミングされているWebログ)に基づいて広告が表示されるような場合に使用されます。

Oracle NoSQL Databaseは、Oracle Big Data Applianceのオプションのコンポーネントであり、CDHとは別のクラスタ上で実行されます。

関連項目:

- 次のサイトでOracle NoSQL Databaseスタート・ガイドを参照してください
http://docs.oracle.com/cd/NOSQL/html/index.html

- Oracle Big Data Applianceライセンス情報

1.5 ビッグ・データの体系化

Oracle Big Data Applianceは、次のような、ビッグ・データを分析用に体系化、変換およびリデュースする方法を備えています。

- MapReduce

- Oracle Big Data SQL

- Oracle Big Data Connectors

- ビッグ・データに対するRのサポート

1.5.1 MapReduce

MapReduceエンジンは、Javaで記述されたアルゴリズムの大規模な並列実行に対応したプラットフォームを提供します。MapReduceは、並列プログラミング・モデルを使用して、分散システムのデータ処理を行います。大量のデータを迅速に処理し、線形的に拡張できます。非構造化および半構造化データのバッチ処理メカニズムとして特に有効です。MapReduceは、低レベルの操作を一連のキーと値の計算に抽象化します。

ビッグ・データは通常、非構造化と説明されていますが、入力データは常になんらかの構造を持っています。ただし、HDFSに書き込まれるときは、固定の事前定義された構造は持っていません。かわりに、MapReduceでは、特定のジョブのデータを読み込む際に、必要な構造を作成します。同じデータでも、MapReduceのジョブが異なれば、様々な構造を持っている可能性があります。

MapReduceジョブを簡単に説明すると、2つのフェーズ(MapフェーズとReduceフェーズ)の交互の繰返しといえます。各Mapフェーズでは、入力データのレコードごとに変換関数を適用し、キー/値のペアで表された一連のレコードが生成されます。Mapフェーズからの出力がReduceフェーズへの入力になります。Reduceフェーズでは、Mapの出力レコードがキー/値のセットにソートされ、1つのセット内ではすべてのレコードが同じキー値を持ちます。リデューサ関数がセット内の全レコードに適用され、キー/値のペアからなる一連の出力レコードが生成されます。Mapフェーズがレコードごとに論理的に並列実行されるのに対して、Reduceフェーズはすべてのキー値にわたって並列実行されます。

注意:

Oracle Big Data Applianceは、MapReduceのYet Another Resource Negotiator (YARN)実装を使用します。

1.5.2 Oracle Big Data SQL

Oracle Big Data SQLは、Apache Hive、HDFS、Oracle NoSQL Database、Apache HBaseなどの複数のデータ・ソースに格納された大量のビッグ・データに対する問合せをサポートしています。様々なデータ・ストアのすべてのデータを、Oracleデータベースに格納されているかのようにまとめて表示および分析できます。

Oracle Big Data SQLを使用すると、完全なSQL構文を使用してHadoopクラスタに格納されたデータを問い合せることができます。手動で、または既存のアプリケーションを使用して、Hadoop内のデータに対して最も複雑なSQL SELECT文を実行し、最も重要な洞察を引き出すことができます。

Oracle Big Data SQLは、Oracle Big Data Applianceとは別にライセンス供与されます。

関連項目:

Oracle Big Data SQL

1.5.3 Oracle Big Data Connectors

Oracle Big Data Connectorsを使用すると、CDHとOracle Databaseに格納されているデータ間のデータ・アクセスが簡単になります。コネクタはOracle Big Data Applianceとは別にライセンス供与され、次のものが含まれます。

- Oracle SQL Connector for Hadoop Distributed File System

- Oracle Loader for Hadoop

- Oracle XQuery for Hadoop

- Oracle R Advanced Analytics for Hadoopの説明は次のとおりです。

- Oracle Data Integrator

関連項目:

『Oracle Big Data Connectorsユーザーズ・ガイド』

1.5.3.1 Oracle SQL Connector for Hadoop Distributed File System

Oracle SQL Connector for Hadoop Distributed File System (Oracle SQL Connector for HDFS)は、外部表を使用してOracleデータベースからHDFSへの読取りアクセスを提供します。

外部表は、データベース外のデータの場所を識別するOracle Databaseオブジェクトです。Oracle Databaseは、外部表の作成時に指定されたメタデータを使用してデータにアクセスします。外部表への問合せによって、ユーザーは、データがデータベースの表に格納されている場合と同様に、HDFSに格納されているデータにアクセスできます。外部表は、データベースのロード時にデータをステージングして変換するために使用されることが多くあります。

Oracle SQL Connector for HDFSを使用すると、次のことができます。

- HDFSファイルに格納されているデータへのアクセス

- Hive表へのアクセス。

- Oracle Loader for Hadoopによって生成されたアクセス・データ・ポンプ・ファイル

- Oracle Data Integratorによって抽出および変換されたデータのロード

1.5.3.2 Oracle Loader for Hadoop

Oracle Loader for Hadoopは、HadoopクラスタからOracle Databaseの表にデータをすばやく移動するための効率的でパフォーマンスのよいローダーです。様々な形式からデータを読取りおよびロードできます。Oracle Loader for Hadoopはデータをパーティション化し、Hadoop内でデータベースに対応した形式に変換します。必要に応じて、データのロードや出力ファイルの作成の前に主キーでレコードをソートします。ロードは、Hadoopクラスタ上でMapReduceジョブとして実行されます。

1.5.3.3 Oracle Data Integrator

Oracle Data Integrator(ODI)は、様々なソースからOracle Databaseにデータを抽出、変換およびロードします。

ODIでは、ナレッジ・モジュール(KM)は、データ統合処理における特定のタスク専用のコード・テンプレートです。Oracle Data Integrator Studioを使用すると、特定のアプリケーション用にKMをロード、選択および構成できます。使用可能なKM数は150を超え、様々なサードパーティ製データベースやその他のデータ・リポジトリからデータを取得できます。ユーザーは、特定のジョブに対してKMをいくつかロードするだけですみます。

Oracle Data Integratorには、ビッグ・データ専用のKMが含まれています。

1.5.3.4 Oracle XQuery for Hadoop

Oracle XQuery for Hadoopは、XQuery言語で表された変換を、Hadoopクラスタで並行して実行される一連のMapReduceジョブに変換して実行します。入力データは、HDFSまたはOracle NoSQL Databaseにあります。Oracle XQuery for Hadoopは、変換結果をHDFS、Oracle NoSQL DatabaseまたはOracle Databaseに書き込みます。

1.5.3.5 Oracle R Advanced Analytics for Hadoopの説明は次のとおりです。

Oracle R Advanced Analytics for HadoopはRパッケージのコレクションであり、次の機能を提供します。

- Hive表、Apache Hadoopの計算インフラストラクチャ、ローカルR環境およびデータベース表を操作するインタフェース

- Hadoop MapReduceジョブとしてRまたはJavaで記述された予測分析手法(HDFSファイルのデータに適用可能)

単純なR関数を使用して、Rメモリー、ローカル・ファイル・システム、HDFS、Hive間でデータをコピーできます。Rでマッパーおよびリデューサを記述して、Hadoop MapReduceジョブとして実行し、それらの場所に結果を返すよう、Rプログラムをスケジュールできます。

1.5.4 ビッグ・データに対するRのサポート

Rは、統計分析とグラフ作成のためのオープンソース言語および環境です。Rでは、線形および非線形モデリング、標準統計メソッド、時系列分析、分類、クラスタリングおよびグラフィカル・データ表示の機能が提供されます。Comprehensive R Archive Network (CRAN)内に数千ものオープンソース・パッケージが用意されており、バイオインフォマティクス、空間統計、財務/マーケティング分析など、幅広いアプリケーションに使用できます。Rは、その機能の成熟化を受けて人気が高まっており、現在では、高コストなプロプライエタリ統計パッケージにも匹敵するほど進化しています。

アナリストは通常PC上でRを使用しますが、PCによって分析に使用できるデータの量と処理能力が制限されます。Oracle Big Data Applianceを直接利用するようRプラットフォームを拡張することで、この制限はなくなります。Oracle R Distributionは、Oracle Big Data Applianceのすべてのノードにインストールされます。

Oracle R Advanced Analytics for Hadoopを使用すると、RユーザーはHDFSとMapReduceプログラミング・フレームワークに、優れたパフォーマンスでネイティブにアクセスできます。これにより、Rプログラムを膨大なデータに対するMapReduceジョブとして実行できるようになります。Oracle R Advanced Analytics for HadoopはOracle Big Data Connectorsに付属しています。「Oracle R Advanced Analytics for Hadoop」を参照してください。

Oracle R Enterpriseは、Oracle DatabaseへのOracle Advanced Analyticsオプションのコンポーネントです。次のものを提供します。

- Rからのデータ準備および統計分析のためのデータベース・データへの透過的アクセス

- RとSQLの両方からアクセスできる、データベース・サーバーでのRスクリプトの実行

- 様々な予測およびデータ・マイニングのインデータベース・アルゴリズム

Oracle R Enterpriseを使用すると、Oracleデータベースにビッグ・データの分析の結果を格納することや、ダッシュボードおよびアプリケーションに表示するためにアクセスすることができます。

Oracle R Advanced Analytics for HadoopとOracle R Enterpriseの両方によって、統計のユーザーは、Oracle DatabaseやHadoopのネイティブ・プログラミング言語を習得することなく、これらの計算インフラストラクチャを使用できます。

関連項目:

- Rの詳細は、次のサイトを参照してください。
http://www.r-project.org/

- Oracle R Enterpriseの詳細は、次のサイトを参照してください。
http://docs.oracle.com/cd/E40980_01/

1.6 ビッグ・データの分析と視覚化

ビッグ・データの変換とOracle Databaseへのロードが終了したら、Oracleのビジネス・インテリジェンス・ソリューションと意思決定を支援する製品を駆使して、すべてのデータの詳細な分析と視覚化を行うことができます。

Oracle Big Data Discovery

Oracle Big Data Discoveryは、ビッグ・データを視覚化して分析するためのエンドツーエンド製品であり、Hadoopに出荷時に組み込まれています。これにより、RAWデータが数分で変換され、複雑な製品について理解したり、高度に特殊化されたリソースにのみ依存することなく、ビジネス上の洞察を得ることができます。この製品は、Mammothをインストールした後のアドオンとして、Oracle Big Data Appliance上にインストールできます。インストール・プロセスの大部分は自動化されているため、Oracle Big Data DiscoveryをOracle Big Data Applianceツール・セットに簡単に追加できます。

関連項目:

- 次のOracle Business IntelligenceのWebサイトを参照してください
http://www.oracle.com/us/solutions/ent-performance-bi/business-intelligence/index.html

- 次のOracle Databaseドキュメント・ライブラリのData WarehousingおよびBusiness Intelligenceに関するドキュメントを参照してください
http://docs.oracle.com/database/121/nav/portal_6.htm

2 Oracle Big Data Applianceの管理

この章では、Oracle Big Data Applianceにインストールされるソフトウェアおよびサービスについて説明します。次の項について説明します。

- Oracle Enterprise Managerを使用した複数のクラスタの監視

- Cloudera Managerを使用した操作の管理

- Hadoop監視ユーティリティの使用方法

- Cloudera Hueを使用したHadoopの操作

- Oracle Big Data Applianceソフトウェアについて

- CDHソフトウェア・サービスについて

- ソフトウェアの可用性に与えるハードウェアの影響

- ハードウェア障害の管理

- Oracle Big Data Applianceの停止および起動

- Oracle Big Data SQLの管理

- Oracle Big Data Applianceのセキュリティ

- Oracle Big Data Applianceの監査

- オラクル社カスタマ・サポートに提供する診断情報の収集

2.1 Oracle Enterprise Managerを使用した複数のクラスタの監視

Oracle Enterprise Managerプラグインでは、Oracle Exadata Database Machineや他のOracle Databaseインストールに使用するのと同じシステム監視ツールをOracle Big Data Applianceに使用できます。プラグインを使用して、インストールされたソフトウェア・コンポーネントのステータスを表や図式を使用した形式で表示したり、これらのソフトウェア・サービスの起動や停止を行えます。ネットワークおよびラック・コンポーネントの状態を監視することもできます。

Oracle Enterprise Managerを使用すると、同じインフィニバンド・ファブリック上のすべてのOracle Big Data Applianceラックを監視できます。ラック・ハードウェアと論理クラスタのソフトウェア・レイアウトの両方のサマリー・ビューが用意されています。

2.1.1 Enterprise Manager Webインタフェースの使用

Oracle Enterprise Manager Webインタフェースを開いてログインし、ターゲット・クラスタを選択すると、次の主要領域へドリルダウンできます。

- インフィニバンド・ネットワーク: インフィニバンド・スイッチとポートのネットワーク・トポロジとステータス。図2-1を参照してください。

- Hadoopクラスタ: HDFS、MapReduceおよびZooKeeperのソフトウェア・サービス。

- Oracle Big Data Applianceラック: サーバー・ホスト、Oracle Integrated Lights Out Manager (Oracle ILOM)サーバー、配電ユニット(PDU)、イーサネット・スイッチなどのハードウェア・ステータス。

図2-1は、クラスタ・ホームページの一部を示しています。

図2-1 Oracle Enterprise Managerの「YARN」ページ

Oracle Enterprise Managerを使用してOracle Big Data Applianceを監視するには、次の手順を実行します。

1. プラグインをダウンロードしてインストールします。『Oracle Enterprise Manager System Monitoring Plug-inインストレーション・ガイドfor Oracle Big Data Appliance』を参照してください。

2. 管理ユーザーとしてOracle Enterprise Managerにログインします。

3. 「ターゲット」メニューから「ビッグ・データ・アプライアンス」を選択し、ビッグ・データ・ページを表示します。Oracle Enterprise Managerによって検出済のターゲットの全体的なステータスが表示されます。

4. 詳細ページを表示するターゲット・クラスタを選択します。

5. ターゲット・ナビゲーション・ツリーを展開し、コンポーネントを表示します。すべてのレベルで情報を使用可能です。

6. ツリーでコンポーネントを選択し、ホーム・ページを表示します。

7. 表示を変更するには、メイン表示領域の左上部にあるドロップダウン・メニューから項目を選択します。

関連項目:

インストール手順と使用例については、『Oracle Enterprise Manager System Monitoring Plug-inインストレーション・ガイドfor Oracle Big Data Appliance』を参照してください。

2.1.2 Enterprise Managerコマンドライン・インタフェースの使用

Enterprise Managerコマンドライン・インタフェース(emcli)はOracle Big Data Applianceに、他のすべてのソフトウェアとともにインストールされます。このインタフェースは、Webインタフェースと同じように機能します。Oracle Management Serverに接続するための資格証明を入力する必要があります。

ヘルプを表示するには、emcli helpと入力してください。

関連項目:

『Oracle Enterprise Managerコマンドライン・インタフェース・ガイド』

2.2 Cloudera Managerを使用した操作の管理

Oracle Big Data ApplianceにインストールされるCloudera Managerは、Cloudera's Distribution including Apache Hadoop (CDH)の操作に役立ちます。Cloudera Managerは、Hadoopクラスタの一部として構成されたすべてのOracle Big Data Applianceサーバーを対象とする単一の管理インタフェースを備えています。

Cloudera Managerを使用すると、次の管理タスクを簡単に行うことができます。

- ジョブおよびサービスの監視

- サービスの開始および停止

- セキュリティ資格証明とKerberos資格証明の管理

- ユーザー・アクティビティの監視

- システムの状態の監視

- パフォーマンス・メトリックの監視

- ハードウェアの使用状況の追跡(ディスク、CPU、RAM)

Cloudera Managerは、ResourceManagerノード(node03)上で動作し、ポート7180上で使用できます。

Cloudera Managerを使用するには、次の手順を実行します。

1. ブラウザを開き、次のようにURLを入力します。
この例で、bda1はアプライアンス名、node03はサーバー名、example.comはドメイン、7180はデフォルトのポート番号(それぞれCloudera Managerで使用)を示します。

2. Cloudera Managerのユーザー名とパスワードでログインします。設定を変更できるのは、管理者権限を持つユーザーのみです。その他のCloudera Managerユーザーは、Oracle Big Data Applianceのステータスを表示できます。

関連項目:

Cloudera Manager Monitoring and Diagnostics Guide

http://www.cloudera.com/content/cloudera-content/cloudera-docs/CM5/latest/Cloudera-Manager-Diagnostics-Guide/Cloudera-Manager-Diagnostics-Guide.html

または、Cloudera Managerの「Support」メニューで、「Help」をクリックしてください

2.2.1 Oracle Big Data Applianceのステータスの監視

Cloudera Managerでは、画面上部のメニュー・バーから、次に示す任意のページを選択できます。

- Home: アクティビティの概要をグラフィカルに表示し、Cloudera Managerによって制御されているすべてのサービスにリンクします。図2-2を参照してください。

- Clusters: 複数のクラスタ上のサービスにアクセスします。

- Hosts: クラスタのすべてのサーバーの状態、ディスク使用量、負荷、物理メモリー、スワップ領域などの統計情報を監視します。

- Diagnostics: イベントおよびログにアクセスします。Cloudera Managerは、システムとサービスに関する履歴情報を収集します。選択したサーバー、サービス、および期間を対象に、特定の句を検索できます。また、ログ・メッセージの最小重大度(TRACE、DEBUG、INFO、WARN、ERRORまたはFATAL)を選択して、検索に含めることもできます。

- Audits: 選択した時間範囲の監査履歴ログを表示します。ユーザー名、サービスまたはその他の条件によって結果を絞り込み、CSVファイルとしてログをダウンロードできます。

- Charts: Cloudera Managerの時系列データ・ストアから各種のグラフ・タイプ(折れ線グラフ、棒グラフなど)でメトリックを表示できます。

- Backup: スナップショット・ポリシーおよびスケジュール済のレプリケーションにアクセスします。

- Administration: 「Settings」、「Alerts」、「Users」、「Kerberos」など各種の管理オプションを提供します。

図2-2に、Cloudera Managerのホームページを示します。

図2-2 Cloudera Managerのホームページ

2.2.2 管理タスクの実行

Cloudera Manager管理者は、Oracle Big Data Applianceの状態や使用状況を監視するための様々なプロパティの変更、ユーザーの追加、およびKerberosセキュリティの設定を行うことができます。

Cloudera Manager Administrationにアクセスするには、次の手順を実行します。

1. 管理者権限でCloudera Managerにログインします。

2. 「Administration」をクリックし、メニューからタスクを選択します。

2.2.3 Cloudera Managerを使用したCDHサービスの管理

Cloudera Managerは次のサービスを管理するインタフェースを備えています。

- HDFS

- Hive

- Hue

- Oozie

- YARN

- ZooKeeper

Cloudera Managerを使用すると、これらのサービスの設定変更、停止および再開を行うことができます。追加のサービスも使用できますが、使用する前に構成が必要です。「未構成のソフトウェア」を参照してください。

注意:

Linuxサービス・スクリプトやHadoop構成ファイルを手動で編集しても、これらのサービスには何の効果もありません。これらを管理および構成するには、Cloudera Managerを使用する必要があります。

2.3 Hadoop監視ユーティリティの使用方法

ネイティブのHadoopユーティリティを使用することもできます。これらのユーティリティは読取り専用であり、認証を必要としません。

Cloudera Managerでは、これらのユーティリティの正しいURLを簡単に取得できます。「YARN」サービス・ページで、「Web UI」サブメニューを展開します。

2.3.1 MapReduceジョブの監視

リソース・マネージャのインタフェースを使用してMapReduceジョブを監視できます。

MapReduceジョブを監視するには、次の手順を実行します。

- ブラウザを開き、次のようにURLを入力します。

http://bda1node03.example.com:8088

この例では、bda1はラックの名前、node03はYARNリソース・マネージャが実行されているサーバーの名前、8088はユーザー・インタフェースのデフォルトのポート番号です。

図2-3に、リソース・マネージャのインタフェースを示します。

図2-3 YARNリソース・マネージャのインタフェース

2.3.2 HDFSの状態の監視

クラスタの最初の2つのノードでDFS状態ユーティリティを使用することで、Hadoopファイル・システムの状態を監視できます。

HDFSを監視するには、次の手順を実行します。

- ブラウザを開き、次のようにURLを入力します。

http://bda1node01.example.com:50070

この例では、bda1はラックの名前、node01はdfshealthユーティリティが実行されているサーバーの名前、50070はユーザー・インタフェースのデフォルトのポート番号です。

図2-3に、DFS状態ユーティリティのインタフェースを示します。

図2-4 DFS状態ユーティリティ

2.4 Cloudera Hueを使用したHadoopの操作

Hueはブラウザで動作し、複数のアプリケーションに使いやすいインタフェースを提供して、HadoopとHDFSの操作をサポートします。Hueを使用すると、次のタスクを実行できます。

- Hiveデータ・ストアの問合せ

- Hive表の作成、ロードおよび削除

- HDFSファイルおよびディレクトリの操作

- MapReduceジョブの作成、発行および監視

- MapReduceジョブの監視

- Oozieダッシュボードを使用したワークフローの作成、編集および発行

- ユーザーおよびグループの管理

Hueは、Oracle Big Data Applianceに自動的にインストールおよび構成されます。ResourceManagerノード(node03)のポート8888上で動作します。

Hueを使用するには、次の手順を実行します。

1. Cloudera Managerにログインし、「Home」ページのhueサービスをクリックします。

2. クイック・リンクの下にあるhueページで、「Hue Web UI」をクリックします。

3. ブラウザでHueを直接開けるように、HueのURLをブックマークします。次にURLの例を示します。

http://bda1node03.example.com:8888

4. Hue資格証明を使用してログインします。
Oracle Big Data Applianceは、初期設定では特定のHueユーザー・アカウントを使用するよう構成されていません。Hueに最初に接続するユーザーは、任意のユーザー名とパスワードでログインでき、自動的に管理者になります。このユーザーは、他のユーザーと管理者アカウントを作成できます。

図2-5に、Hive Query Editorを示します。

図2-5 Hive Query Editor

関連項目:

Hueユーザー・ガイドの場所

http://archive-primary.cloudera.com/cdh5/cdh/5/hue/user-guide/

2.5 Oracle Big Data Applianceソフトウェアについて

次の各項では、Oracle Big Data Applianceにインストールされるソフトウェアについて説明します。一部のコンポーネントは、Oracle Database 11.2.0.2以降のリリースで動作します。

この項の内容は次のとおりです。

- ソフトウェア・コンポーネント

- 未構成のソフトウェア

- サービス間でのリソースの割当て

2.5.1 ソフトウェア・コンポーネント

これらのソフトウェア・コンポーネントは、クラスタのすべてのサーバーにインストールされます。Oracle Linux、必須ドライバ、ファームウェアおよびハードウェア検証ユーティリティは工場出荷時にインストール済です。その他のソフトウェアは、すべてサイトにインストールします。オプションのソフトウェア・コンポーネントは、インストールで構成されない場合があります。

注意:

Oracle Big Data Applianceに追加のソフトウェアをインストールする必要はありません。これを行うと、保証やサポートの対象外となる可能性があります。詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

ベースとなるイメージ・ソフトウェア:

- Oracle Unbreakable Enterprise Kernelバージョン2 (UEK2)を搭載したOracle Linux 6.6 (アップグレードは5.11のまま)

- Java HotSpot Virtual Machine 8バージョン45 (JDK 8u60)

- Oracle R Distribution 3.1.1-2

- MySQL Enterprise Editionバージョン5.5.35

- Puppet、ファームウェア、Oracle Big Data Applianceユーティリティ

- Oracleインフィニバンド・ソフトウェア

Mammothインストール:

- Cloudera's Distribution including Apache Hadoop Release 5 (5.4.7)には次のものが含まれます。

- Apache Hive

- Apache HBase

- Apache Sentry

- Apache Spark

- Cloudera Impala

- Cloudera Search

- Cloudera Manager Release 5 (5.4.7) including Cloudera Navigator

- Oracle Database Instant Client 12.1

- Oracle Big Data SQL (オプション)

- Oracle NoSQL Database Community EditionまたはEnterprise Edition 12c Release 1 Version 3.2.7 (オプション)

- Oracle Big Data Connectors 4.3 (オプション):

- Oracle SQL Connector for Hadoop Distributed File System (HDFS)

- Oracle Loader for Hadoop

- Oracle Data Integratorエージェント

- Oracle XQuery for Hadoop

- Oracle R Advanced Analytics for Hadoopの説明は次のとおりです。

- Oracle Big Data Discovery 1.1.1 (オプション)

関連項目:

Mammothユーティリティの詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

図2-6は、主要コンポーネント間の関係を示しています。

図2-6 Oracle Big Data Applianceの主要ソフトウェア・コンポーネント

2.5.2 未構成のソフトウェア

ご使用のOracle Big Data Applianceライセンスには、Cloudera Enterprise Data Hub Editionのすべてのコンポーネントが含まれています。すべてのCDHコンポーネントは、Mammothユーティリティによって自動的にインストールされます。これらは、Cloudera Webサイトからはダウンロードしないでください。

ただし、次のような一部のサービスは、使用前にCloudera Managerを使用して追加する必要があります。

- Apache Flume

- Apache HBase

- Apache Spark

- Apache Sqoop

- Cloudera Impala

- Cloudera Navigator

- Cloudera Search

サービスを追加するには、次の手順を実行します。

1. adminユーザーとしてCloudera Managerにログインします。

2. 「Home」ページで、左側のパネルのクラスタ・メニューを展開し、「Add a Service」を選択して「Add Service」ウィザードを開きます。最初のページには、追加できるサービスがリストされます。

3. ウィザードのステップに従います。

関連項目:

- CDHコンポーネントのリストは、次を参照してください。
http://www.cloudera.com/content/www/en-us/products/apache-hadoop/key-cdh-components.html

- 構成の手順の詳細は、次のサイトで『CDH5 Installation and Configuration Guide』を参照してください
http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH5/latest/CDH5-Installation-Guide/CDH5-Installation-Guide.html

2.5.3 サービス間でのリソースの割当て

リソース・プールの合計の割合として、リソースをHDFS、YARN、Oracle Big Data SQL、Hiveなどの各サービスに割り当てることができます。Cloudera Managerでは、これらの割合に基づいて推奨されるリソース管理設定が自動的に計算されます。あるサービスに対する高負荷が他のサービスに与える影響が制限されるように、静的サービス・プールはクラスタ上のサービスを切り離します。

サービス間にリソースを割り当てるには、次の手順を実行します。

1. adminとしてCloudera Managerにログインします。

2. ページの上部の「Clusters」メニューを開き、「Resource Management」の下の「Static Service Pools」を選択します。

3. 「Configuration」を選択します。

4. ウィザードのステップに従うか、または「Change Settings Directly」をクリックして現在の設定を変更します。

2.6 CDHソフトウェア・サービスについて

すべてのサービスはCDHクラスタ内の全ノード上にインストールされますが、個々のサービスは指定されたノードでのみ実行されます。サービスの場所は、クラスタの構成によって多少異なります。

この項では、デフォルトのYARN構成のサービスについて説明します。

この項の内容は次のとおりです。

- シングルラックCDHクラスタ上でサービスが実行される場所

- マルチラックCDHクラスタ上でサービスが実行される場所

- MapReduceについて

- NameNodeの自動フェイルオーバー

- ResourceManagerの自動フェイルオーバー

2.6.1 シングルラックCDHクラスタ上でサービスが実行される場所

表2-1は、シングル・ラック内に構成されたCDHクラスタ内のサービスを示したものです(スタータ・ラックおよび6ノードのクラスタを含む)。Node01はクラスタ内の最初のサーバー(サーバー1、7または10)で、nodennはクラスタ内の最後のサーバー(サーバー6、9、12または18)です。

表2-1 シングル・ラック内にある1つ以上のCDHクラスタのサービス・ロケーション

Node01

Node02

Node03

Node04

Node05～nn

バランサ

Cloudera Manager Server

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Agent

DataNode

DataNode

DataNode

DataNode

DataNode

Failover Controller

Failover Controller

JobHistory

Hive、Hue、Oozie、Solr

JournalNode

JournalNode

JournalNode

MySQL Backup

MySQL Primary

NameNode

NameNode

NodeManagerGUID-69A231EA-0F4D-4460-84A5-5F8DF105A2EE.htm#GUID-6E524541-C78B-4059-8B72-6E6EA4672566__CHDEABDH

NodeManagerGUID-69A231EA-0F4D-4460-84A5-5F8DF105A2EE.htm#GUID-6E524541-C78B-4059-8B72-6E6EA4672566__CHDEABDH

NodeManager

NodeManager

NodeManager

Oracle Data Integratorエージェント

Puppet

Puppet

Puppet

Puppet

Puppet

Puppet Master

ResourceManager

ResourceManager

ZooKeeper

ZooKeeper

ZooKeeper

注意:
Oracle Big Data Discoveryがインストールされている場合、プライマリ・クラスタのNode05上のNodeManagerおよびDataNodeはデコミッションされます。

2.6.2 マルチラックCDHクラスタ上でサービスが実行される場所

複数のラックが単一のCDHクラスタとして構成される場合、いくつかの重要なサービスが第2ラックにインストールされます。異なるマルチラック・クラスタでは、最初のラックと第2ラックのサービスの分散に違いがある場合があります。これらの違いの原因となるシナリオは、次の2つです。

- クラスタが、元の構成で複数のラックにまたがっていました。
結果として得られる最初と第2のラックに対するサービス・ロケーションを、表2-2と表2-3に示します。この場合、JournalNode、Mysql Primary、ResourceManagerおよびZookeeperは、最初のラックのノード2にインストールされます。

- クラスタは、元の構成でシングルラックでしたが、その後拡張されました。
結果として得られる最初と第2のラックに対するサービス・ロケーションを、表2-4と表2-5に示します。この場合、JournalNode、Mysql Primary、ResourceManagerおよびZookeeperは、最初のラックのノード3にインストールされます。

注意:
Oracle Big Data Discoveryがインストールされている場合、プライマリ・クラスタの最初のラックにおけるノード5上のNodeManagerおよびDataNodeはデコミッションされます。

表2-2 最初のラックのサービス・ロケーション(クラスタがマルチラック・クラスタとして開始した場合)

Node01

Node02

Node03

Node04

Node05～nn(1)

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Server

DataNode

DataNode

DataNode

DataNode

DataNode

Failover Controller

JournalNode

JournalNode

NameNode

MySQL Primary

NodeManager

NodeManager

NodeManager

Puppet

Puppet

Puppet

Puppet

Puppet

Puppet Master

ResourceManager

ZooKeeper

ZooKeeper

表2-3に、当初、複数のラックにまたがって構成されたクラスタの第2ラックにおけるサービス・ロケーションを示します。

表2-3 第2ラックのサービス・ロケーション(クラスタがマルチラック・クラスタとして開始した場合)

Node01

Node02

Node03

Node04

Node05～nn

バランサ

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Agent

DataNode

DataNode

DataNode

DataNode

DataNode

Failover Controller

JournalNode

Hive、Hue、Oozie、Solr

MySQL Backup

NameNode

NodeManager

NodeManager

NodeManager

Oracle Data Integratorエージェント

Puppet

Puppet

Puppet

Puppet

Puppet

ResourceManager

ZooKeeper

表2-4に、当初、シングルラック・クラスタとして構成され、その後拡張されたクラスタの最初のラックにおけるサービス・ロケーションを示します。

表2-4 最初のラックのサービス・ロケーション(シングルラック・クラスタが拡張された場合)

Node01

Node02

Node03

Node04

Node05～nn(2)

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Server

DataNode

DataNode

DataNode

DataNode

DataNode

Failover Controller

JournalNode

JournalNode

NameNode

MySQL Primary

NodeManager

NodeManager

NodeManager

Puppet

Puppet

Puppet

Puppet

Puppet

Puppet Master

ResourceManager

ZooKeeper

ZooKeeper

表2-5に、当初、シングルラック・クラスタとして構成され、その後拡張されたクラスタの第2ラックにおけるサービス・ロケーションを示します。

表2-5 第2ラックのサービス・ロケーション(シングルラック・クラスタが拡張された場合)

Node01

Node02

Node03

Node04

Node05～nn

バランサ

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Agent

Cloudera Manager Agent

DataNode

DataNode

DataNode

DataNode

DataNode

Failover Controller

JournalNode

Hive、Hue、Oozie、Solr

MySQL Backup

NameNode

NodeManager

NodeManager

NodeManager

Oracle Data Integratorエージェント

Puppet

Puppet

Puppet

Puppet

Puppet

ResourceManager

ZooKeeper

注意:

1つのラックから2つのラックにクラスタを展開する場合、Mammothは最初のラックのノード2および4から重要なサービスをすべて、第2ラックのノード1および2に移動します。最初のラックのノード2および4は、非クリティカル・ノードになります。

2.6.3 MapReduceについて

Yet Another Resource Negotiator (YARN)は、バージョン3.0以降のOracle Big Data Applianceで実行されるMapReduceのバージョンです。MapReduce 1を使用して開発されたMapReduce (MRv1)アプリケーションをYARNで実行するには、再コンパイルが必要な場合があります。

ResourceManagerは、すべてのリソース管理タスクを実行します。MRAppMasterはジョブ管理タスクを実行します。各ジョブには独自のMRAppMasterがあります。NodeManagerには、マップ・タスク、リデュース・タスクまたはMRAppMasterを実行できるコンテナがあります。NodeManagerは使用可能なメモリーを使用してコンテナを動的に割り当てることができます。このアーキテクチャによりスケーラビリティが向上し、MRv1よりもクラスタを活用できます。

YARNはSparkおよびImpalaのリソースも管理します。

関連項目:

次のサイトで「Running Existing Applications on Hadoop 2 YARN」を参照してください。

http://hortonworks.com/blog/running-existing-applications-on-hadoop-2-yarn/

2.6.4 NameNodeの自動フェイルオーバー

NameNodeは、すべてのデータの場所を追跡するため、最も重要なプロセスです。正常に機能しているNameNodeがないと、クラスタ全体に障害が発生します。Apache Hadoop v0.20.2以前のバージョンは、ネームノードが1つしかないため、障害に対して脆弱です。

Cloudera's Distribution including Apache Hadoopのバージョン4 (CDH5)では、NameNodeの冗長性を維持することにより、この脆弱性が軽減されています。次に示すように、データは通常の運用時にレプリケートされます。

- CDHは、クラスタの最初の2つのノード上でNameNodeの冗長性を維持します。NameNodeの一方はアクティブ・モード、もう一方のNameNodeはホット・スタンバイ・モードです。アクティブNameNodeに障害が発生すると、そのアクティブNameNodeのロールは自動的にスタンバイNameNodeにフェイルオーバーされます。

- NameNodeのデータはミラー化されたパーティションに書き込まれるので、1つのディスクが失われても耐障害性が確保されます。このミラー化の処理は、オペレーティング・システムのインストールの一環として工場出荷時に行われます。

- アクティブNameNodeでは、ファイル・システム・メタデータへのすべての変更を2つ以上のJournalNodeプロセスに記録し、これをスタンバイNameNodeが読み取ります。3つのJournalNodeがあり、それらは各クラスタの最初の3つのノードで実行されます。

- ジャーナルに記録された変更は、チェックポインティングと呼ばれるプロセスで単一のfsimageファイルに定期的に統合されます。

Oracle Big Data Applianceで、NameNodeのデフォルト・ログ・レベルは、Oracle Audit Vault and Database FirewallプラグインをサポートするDEBUGです。このオプションが構成されていない場合、ログ・レベルをINFOにリセットできます。

注意:

Oracle Big Data Appliance 2.0以降のリリースでは、バックアップ用の外部NFSフィルタをサポートしておらず、NameNodeのフェデレーションを使用しません。

図2-7は、NameNodeの自動フェイルオーバーをサポートしているプロセス間の関係を示しています。

図2-7 Oracle Big Data ApplianceでのNameNodeの自動フェイルオーバー

2.6.5 ResourceManagerの自動フェイルオーバー

ResourceManagerは、クラスタ内のアプリケーション・タスクおよびアプリケーション・マスターにリソースを割り当てます。NameNodeと同様、ResourceManagerはクラスタの重要な障害ポイントです。すべてのResourceManagerで障害が起きると、すべてのジョブが実行を停止します。Oracle Big Data Appliance 3.0は、この脆弱性を軽減するためにCloudera 5でResourceManager High Availabilityをサポートしています。

CDHは、node03とnode04上の冗長なResourceManagerサービスを管理します。それらのサービスの1つがアクティブ・モードになり、その他のサービスはホット・スタンバイ・モードになります。アクティブ・サービスに障害が発生すると、そのアクティブResourceManagerのロールは自動的にスタンバイ・サービスにフェイルオーバーされます。フェイルオーバー・コントローラは不要です。

図2-7は、ResourceManagerの自動フェイルオーバーをサポートしているプロセス間の関係を示しています。

図2-8 Oracle Big Data ApplianceでのResourceManagerの自動フェイルオーバー

2.6.6 MapとReduceのリソース構成

表2-6に示すように、NodeManagerサービスには固定量のメモリーおよび仮想コア(Vcore)が割り当てられます。

表2-6 NodeManagerのリソース割当て

アプライアンス・モデル

メモリー

VCore

Oracle Big Data Appliance X5-2

40 GB

32

Oracle Big Data Appliance X4-2

40 GB

32

Oracle Big Data Appliance X3-2

40 GB

32

Oracle Big Data Appliance (Sun Fire X4270 M2ベース・パック)

30 GB

24

クラスタ内の各ノードには、同時実行を許可されるマップ・タスクとリデュース・タスクの最大数があります。表2-7は、Oracle Big Data Appliance X4-2およびX3-2でのMapReduceサービスのデフォルトのリソース構成を示したものです。

表2-7 Oracle Big Data Appliance X3-2でのマップおよびリデュース・タスクの最大数

ノード

6ノード・クラスタ

大規模なクラスタ(3)

Node01とNode02

14マップ

8リデュース

なし(NodeManagerなし)

Node03とNode04

10マップ

6リデュース

10マップ

6リデュース

Node05～Nodenn

20マップ

13リデュース

20マップ

13リデュース

表2-8は、Oracle Big Data Appliance Sun Fire X4270 M2ベース・ラックでのMapReduceサービスのデフォルトのリソース構成を示したものです。

表2-8 Sun Fire X4270 M2ベース・ラックでのマップおよびリデュース・タスクの最大数

ノード

6ノード・クラスタ

大規模なクラスタ(4)

Node01とNode02

10マップ

6リデュース

なし

Node03とNode04

7マップ

4リデュース

7マップ

4リデュース

Node05～Nodenn

15マップ

10リデュース

15マップ

10リデュース

2.7 ソフトウェアの可用性に与えるハードウェアの影響

サーバー障害の影響は、CDHクラスタ内におけるサーバーの機能によって異なります。Oracle Big Data Applianceサーバーは、コモディティ・ハードウェアよりも堅牢なため、ハードウェア障害が発生することはほとんどありません。この項では、プライマリ・ラックの様々なサーバー上で実行される重要性の高いサービスに焦点を当てています。詳細なリストは、「シングルラックCDHクラスタ上でサービスが実行される場所」を参照してください。

注意:

マルチラック・クラスタでは、一部の重要なサービスが第2ラックの第1サーバーで実行されます。「マルチラックCDHクラスタ上でサービスが実行される場所」を参照してください。

2.7.1 論理ディスク・レイアウト

各サーバーには12基のディスクが搭載されています。重要なオペレーティング・システムはディスク1および2に格納されます。

表2-9に、ディスク・パーティションの内容を示します。

表2-9 論理ディスク・レイアウト

ディスク

説明

1から2

150ギガバイト(GB)の物理および論理パーティションで、ミラー化により2つのコピーを作成し、Linuxオペレーティング・システム、インストール済のソフトウェアすべて、NameNodeデータおよびMySQL Databaseのデータを格納。NameNodeおよびMySQLデータベースのデータは、2つのサーバー間でレプリケートされているため、合計で4つのコピーがあります。

2.8テラバイト(TB)のHDFSデータ・パーティション。

3から12

単一のHDFSまたはOracle NoSQL Databaseデータ・パーティション

2.7.2 クリティカルおよび非クリティカルCDHノード

クリティカル・ノードは、クラスタが正常に動作し、すべてのサービスをユーザーに提供するために必要です。これとは対照的に、非クリティカル・ノードに障害が発生しても、クラスタはサービスを失うことなく動作し続けます。

シングルラック・クラスタでは、重要なサービスはクラスタの最初の4つのノードに初期インストールされます。残りのノード(node05から最大でnode18まで)は重要性の低いサービスのみを実行します。クリティカル・ノードのいずれかでハードウェア障害が発生した場合は、別の非クリティカル・サーバーにサービスを移行できます。たとえば、node02に障害が発生した場合、重要なサービスをnode05に移行できます。表2-1は、シングル・ラック上に構成されたクラスタのサービスの初期ロケーションを示したものです。

マルチラック・クラスタでは、一部の重要なサービスが第2ラックの第1サーバーで実行されます。「シングルラックCDHクラスタ上でサービスが実行される場所」を参照してください。

2.7.2.1 高可用性または単一障害点

一部のサービスには高可用性と自動フェイルオーバーが含まれています。単一障害点を含むサービスもあります。次のリストに、重要なサービスを示します。

- NameNodes: 高可用性と自動フェイルオーバー

- ResourceManagers: 高可用性と自動フェイルオーバー

- MySQL Database: プライマリ・データベースおよびバックアップ・データベースは、バックアップ・データベースに対するプライマリ・データベースのレプリケーションで構成されます。自動フェイルオーバーはありません。プライマリ・データベースに障害が発生すると、クラスタの機能は失われますが、データは失われません。

- Cloudera Manager: Cloudera Managerサーバーは1つのノードで実行されます。障害が発生すると、Cloudera Manager機能は使用できません。

- Oozieサーバー、Hiveサーバー、HueサーバーおよびOracle Data Integratorエージェント: これらのサービスには冗長性はありません。ノードに障害が発生すると、サービスは使用できません。

2.7.2.2 重要なサービスが実行される場所

表2-10に、重要なサービスがCDHクラスタで実行される場所を示します。これらの4つのノードの詳細は、この後のトピックで説明します。

表2-10 シングル・ラックでの重要なサービスの場所

ノード名

重要な機能

第1NameNode

バランサ、フェイルオーバー・コントローラ、JournalNode、NameNode、Puppet Master、ZooKeeper

第2NameNode

フェイルオーバー・コントローラ、JournalNode、MySQLバックアップ・データベース、NameNode、ZooKeeper

第1ResourceManagerノード

Cloudera Manager Server、JobHistory、JournalNode、MySQLプライマリ・データベース、ResourceManager、ZooKeeper

第2ResourceManagerノード

Hive、Hue、Oozie、Solr、Oracle Data Integrator Agent、ResourceManager

最初に、シングルラック・クラスタでは、最初の4つのノード上に4つの重要なノードが作成されます。「シングルラックCDHクラスタ上でサービスが実行される場所」を参照してください

マルチラック・クラスタでは、第2NameNodeノードと第2ResourceManagerノードは第2ラックの最初の2つのノードに移動されます。「マルチラックCDHクラスタ上でサービスが実行される場所」を参照してください。

2.7.3 第1NameNodeノード

第1NameNodeに障害が発生するか、オフライン(再起動など)になると、第2NameNodeが自動的に引き継いで、クラスタの正常なアクティビティを維持します。

または、第2NameNodeがすでにアクティブな場合は、バックアップなしで動作し続けます。NameNodeが1つのみの場合、クラスタは障害に対して脆弱です。クラスタが、自動フェイルオーバーに必要な冗長性を失うためです。

Puppetマスターもこのノードで実行されます。MammothユーティリティではPuppetを使用するので、たとえばラック内の別の場所にあるディスク・ドライブを交換する必要がある場合、ソフトウェアのインストールまたは再インストールはできません。

2.7.4 第2NameNodeノード

第2NameNodeに障害が発生すると、NameNodeの機能は第1NameNode (node01)にフェイルオーバーされるか、そのままバックアップなしで動作し続けます。ただし、第1NameNodeにも障害が発生すると、クラスタは自動フェイルオーバーに必要な冗長性を失っています。

MySQLバックアップ・データベースもこのノードで実行されます。MySQL Databaseは動作を継続しますが、マスター・データベースのバックアップはありません。

2.7.5 第1ResourceManagerノード

第1ResourceManagerに障害が発生するか、(ノードが実行されているサーバーの再起動などによって)オフラインになると、第2ResourceManagerが自動的に機能を引き継ぎ、MapReduceタスクをクラスタの特定のノードへと分配します。

第2ResourceManagerがすでにアクティブな場合は、第1ResourceManagerがアクセス不可になると、バックアップなしでResourceManagerとして動作し続けます。1つのResourceManagerのみを使用する場合、クラスタは自動フェイルオーバーに必要な冗長性を失うため、脆弱になります。

第1ResourceManagerに障害が発生するか、(再起動などによって)オフラインになると、第2ResourceManagerが自動的に機能を引き継ぎ、MapReduceタスクをクラスタの特定のノードへと分配します。

または、第2ResourceManagerがすでにアクティブな場合は、バックアップなしで動作し続けます。ResourceManagerが1つのみの場合、クラスタは障害に対して脆弱です。クラスタが、自動フェイルオーバーに必要な冗長性を失うためです。

次のサービスも影響を受けます。

- Cloudera Manager: このツールは、CDHクラスタ全体の一元管理機能を提供します。このツールがない場合は、「Hadoop監視ユーティリティの使用方法」で説明したユーティリティを使用すれば、引き続きアクティビティを監視できます。

- MySQL Database: Cloudera Manager、Oracle Data Integrator、HiveおよびOozieはMySQLデータベースを使用しています。データは自動的にレプリケートされますが、マスター・データベース・サーバーが停止していると、それにはアクセスできません。

2.7.6 第2ResourceManagerノード

第2ResourceManagerノードに障害が発生すると、ResourceManagerの機能は第1ResourceManagerにフェイルオーバーされるか、そのままバックアップなしで動作し続けます。ただし、第1ResourceManagerにも障害が発生すると、クラスタは自動フェイルオーバーに必要な冗長性を失っています。

次のサービスも影響を受けます。

- Oracle Data Integratorエージェント このサービスは、Oracle Big Data Connectorsの1つであるOracle Data Integratorをサポートします。Oracle Data Integratorは、ResourceManagerノードがダウンしているときには使用できません。

- Hive: Hiveは、HDFSに格納されているデータへのSQLライクなインタフェースを備えています。Oracle Big Data SQLおよびOracle Big Data Connectorsの大部分はHive表にアクセスできますが、このノードに障害が発生した場合、この表は使用できません。

- Hue: この管理ツールは、ResourceManagerがダウンしているときには使用できません。

- Oozie: このワークフローおよび調整サービスはResourceManagerノードで実行され、このノードがダウンしているときには使用できません。

2.7.7 非クリティカルCDHノード

非クリティカル・ノードはオプションのため、障害が発生しても、Oracle Big Data Applianceはサービスを失うことなく動作し続けます。NameNodeでは失われたデータを自動的にレプリケートして、常に3つのコピーを保持します。MapReduceジョブは、クラスタの別の場所に保存されているデータのコピーに対して実行されます。ワークロードの分散先のサーバーが少なくなるので、処理能力のみが失われることになります。

2.8 ハードウェア障害の管理

サーバーに障害が発生した場合、できるかぎり短い中断時間で、クラスタのサービスを保守する手順を実行する必要があります。次の手順で説明するように、bdacliユーティリティを使用して、障害が発生しているサーバーを簡単に管理できます。管理手順の1つはデコミッショニングと呼ばれます。デコミッショニングは、すべてのサービスのすべてのロールを停止するため、データが失われることはありません。Cloudera Managerでは、CDHノードを終了する前にデコミッションする必要があります。

非クリティカル・ノードに障害が発生しても、サービスが失われることはありません。ただし、CDHクラスタでクリティカル・ノードに障害が発生した場合、「ソフトウェアの可用性に与えるハードウェアの影響」で説明するように、単一障害点を持つサービスは使用できません。次の選択肢のどちらかに決める必要があります。

- 修理が行われるのを待機し、修理が完了するまでサービスが失われた状態が続きます。

- 重要なサービスを別のノードに移動します。これを選択すると、一部のクライアントを新しいノードのアドレスで再構成する必要がある場合があります。たとえば、第2ResourceManagerノード(通常はnode03)で障害が発生した場合、ユーザーはブラウザを新しいノードにリダイレクトしてCloudera Managerにアクセスする必要があります。

サービスの喪失とクライアントを再構成する不便さとを比較検討する必要があります。

2.8.1 Oracle NoSQL Databaseクラスタについて

Oracle NoSQL Databaseクラスタにはクリティカル・ノードがありません。ストレージ・ノードがレプリケートされ、ユーザーは別のノードの3つの管理プロセスから選択できます。サービスが失われることはありません。

Mammothをホストするノード(クラスタの第1ノード)に障害が発生した場合、「障害が発生したノードを管理するための前提条件」の再インストールするための手順に従います

障害が発生しているNoSQLノードを修理または交換するには、「障害が発生している非クリティカル・ノードの管理」の手順に従います。

2.8.2 障害が発生しているノードを管理するための前提条件

CDHノードまたはOracle NoSQL Databaseノードとして構成されているかどうか、障害が発生しているサーバーまたは障害が発生したサーバーを管理する前に次の操作を実行してください。

- サービスまたはサーバーを再起動してみます。

- 障害が発生しているノードがクリティカルか非クリティカルかを判断します。

- 障害が発生しているノードが、Mammothがインストールされているノードの場合:

1. CDHノードの場合、障害が発生しているノードと同じクラスタの非クリティカル・ノードを選択します。
NoSQLノードの場合、最初に障害が発生したサーバーを修理または交換し、次の手順に使用します。

2. Mammothバンドルを該当するノードにアップロードして解凍します。

3. 次のようなコマンドを使用して、BDAMammoth-version.runからすべてのファイルを抽出します。

# ./BDAMammoth-ol6-4.0.0.run

後で、このノードからすべてのMammoth操作を実行する必要があります。

Mammothユーティリティの詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

4. 障害が発生しているノードを管理するためのこの項の適切な手順に従います。

サービスが以前に移行されていないかぎり、Mammothはクラスタの第1ノードにインストールされます。

2.8.3 障害が発生しているCDHクリティカル・ノードの管理

CDHクラスタのみクリティカル・ノードがあります。

障害が発生しているクリティカル・ノードを管理するには、次の手順を実行します。

1. Mammothがインストールされているノードにrootとしてログインします。

2. サービスを非クリティカル・ノードに移行します。node_nameを、障害が発生しているノードの名前(bda1node02など)に置換します。

bdacli admin_cluster migrate node_name

コマンドが完了すると、node_nameがデコミッションされ、以前の非クリティカル・ノードでサービスが実行されます。

3. ユーザーが必要に応じてクライアントを新しいクリティカル・ノードにリダイレクトできるように、変更をユーザー・コミュニティに通知します。

4. 障害が発生したサーバーを修理または交換します。

5. rootとしてMammothノードから、修理または交換したサーバーを非クリティカル・ノードとして再プロビジョニングします。node_nameには、移行されたノードと同じ名前(bda1node02など)を使用します。

bdacli admin_cluster reprovision node_name

6. 障害が発生したノードがHBaseやImpalaのようなサービス(Mammothによってインストールされているが、構成されていない状態)をサポートしていた場合、Cloudera Managerを使用してそれらを新しいノードで再構成します。

2.8.4 障害が発生している非クリティカル・ノードの管理

次の手順を使用して、CDHまたはNoSQLクラスタの障害が発生しているノードを交換します。

障害が発生している非クリティカル・ノードを管理するには、次の手順を実行します。

1. Mammothがインストールされているノード(通常はnode01)にrootとしてログインします。

2. 障害が発生しているノードをデコミッションします。node_nameを、障害が発生しているノードの名前(bda1node07など)に置換します。

bdacli admin_cluster decommission node_name

3. 障害が発生したサーバーを修理または交換します。

4. rootとしてMammothノードから、修理または交換したサーバーを再コミッションします。node_nameには、デコミッションされたノードと同じ名前(bda1node07など)を使用します。

bdacli admin_cluster recommission node_name

関連項目:

bdacliの構文の詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

2.9 Oracle Big Data Applianceの停止および起動

この項では、Oracle Big Data Applianceを正常に停止して再起動する方法について説明します。

- 前提条件

- Oracle Big Data Applianceの停止

- Oracle Big Data Applianceの起動

2.9.1 前提条件

rootアクセス権が必要です。dcliユーティリティを使用できるように、クラスタにパスワードなしSSHが設定されている必要があります。

パスワードなしSSHが設定されていることを確認するには、次の手順を実行します。

1. クラスタの第1ノードにrootとしてログインします。

2. dcliコマンドを使用して、コマンドが動作していることを確認します。このコマンドは、クラスタ内のすべてのノードのIPアドレスおよびホスト名を返します。

# dcli -C hostname
192.0.2.1: bda1node01.example.com
192.0.2.2: bda1node02.example.com
.
.
.

3. これらの結果が得られない場合は、クラスタでdcliを設定します。

# setup-root-ssh -C

関連項目:

これらのコマンドの詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

2.9.2 Oracle Big Data Applianceの停止

次の手順に従って、すべてのOracle Big Data Applianceソフトウェアおよびハードウェア・コンポーネントを停止します。

注意:

システムが停止すると、次のサービスは自動的に停止します。処理を実行する必要はありません。

- Oracle Enterprise Managerエージェント

- 自動サービス・リクエスト・エージェント

2.9.2.1 すべての管理対象サービスの停止

Cloudera Managerを使用して、Cloudera Managerが管理するサービス(flume、hbase、hdfs、hive、hue、mapreduce、oozieおよびzookeeper)を停止します。

1. adminユーザーとしてCloudera Managerにログインします。

「Cloudera Managerを使用した操作の管理」を参照してください。

2. 開始ページの「Status」ペインで、クラスタのメニューを展開し、「Stop」をクリックした後、確認するように要求されたら「Stop」を再びクリックします。図2-9を参照してください。

このページに移動するには、「Home」タブをクリックし、「Status」サブタブをクリックします。

3. 「Command Details」ページで、すべてのプロセスが停止したら「Close」をクリックします。

4. Cloudera Management Servicesの同じペインで、mgmtサービスのメニューを展開し、「Stop」をクリックします。

5. Cloudera Managerからログアウトします。

図2-9 HDFSサービスの停止

2.9.2.2 Cloudera Manager Serverの停止

次の手順に従って、Cloudera Manager Serverを停止します。

1. Cloudera Managerが実行されているノード(最初はnode03)にrootとしてログインします。

注意:

残りのタスクでは、サーバーにrootとしてログインしているとみなされます。dcliコマンドを使用すると、任意のサーバーからコマンドを入力できます。この例では、クラスタ内の任意のノードからnode03でpwdコマンドを実行します。

# dcli -c node03 pwd

2. Cloudera Managerサーバーを停止します。

# service cloudera-scm-server stop
Stopping cloudera-scm-server:                              [  OK  ]

3. サーバーが停止したことを確認します。

# service cloudera-scm-server status
cloudera-scm-server is stopped

Cloudera Managerを停止した後、Webコンソールを使用してアクセスすることはできません。

2.9.2.3 Oracle Data Integratorエージェントの停止

Oracle Data Integratorがクラスタで使用されている場合:

1. Oracle Data Integratorエージェントのステータスを確認します。

# dcli -C service odi-agent status

2. Oracle Data Integratorエージェントが実行中の場合は、停止します。

# dcli -C service odi-agent stop

3. Oracle Data Integratorエージェントの実行が停止したことを確認します。

# dcli -C service odi-agent status

2.9.2.4 NFSディレクトリのディスマウント

すべてのノードがnode03でNFSディレクトリを共有しており、追加のディレクトリが存在する場合もあります。NFSディレクトリ(/opt/exportdir)を含むサーバーを使用できない場合、停止しようとすると他のサーバーがハングします。したがって、まずNFSディレクトリをディスマウントする必要があります。

1. マウントされているNFSディレクトリを探します。

# dcli -C mount | grep shareddir
192.0.2.1: bda1node03.example.com:/opt/exportdir on /opt/shareddir type nfs (rw,tcp,soft,intr,timeo=10,retrans=10,addr=192.0.2.3)
192.0.2.2: bda1node03.example.com:/opt/exportdir on /opt/shareddir type nfs (rw,tcp,soft,intr,timeo=10,retrans=10,addr=192.0.2.3)
192.0.2.3: /opt/exportdir on /opt/shareddir type none (rw,bind)
.
.
.

サンプル出力は、node03 (192.0.2.3)上の共有ディレクトリを示します。

2. 共有ディレクトリをディスマウントします。

# dcli -C umount /opt/shareddir

3. カスタムNFSディレクトリをディスマウントします。

2.9.2.5 サーバーの停止

Linuxのshutdown -hコマンドは、個別のサーバーの電源を切断します。dcli -gコマンドを使用すると、複数のサーバーを停止できます。

1. クラスタ内の他のサーバー(つまり、ログインしているサーバーを除く)の名前またはIPアドレスをリストしたファイルを作成します。

2. 他のサーバーを停止します。

# dcli -g filename shutdown -h now

filenameには、手順1で作成したファイルの名前を入力します。

3. ログインしているサーバーを停止します。

# shutdown -h now

2.9.2.6 インフィニバンドおよびCiscoスイッチの停止

ネットワーク・スイッチを停止するには、データ・センターのPDUまたはブレーカをオフにします。スイッチがオフになるのは、電源を切断した場合のみです。

ネットワーク・スイッチには電源ボタンがありません。停止するのは、電源を切断した場合のみです。

スイッチを停止するには、2つのPDUのすべてのブレーカをオフにします。

2.9.3 Oracle Big Data Applianceの起動

次の手順に従って、ハードウェアの電源を投入し、Oracle Big Data Appliance上のすべてのサービスを開始します。

2.9.3.1 Oracle Big Data Applianceの電源投入

1. 両方のPDUの12個すべてのブレーカのスイッチを入れます。

2. Oracle ILOMおよびLinuxオペレーティング・システムがサーバーで起動するには4から5分かかります。

サーバーが自動的に起動しない場合は、サーバーの前面にある電源ボタンを押してローカルで起動するか、またはOracle ILOMを使用してリモートで起動できます。Oracle ILOMには、コマンドライン・インタフェース(CLI)やWebコンソールなど、複数のインタフェースがあります。必要なインタフェースを使用します。

たとえば、rootとしてWebインタフェースにログインし、「Remote Power Control」ページからサーバーを起動できます。Oracle ILOMのURLはホストのものと同じですが、通常は-cまたは-ilom拡張子が付いている点が異なります。このURLはbda1node4のOracle ILOMに接続します。

http://bda1node04-ilom.example.com

2.9.3.2 HDFSソフトウェア・サービスの開始

Cloudera Managerが制御するすべてのHDFSサービスを開始するには、Cloudera Managerを使用します。

1. Cloudera Managerが実行されているノード(最初はnode03)にrootとしてログインします。

注意:

残りのタスクでは、サーバーにrootとしてログインしているとみなされます。dcliコマンドを使用すると、任意のサーバーからコマンドを入力できます。この例では、クラスタ内の任意のノードからnode03でpwdコマンドを実行します。

# dcli -c node03 pwd

2. Cloudera Managerがnode03で自動的に起動したことを確認します。

# service cloudera-scm-server status
cloudera-scm-server (pid  11399) is running...

3. 実行されていない場合は、起動します。

# service cloudera-scm-server start

4. adminユーザーとしてCloudera Managerにログインします。

「Cloudera Managerを使用した操作の管理」を参照してください。

5. 開始ページの「Status」ペインで、クラスタのメニューを展開し、「Start」をクリックした後、確認するように要求されたら「Start」を再びクリックします。図2-9を参照してください。

このページに移動するには、「Home」タブをクリックし、「Status」サブタブをクリックします。

6. 「Command Details」ページで、すべてのプロセスが開始されたら「Close」をクリックします。

7. Cloudera Management Servicesの同じペインで、mgmtサービスのメニューを展開し、「Start」をクリックします。

8. Cloudera Managerからログアウトします(オプション)。

2.9.3.3 Oracle Data Integratorエージェントの起動

Oracle Data Integratorがこのクラスタで使用されている場合:

1. エージェントのステータスを確認します。

# /opt/oracle/odiagent/agent_standalone/oracledi/agent/bin/startcmd.sh OdiPingAgent [-AGENT_NAME=agent_name]

2. エージェントを起動します。

# /opt/oracle/odiagent/agent_standalone/oracledi/agent/bin/agent.sh [-NAME=agent_name] [-PORT=port_number]

2.10 Oracle Big Data SQLの管理

Oracle Big Data SQLは、アドオン・サービスとしてCloudera Managerに登録されます。Cloudera Managerを使用すると、CDHサービスと同じ方法でOracle Big Data SQLサービスまたは個別のロール・インスタンスを起動、停止および再起動できます。

Cloudera ManagerはOracle Big Data SQLサービスの状態を監視し、サービスの停止をレポートして、サービスが正常に機能していない場合はアラートを送信します。

2.10.1 Oracle Big Data SQLサービスの追加および削除

Oracle Big Data SQLはOracle Big Data Appliance上のオプションのサービスです。ソフトウェアの初期インストール時またはアップグレード時に他のクライアントとともにインストールすることもできます。インストールされているかどうかを判断するには、Cloudera Managerを使用します。個別のライセンスが必要です。Oracle Big Data SQLはOracle Big Data Applianceのライセンスには含まれていません。

Cloudera Managerを使用して、Oracle Big Data Appliance上のCDHクラスタからOracle Big Data SQLサービスを追加または削除することはできません。かわりに、Mammothがインストールされているサーバー(通常はクラスタの第1ノード)にログインし、bdacliユーティリティで次のコマンドを使用します。

- Oracle Big Data SQLを有効化するには、次の手順を実行します。

bdacli enable big_data_sql

- Oracle Big Data SQLを無効化するには、次の手順を実行します。

bdacli disable big_data_sql

関連項目:

『Oracle Big Data Applianceオーナーズ・ガイド』

2.10.2 Oracle Big Data SQLへのリソースの割当て

Linuxカーネルのコントロール・グループ(Cgroup)のプロパティ値を変更すると、Oracle Big Data SQL用にリソースを予約できます。

リソース管理の構成設定を変更するには、次の手順を実行します。

1. adminとしてCloudera Managerにログインします。

2. 「Home」ページで、サービスのリストからbigdatasqlをクリックします。

3. bigdatasqlページで、「Configuration」をクリックします。

4. 「Category」で、「BDS Server Default Group」を展開し、「Resource Management」をクリックします。

5. 必要に応じて、次のプロパティの値を変更します。

- Cgroup CPU Shares

- Cgroup I/O Weight

- Cgroup Memory Soft Limit

- Cgroup Memory Hard Limit

ガイドラインのページの「Description」列を確認します。

6. 「Save Changes」をクリックします。

7. 「Actions」メニューから、「Restart」をクリックします。

図2-10に、bigdatasqlサービスの構成ページを示します。

図2-10 Oracle Big Data SQLのCgroup設定の変更

関連項目:

「サービス間でのリソースの割当て」。

2.11 Oracle Big Data Applianceのセキュリティ

Oracle Big Data Applianceではソフトウェアやデータの不正利用を防ぐための予防策を取ることができます。

この項の内容は次のとおりです。

- 事前定義済のユーザーおよびグループについて

- ユーザー認証について

- ファイングレイン認証について

- Oracle Big Data Applianceで使用されるポート番号

- Puppetのセキュリティについて

2.11.1 事前定義済のユーザーおよびグループについて

Oracle Big Data Applianceにインストールされるオープンソース・パッケージごとに、1つ以上のユーザーおよびグループが作成されます。このようなユーザーのほとんどは、ログイン権限、シェル、またはホーム・ディレクトリを持っていません。これらはデーモンによって使用され、各ユーザー向けのインタフェースとしては設計されていません。たとえば、Hadoopはhdfsユーザーとして、MapReduceはmapredとして、Hiveはhiveとしてそれぞれ動作します。

Oracle Big Data Applianceソフトウェアのインストール直後にHadoopおよびHiveジョブを実行するには、oracle IDを使用できます。このユーザー・アカウントは、ログイン権限、シェル、およびホーム・ディレクトリを保持しています。

Oracle NoSQL DatabaseおよびOracle Data Integratorはoracleユーザーとして実行します。プライマリ・グループはoinstallです。

注意:

インストール時に作成されたユーザーは、ソフトウェアの操作に必要なため、削除、再作成および変更はしないでください。

表2-11に、Oracle Big Data Applianceソフトウェアのインストール時に自動的に作成され、CDHコンポーネントおよびその他のソフトウェア・パッケージによって使用されるオペレーティング・システム・ユーザーおよびグループを示します。

表2-11 オペレーティング・システム・ユーザーおよびグループ

ユーザー名

グループ

使用者

ログイン権限

flume

flume

Apache Flume親およびノード

なし

hbase

hbase

Apache HBaseプロセス

なし

hdfs

hadoop

NameNode、DataNode

なし

hive

hive

Hiveメタストアおよびサーバー・プロセス

なし

hue

hue

Hueプロセス

なし

mapred

hadoop

ResourceManager、NodeManager、Hive Thriftデーモン

あり

mysql

mysql

MySQLサーバー

あり

oozie

oozie

Oozieサーバー

なし

oracle

dba、oinstall

Oracle NoSQL Database、Oracle Loader for Hadoop、Oracle Data IntegratorおよびOracle DBA

あり

puppet

puppet

Puppet親(rootとして実行されるpuppetノード)

なし

sqoop

sqoop

Apache Sqoopメタストア

なし

svctag

自動サービス・リクエスト

なし

zookeeper

zookeeper

ZooKeeperプロセス

なし

2.11.2 ユーザー認証について

Oracle Big Data Applianceは、ソフトウェア・インストールのオプションとしてKerberosセキュリティをサポートしています。Kerberosで保護されているクラスタにアクセスするためのクライアントとユーザーの設定の詳細は、「Oracle Big Data Applianceへのユーザー・アクセスのサポート」を参照してください。

2.11.3 ファイングレイン認証について

Hadoop上の通常の認可モデルはHDFSファイル・レベルであり、ユーザーはファイル内のすべてのデータへのアクセス権を持っているか、またはまったく持っていないかのどちらかです。対照的に、Apache SentryはHiveおよびImpala SQL問合せエンジンと統合され、Hadoopに格納されているデータに対するファイングレイン認証の機能を備えています。

Mammothユーティリティ・バージョン2.5より、Oracle Big Data Applianceは、ソフトウェアのインストール中にSentryを自動的に構成します。

関連項目:

- Cloudera Managerのヘルプ

- Cloudera Managerを使用したクラスタの管理
https://www.cloudera.com/content/cloudera-content/cloudera-docs/CM4Ent/latest/Cloudera-Manager-Managing-Clusters/Managing-Clusters-with-Cloudera-Manager.html

2.11.4 HDFSでの透過的暗号化について

HDFSでの透過的暗号化では、ディスク上に保存されているHadoopデータを保護します。HDFSでの透過的暗号化をOracle Big Data Appliance上のクラスタについて有効化すると、ディスク上の暗号化されたゾーン(HDFSディレクトリ)に対するデータ書込みとデータ読取りが、自動的に暗号および復号化されます。このプロセスは、そのデータを処理しているアプリケーションには表示されないため、透過的です。

HDFSでの透過的暗号化は、パフォーマンスに若干影響する可能性はありますが、Hadoopデータへのユーザー・アクセスには影響しません。

HDFSでの透過的暗号化は、Mammothユーティリティによるソフトウェアの初期インストール時に選択できるオプションです。また、bdacliユーティリティを使用して、いつでもHDFSでの透過的暗号化を有効または無効にすることもできます。HDFSでの透過的暗号化は、Kerberosで保護されたクラスタ上にのみインストールできることに注意してください。

Oracle Big Data Applianceに付属しているHDFSでの透過的暗号化の現行バージョンでは、Navigator Key Trustee (キーおよび証明書を管理するサービス)をOracle Big Data Appliance外部の別のサーバー上に設定する必要があります。Cloudera Navigator Key Trusteeを外部サーバー上にインストールし、HDFSでの透過的暗号化に使用できるよう構成するために必要な手順およびインストール・パッケージは、プライマリ・ノード(/opt/oracle/BDAMammoth/source/NAVIGATOR-KEY-TRUSTEE/3.8.0-ol6)にあります。

このディレクトリには、次のドキュメントが含まれています。

- Cloudera_Navigator_Key_Trustee_Server_Admin_Guide-C5.3.0.pdf

- Cloudera_HDFS_Encryption_Navigator_Key_Trustee_Integration-C5.3.0.pdf

YUMまたはRPMのいずれかを使用して、ドキュメントと同じディレクトリで入手可能なパッケージの完全なセットをインストールします。ドキュメントの説明に従って、外部リポジトリからのパッケージをインストールしないでください。これらのダウンロードには、特別な資格情報が必要です。

注意:

HDFSでの透過的暗号化またはKerberosのいずれかが無効化されている場合、クラスタ内のHDFSでの透過的暗号化ゾーンに格納されているデータは暗号化されたままとなるため、アクセス不可です。データへのアクセスをリストアするには、同じキー・プロバイダを使用して、HDFSでの透過的暗号化を再度有効化します。

関連項目:

『Oracle Big Data Applianceオーナーズ・ガイド』

暗号化ゾーンにおけるファイルの管理の詳細は、HDFSによる休止状態での暗号化に関するClouderaドキュメント(http://www.cloudera.com)を参照してください。

2.11.5 HTTPS/ネットワーク暗号化について

Big Data ApplianceでのHTTPSネットワーク/暗号化には、次の2つのコンポーネントがあります。

- Web Interface Encryption
WebインタフェースCloudera Manager、OozieおよびHUEについてHTTPSを構成します。この暗号化は、新しいMammothインストールでは自動的に有効化されるようになりました。現在のインストールでは、bdacliユーティリティを介して有効化できます。この機能では、Kerberosが有効化されている必要があります。

- Encryption for Data in Transit and Services
この機能には、2つのサブコンポーネントがあります。どちらも、インストール時に構成ユーティリティで有効にしたり、いつでもbdacliユーティリティを使用して有効化/無効化することができるオプションです。どちらの場合もKerberosが有効化されている必要があります。

- Encrypt Hadoop Services
これには、HDFS、MapReduceおよびYARNの各Webインタフェース用のSSL暗号化やMapReduceとYARN用の暗号化シャッフルが含まれます。また、これにより、MapReduceおよびYARNロールのWebコンソールへのアクセスの認証も有効化されます。

- Encrypt HDFS Data Transport
このオプションにより、DataNodeとクライアントとの間およびDataNode間で転送されるデータの暗号化が有効化されます。

HTTPS/ネットワーク暗号化は、クラスタごとに有効化および無効化されます。『Oracle Big Data Applianceオーナーズ・ガイド』の構成ユーティリティの説明には、クラスタを作成するときに、HadoopサービスおよびHDFSデータ・トランスポートの暗号化を有効化するための設定が含まれています。bdacliユーティリティのリファレンス・ページ(または『Oracle Big Data Applianceオーナーズ・ガイド』)には、HTTPS/ネットワーク暗号化コマンドライン・オプションについて記載されています。

関連項目:

CDHクラスタを保護するためにKerberosを使用する方法の概要は、「Oracle Big Data Applianceへのユーザー・アクセスのサポート」を参照してください。

保存されているHadoopデータを対象としたOracle Big Data Applianceセキュリティの詳細は、「HDFSでの透過的暗号化について」を参照してください。

Cloudera ManagerにおけるHTTPS通信およびCDHにおけるネットワークレベルの暗号化の詳細は、Clouderaドキュメント(http://www.cloudera.com)を参照してください。

2.11.5.1 Kerberos認証を使用するためのWebブラウザの構成

Webインタフェースの暗号化が有効になっている場合、暗号化されたWebインタフェースにアクセスしている各Webブラウザは、Kerberosで認証するように構成されている必要があります。これは、Kerberosを必要としないCloudera Manager、OozieおよびHueの各Webインタフェースでは不要であることに注意してください。

Kerberos認証用にMozilla Firefox[5]、Microsoft Internet Explorer[6]およびGoogle Chrome[7]を構成する手順は、次のとおりです。

Mozilla Firefoxを構成するには、次の手順を実行します。

1. ロケーション・バーにabout:configと入力します。

2. about:configページの「検索」ボックスに、network.negotiate-auth.trusted-urisと入力します

3. 「設定名」の下の、network.negotiate-auth.trusted-urisをダブルクリックします。

4. 「文字列を入力してください」ダイアログで、Kerberosによって保護するWebサーバーのホスト名またはドメイン名を入力します。複数のドメインおよびホスト名は、カンマで区切ります。

Microsoft Internet Explorerを構成するには、次の手順を実行します。

1. ローカル・イントラネット・ドメインを構成します。

a. Microsoft Internet Explorerを開き、右上隅にある「設定」歯車アイコンをクリックします。「インターネット オプション」を選択します。

b. 「セキュリティ」タブを選択します。

c. 「ローカル イントラネット」ゾーンを選択して、「サイト」をクリックします。

d. 最初の2つのオプション「ほかのゾーンにないローカル (イントラネット) のサイトをすべて含める」および「プロキシ サーバーを使用しないサイトをすべて含める」を選択します。

e. 「ローカル イントラネット」ダイアログ・ボックスで「詳細設定」をクリックし、一度に1つずつ、Kerberosで保護されたドメインの名前をWebサイトのリストに追加します。

f. 「閉じる」をクリックします。

g. 「OK」をクリックして構成変更を保存してから、もう一度「OK」をクリックし、「インターネット オプション」パネルを終了します。

2. Microsoft Internet Explorer用のイントラネット認証を構成します。

a. 右上隅にある「設定」歯車アイコンをクリックします。「インターネット オプション」を選択します。

b. 「セキュリティ」タブを選択します。

c. 「ローカル イントラネット」ゾーンを選択して、「レベルのカスタマイズ...」ボタンをクリックし、「セキュリティ設定 - ローカル イントラネット ゾーン」ダイアログ・ボックスを開きます。

d. 「ユーザー認証」オプションまで下方向にスクロールして、「イントラネット ゾーンでのみ自動的にログオンする」を選択します。

e. 「OK」をクリックして、変更内容を保存します。

Google Chromeを構成するには、次の手順を実行します。

Microsoft Windowsを使用している場合、「コントロール パネル」を使用して、「インターネット オプション」ダイアログ・ボックスに移動します。必要な構成変更は、Microsoft Internet Explorerについて前述した内容と同じです。

[8]またはLinuxでは、--auth-server-whitelistパラメータをgoogle-chromeコマンドに追加します。たとえば、ChromeをLinuxプロンプトから実行するには、google-chromeコマンドを次のように実行します

google-chrome --auth-server-whitelist = "hostname/domain"

注意:
Microsoft Windowsでは、WindowsユーザーはKerberosレルムのユーザーである必要があり、有効なチケットを処理する必要があります。これらの要件が満たされない場合は、Kerberosで保護されたWebインタフェースにアクセスしようとすると、ブラウザにHTTP 403が表示されます。

2.11.6 Oracle Big Data Applianceで使用されるポート番号

表2-12に、CDH用のポート番号の他に使用される可能性のあるポート番号を示します。

特定のサーバー上で使用されるポート番号を確認するには、次の手順を実行します。

1. Cloudera Managerで、ページ上部にある「Hosts」タブをクリックして、「Hosts」ページを表示します。

2. 「Name」列でサーバーのリンクをクリックすると、その詳細ページが表示されます。

3. 「Ports」セクションまで下方向にスクロールします。

関連項目:

CDHのポート番号の詳細なリストは、次に示すClouderaのWebサイトを参照してください。

http://www.cloudera.com/content/cloudera-content/cloudera-docs/CM5/latest/Cloudera-Manager-Installation-Guide/cm5ig_config_ports.html

表2-12 Oracle Big Data Applianceのポート番号

サービス

ポート

自動サービス・モニター(ASM)

30920

HBaseマスター・サービス(node01)

60010

MySQL Database

3306

Oracle Data Integratorエージェント

20910

Oracle NoSQL Database管理

5001

Oracle NoSQL Databaseプロセス

5010から5020

Oracle NoSQL Database登録

5000

ポート・マップ

111

Puppetマスター・サービス

8140

Puppetノード・サービス

8139

rpc.statd

668

ssh

22

xinetd (サービス・タグ)

6481

2.11.7 Puppetのセキュリティについて

Puppetノード・サービス(puppetd)は、すべてのサーバー上でrootとして継続的に実行されます。Puppetマスターに対する更新リクエストのトリガーとなるキック・リクエストを、ポート8139上でリスニングします。このポート上で更新は受信しません。

Puppetマスター・サービス(puppetmasterd)は、Oracle Big Data Applianceのプライマリ・ラックの第1サーバー上で、Puppetユーザーとして継続的に実行されます。ポート8140上で、Puppetノードに更新をプッシュするリクエストをリスニングします。

Puppetノードは、ソフトウェアのインストール時に初期登録するため、証明書を生成してPuppetマスターに送信します。ソフトウェアのアップデートの場合は、PuppetマスターからPuppetノードに信号(キック)が送信され、そこから登録先のPuppetマスター・ノードに対して、すべての構成変更がリクエストされます。

Puppetマスターは、既知の有効な証明書を保持しているPuppetノードに対してのみ更新を送信します。Puppetノードは、初期登録されたPuppetマスターのホスト名からの更新のみを受け付けます。Oracle Big Data Applianceでは、ラック内の通信に内部ネットワークを使用するため、Puppetマスターのホスト名は、/etc/hostsを使用して、内部のプライベートIPアドレスに解決されます。

2.12 Oracle Big Data Applianceの監査

Oracle Audit Vault and Database Firewallを使用して、Oracle Big Data ApplianceでHDFSとMapReduceの監査証跡を作成し、監視できます。

この項では、Oracle Big Data Applianceのプラグインについて次の内容を説明します。

- Oracle Audit Vault and Database Firewallについて

- Oracle Big Data Applianceプラグインの設定

- Oracle Big Data Applianceの監視

2.12.1 Oracle Audit Vault and Database Firewallについて

Oracle Audit Vault and Database Firewallは、データベースや、ITインフラストラクチャで重要なその他のコンポーネントを、主として次のような形で保護します。

- 企業の監査プラットフォームを統合します。

- Oracle Database、Oracle Big Data Appliance、オペレーティング・システム、ディレクトリ、ファイル・システムなどにおけるアクティビティを取得します。

- 企業全体のアクティビティを把握できるように、監査情報を単一のレポート・フレームワークで使用可能にします。各システムを個々に監視する必要はなく、コンピュータ・インフラストラクチャを全体として確認できます。

Audit Vault Serverには、管理者と監査者の両方が使用できるWebベースのグラフィカル・ユーザー・インタフェースがあります。

Oracle Big Data ApplianceでCDH/Hadoopクラスタをセキュア・ターゲットとして構成できます。Oracle Big Data ApplianceのAudit Vaultプラグインは、次のサービスから監査データとロギング・データを収集します。

- HDFS: ファイル・システムに誰が変更を加えるか。

- Hive DDL: Hiveデータベースを誰が変更するか。

- MapReduce: ファイル・アクセスに対応するMapReduceジョブを誰が実行するか。

- Oozieワークフロー: 誰がワークフロー・アクティビティを実行するか。

Audit Vaultプラグインは、オプションとしてインストールされます。Mammothユーティリティは、ソフトウェア・インストール・プロセスの一部としてOracle Big Data Applianceでの監視を自動的に構成します。

関連項目:

Oracle Audit Vault and Database Firewallの詳細は、次を参照してください。

http://www.oracle.com/technetwork/database/database-technologies/audit-vault-and-database-firewall/overview/index.html

2.12.2 Oracle Big Data Applianceプラグインの設定

プラグインの設定に必要な手順はすべて、ユーザーが指定した情報を使用してOracle Big Data ApplianceのMammothユーティリティが実行します。

Oracle Big Data Appliance用のAudit Vaultプラグインを設定するには、次の手順を実行します。

1. Oracle Big Data Applianceと同じネットワーク上で、Oracle Audit Vault and Database Firewall Serverリリース12.1.1が稼働していることを確認します。

関連項目:

『Oracle Audit Vault and Database Firewallインストレーション・ガイド』

2. Oracle Big Data Appliance構成生成ユーティリティの「Audit Vault Plug-in」セクションをすべて指定します。

3. Mammothユーティリティを使用して、Oracle Big Data Applianceソフトウェアをインストールします。このステップは通常、オラクル社の担当者が実行します。
また、後で、bdacliを使用してプラグインを追加することもできます。詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

ソフトウェアのインストールが完了するとOracle Big Data ApplianceにAudit Vaultプラグインがインストールされ、Oracle Audit Vault and Database Firewallがその監査情報を収集します。他のインストール手順を実行する必要はありません。

関連項目:

Oracle Big Data Appliance構成生成ユーティリティの使用方法の詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

2.12.3 Oracle Big Data Applianceの監視

プラグインのインストールが終わると、他のセキュア・ターゲットと同様にOracle Big Data Applianceを監視できるようになります。Audit Vault Serverは、アクティビティ・レポートを自動的に収集します。

次の手順では、あるタイプの監視アクティビティについて説明します。

Oracle Big Data Applianceのアクティビティ・レポートを表示するには、次の手順を実行します。

1. Audit Vault Serverに監査者としてログインします。

2. 「Reports」タブをクリックします。

3. 「Built-in Reports」で、「Audit Reports」をクリックします。

4. すべてのアクティビティを参照するには、「Activity Reports」リストで「All Activity」のBrowse report dataアイコンをクリックします。

5. イベントをリストするフィルタを追加または削除します。
イベント名には、ACCESS、CREATE、DELETEおよびOPENがあります。

6. 最初の列にあるSingle row viewアイコンをクリックして、詳細レポートを表示します。

図2-11に、アクティビティ・レポートの冒頭を示します。これには、Hadoop順序ファイルへのアクセスが記録されています。

図2-11 Audit Vault Serverにおけるアクティビティ・レポート

関連項目:

Oracle Audit Vault and Database Firewall監査者ガイド

2.13 オラクル社カスタマ・サポートに提供する診断情報の収集

CDHの問題のトラブルシューティングを行うために、Oracleサポートのアドバイスが必要な場合は、まずbdadiagユーティリティをcmオプションを指定して使用し、診断情報を収集してください。

診断情報を収集するには、次の手順を実行します。

1. Oracle Big Data Applianceサーバーにrootとしてログインします。

2. 少なくともcmオプションを指定してbdadiagを実行します。必要に応じてコマンドに他のオプションを含めることができます。bdadiagの構文の詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

# bdadiag cm

コマンド出力によって、診断ファイルの名前と場所が識別されます。

3. My Oracle Support (http://support.oracle.com)へ移動します。

4. サービス・リクエスト(SR)を開きます(まだ開いていない場合)。

5. SRにbz2ファイルをアップロードします。ファイルのサイズが大きすぎる場合は、sftp.oracle.comにアップロードしてください(次の手順を参照)。

診断情報をftp.oracle.comにアップロードするには、次の手順を実行します。

1. SFTPクライアントを開き、sftp.oracle.comに接続します。ポート2021とリモート・ディレクトリ/support/incoming/targetを指定します(targetは、Oracle Supportにより指定されたフォルダ名です)。

2. Oracle Single Sign-Onのアカウントとパスワードでログインします。

3. 診断ファイルを新しいディレクトリにアップロードします。

4. このフル・パスおよびファイル名でSRを更新します。

関連項目:

My Oracle Support Note 549180.1

http://support.oracle.com

[1] nnには追加ラック内のサーバーが含まれます。

[2] nnには追加ラック内のサーバーが含まれます。

[3] 9個以上のノード

[4] 9個以上のノード

[5] Mozilla Firefoxは、Mozilla Foundationの登録商標です。

[6] Microsoft Internet Explorerは、Microsoft Corporationの登録商標です。

[7] Google Chromeは、Google Incの登録商標です

[8] Mac OSは、Apple, Incの登録商標です。

3 Oracle Big Data Applianceへのユーザー・アクセスのサポート

この章では、Oracle Big Data Appliance上でMapReduceジョブを実行、またはOracle Big Data Connectorsを使用しているユーザーをサポートする方法について説明します。次の項について説明します。

- Kerberosで保護されたクラスタへのアクセスについて

- CDHへのリモート・クライアント・アクセスの提供

- Hiveへのリモート・クライアント・アクセスの提供

- ユーザー・アカウントの管理

- 削除されたファイルのリカバリ

3.1 Kerberosで保護されたクラスタへのアクセスについて

Apache Hadoopは、本質的に安全なシステムではありません。ネットワーク・セキュリティによってのみ保護されています。接続が確立されると、クライアントはシステムに対して完全なアクセス権限を取得します。

こうしたオープンな環境に対処するために、Oracle Big Data Applianceは、ソフトウェア・インストールのオプションとしてKerberosセキュリティをサポートしています。Kerberosは、悪質な偽装の防止に効果的なネットワーク認証プロトコルです。Oracle Big Data Applianceでは、MIT KerberosとMicrosoft  Active Directory Kerberosの2つの形式のKerberos Hadoopセキュリティがサポートされています。

Kerberosを使用するように構成された場合、CDHは次のセキュリティを提供します。

- CDHマスター・ノード、NameNodeおよびJournalNodeでグループ名を解決し、ユーザーがグループのメンバーシップを操作できないようにします。

- マップ・タスクはジョブを発行したユーザーのアイデンティティの下で実行されます。

- HDFSの認可メカニズムおよびMapReduceを使用して、ユーザーのデータ・アクセスを制御します。

Oracle Big Data Applianceでは、Microsoft Active Directory (AD)サーバーを使用して、(Cloudera Managerでサポートされているように) Kerberosがサポートされるよう、Kerberosセキュリティを直接構成できます。

Mammoth構成の一部として、オプションでいずれかの形式のKerberosを有効化できます。bdacliユーティリティを使用して、後からKerberosを有効化または無効化することもできます。

Oracle Big Data ApplianceクラスタをKerberosで保護する場合には、この章で説明するように、CDHクライアントと個々のユーザーを認証するための追加の手順が必要です。ユーザーは、Kerberosユーザー名、パスワードおよびレルムを把握している必要があります。

表3-1では、よく使用されるKerberosのコマンドについて説明します。詳細は、MITのKerberosに関するドキュメントを参照してください。

表3-1 Kerberosのユーザー・コマンド

コマンド

説明

kinit userid@realm

Kerberosチケットを取得します。

klist

すでにチケットがある場合に、Kerberosチケットをリストします。

kdestroy

有効期限が切れる前にチケットを無効にします。

kpasswd userid@realm

パスワードを変更します。

関連項目:

- 次の場所にあるMITのKerberosに関するドキュメント
http://web.mit.edu/kerberos/krb5-latest/doc/

- 次の場所にある『CDH4 Security Guide』
http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH5/latest/CDH5-Security-Guide/CDH5-Security-Guide.html

- Mammothまたはbdacliユーティリティのいずれかを使用してActive Directory Kerberosを有効化することを選択する場合は、最初にMy Oracle Support (MOS)ドキュメント2029378.1および2013585.1を参照してください。これらのドキュメントには、必要な準備手順についての説明と既知の問題に関する重要な情報が記載されています。

3.2 CDHへのリモート・クライアント・アクセスの提供

Oracle Big Data Applianceでは、Cloudera's Distribution including Apache Hadoop (CDH)のすべてのコマンドおよびユーティリティに対する完全なローカル・アクセスをサポートしています。

Oracle Big Data Applianceのクライアント・ネットワークにアクセスできる任意のコンピュータ上でブラウザを使用すれば、Cloudera Manager、Hadoop Map/Reduce Administration、Hadoop Task TrackerインタフェースなどのブラウザベースのHadoopツールにアクセスできます。

ただし、リモートでHadoopコマンドを発行するには、CDHクライアントとして構成され、Oracle Big Data Applianceクライアント・ネットワークへのアクセス権を持つシステムから接続する必要があります。この項では、HDFSにアクセスしてOracle Big Data Appliance上でMapReduceジョブを発行できるよう、コンピュータを設定する方法について説明します。

関連項目:

My Oracle Support ID 1506203.1

3.2.1 前提条件

次の前提条件を満たしていることを確認します。

- 次のアクセス権限を持っている必要があります。

- クライアント・システムへのsudoアクセス権

- Cloudera Managerへのログイン・アクセス権

これらの権限がない場合は、社内のシステム管理者にお問い合せください。

- クライアント・システムが、ClouderaでCDH5用にサポートされているオペレーティング・システムを実行している必要があります。次の場所にある『Cloudera CDH5 Installation Guide』を参照してください。
http://www.cloudera.com/content/www/en-us/documentation/cdh/5-0-x/CDH5-Installation-Guide/CDH5-Installation-Guide.html

- クライアント・システムが、Oracle JDK 1.7.0_25以上を実行している必要があります。
バージョンを確認するには、次のコマンドを使用します。

$ java -version
java version "1.7.0_65"
Java(TM) SE Runtime Environment (build 1.7.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

3.2.2 サポートされているすべてのオペレーティング・システムにCDHクライアントをインストールする

CDHクライアントを、Clouderaでのサポート対象として識別されたすべてのオペレーティング・システムにインストールするには、次の指示に従います。

CDHクライアント・ソフトウェアをインストールするには、次の手順を実行します。

1. クライアント・システムにログインします。

2. 以前のバージョンのHadoopがすでにインストールされている場合には、削除します。
以前のCDHバージョンの削除については、次の場所にあるClouderaのドキュメントを参照してください。

http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH5/latest/CDH5-Installation-Guide/cdh5ig_to_cdh5_upgrade.html?scroll=topic_6_3_4_unique_1

3. Oracle Big Data ApplianceのCDHクラスタの任意のノードからCDHソフトウェアをコピーします。たとえば、次のファイルにはCDH 5.3.0ソフトウェアが含まれています。

/opt/oss/src/CDH/5.3.0-ol5/hadoop-2.5.0-cdh5.3.0.tar.gz

4. ファイルを常設の場所に解凍します。これがHadoopのホーム・ディレクトリになります。次のコマンドは、現在のディレクトリでhadoop-2.5.0-cdh5.3.0にファイルを解凍します。

tar -xvzf hadoop-2.5.0-cdh5.3.0.tar.gz

5. CDHクライアントを構成します。「保護されていないクラスタ用のCDHクライアントの構成」を参照してください。

3.2.3 保護されていないクラスタ用のCDHクライアントの構成

CDHをインストールしたら、Oracle Big Data Applianceを操作できるように構成する必要があります。

HADOOP_HOMEを参照するこの手順のコマンドは、この環境変数を必要とする古いHadoopクラスタをサポートするために使用します。クラスタは、YARN (MRv2)を使用し、HADOOP_HOMEを使用しません。古いクライアントがクラスタにアクセスしない場合、これらのコマンドは省略できます。

Hadoopクライアントを構成するには、次の手順を実行します。

1. クライアント・システムにログインし、Cloudera ManagerからMapReduceクライアント構成をダウンロードします。次の例では、Cloudera Managerがbda01node03.example.comのポート7180 (デフォルト)でリスニングしており、構成yarn-conf.zipというファイルに格納されています。

$ wget -O yarn-conf.zip http://bda01node03.example.com:7180/cmf/services/3/client-config

2. mapreduce-config.zipをクライアント・システム上の常設の場所に解凍します。

$ unzip yarn-config.zip
Archive:  yarn-config.zip
inflating: yarn-conf/hadoop-env.sh
inflating: yarn-conf/hdfs-site.xml
inflating: yarn-conf/core-site.xml
inflating: yarn-conf/mapred-site.xml
inflating: yarn-conf/log4j.properties
inflating: yarn-conf/yarn-site.xml

すべてのファイルは、yarn-configという名前のサブディレクトリに格納されます。

3. 次のようにして、シンボリック・リンクを設定します。

ln -s $HADOOP_HOME/../../../bin-mapreduce1 $HADOOP_HOME/bin
ln -s $HADOOP_HOME/../../../etc/hadoop-mapreduce1 $HADOOP_HOME/conf
rm -f $HADOOP_HOME/lib/slf4j-log4j*jar

4. hadoop-env.shをテキスト・エディタで開き、環境変数をシステム上の実際のパスに設定します。

export HADOOP_HOME=hadoop-home-dir/share/hadoop/mapreduce1
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=yarn-conf-dir
export JAVA_HOME=/usr/java/version
alias hadoop=$HADOOP_HOME/bin/hadoop
alias hdfs=$HADOOP_HOME/../../../bin/hdfs

5. Hadoop構成ファイルのバックアップ・コピーを作成します。

# cp /full_path/yarn-conf /full_path/yarn-conf-bak

6. ステップ2でダウンロードした構成ファイルで既存の構成ファイルを上書きします。

# cd /full_path/yarn-conf
# cp * /usr/lib/hadoop/conf

3.2.4 Kerberosで保護されたクラスタ用のCDHクライアントの構成

CDHクライアントをセキュアなCDHクラスタで動作できるようにするには、次の手順に従います。

Kerberos用にCDHクライアントを構成するには、次の手順を実行します。

1. CDHクライアントを作成するシステムにログインします。

2. Java Cryptography Extension Unlimited Strength Jurisdiction Policy Filesをインストールします。

a. 使用しているJavaのバージョン用のファイルをダウンロードします。
Java 6: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

Java 7: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

b. ダウンロードしたファイルを解凍します。この例では、JCE-7を解凍しています。

$ unzip UnlimitedJCEPolicyJDK7.zip
Archive:  UnlimitedJCEPolicyJDK7.zip
creating: UnlimitedJCEPolicy/
inflating: UnlimitedJCEPolicy/US_export_policy.jar
inflating: UnlimitedJCEPolicy/local_policy.jar
inflating: UnlimitedJCEPolicy/README.txt

注意:

JCE-6ファイルが、UnlimitedJCEPolicyではなくjceという名前のディレクトリに解凍されます。

c. 解凍されたファイルをJavaのセキュリティ・ディレクトリにコピーします。次に例を示します。

$ cp UnlimitedJCEPolicy/* /usr/java/latest/jre/lib/security/

3. 保護されていないクライアントを構成する手順に従います。
「保護されていないクラスタ用のCDHクライアントの構成」を参照してください。

4. Kerberosレルムに追加されているCDHクラスタのユーザーIDがあることを確認します。
「Hadoopクラスタ・ユーザーの作成」を参照してください。

5. CDHクライアント・システムで、$HADOOP_CONF_DIRディレクトリにkrb5.confという名前のファイルを作成します。インストール環境に応じ、サーバー名、ドメインおよびレルムに適した値を使用して次のように構成設定を入力します。

[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = false
clockskew = 3600
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
EXAMPLE.COM = {
kdc = bda01node01.example:88
admin_server = bda01node07:749
default_domain = example.com
}
[domain_realm]
.com = EXAMPLE.COM

6. 新しい構成ファイルを有効にします。

export KRB5_CONFIG=$HADOOP_CONF_DIR/krb5.conf
export HADOOP_OPTS="-Djava.security.krb5.conf=$HADOOP_CONF_DIR/krb5.conf"
export KRB5CCNAME=$HADOOP_CONF_DIR/krb5cc_$USER

7. Oracle Big Data Applianceクラスタへのアクセス権があることを確認します。
「CDHクライアントからクラスタへのアクセス権の確認」を参照してください。

3.2.5 CDHクライアントからクラスタへのアクセス権の確認

Oracle Big Data Applianceクラスタへのアクセス権があることを確認するには、次の手順に従います。

クラスタのアクセス権を確認するには、次の手順を実行します。

1. Kerberosで保護されたCDHクラスタにアクセスするには、まずチケット発行チケット(TGT)を取得します。

$ kinit userid@realm

2. 次のような簡単なHadoopファイル・システム・コマンドを入力して、クライアントからOracle Big Data ApplianceのHDFSにアクセスできることを確認します。

$ hadoop fs -ls /user
Found 6 items
drwxr-xr-x   - jdoe      hadoop              0 2014-04-03 00:08 /user/jdoe
drwxrwxrwx   - mapred    hadoop              0 2014-04-02 23:25 /user/history
drwxr-xr-x   - hive      supergroup          0 2014-04-02 23:27 /user/hive
drwxrwxr-x   - impala    impala              0 2014-04-03 10:45 /user/impala
drwxr-xr-x   - oozie     hadoop              0 2014-04-02 23:27 /user/oozie
drwxr-xr-x   - oracle    hadoop              0 2014-04-03 11:49 /user/oracle

クライアント・システムではなく、Oracle Big Data Applianceで定義されているHDFSユーザーに対する出力を確認します。Oracle Big Data Appliance上で直接コマンドを入力した場合と同じ結果が表示されます。

3. MapReduceジョブを発行します。Oracle Big Data Appliance上のHDFSユーザー名と同じユーザー名でクライアント・システムにログインする必要があります。
次の例では、piの値を算出します。

$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.2.1.jar pi 10 1000000
Number of Maps  = 10
Samples per Map = 1000000
Wrote input for Map #0
Wrote input for Map #1
.
.
.
Job Finished in 12.403 seconds
Estimated value of Pi is 3.14158440000000000000

4. Cloudera Managerを使用して、ローカル・システムではなくOracle Big Data Applianceでジョブが実行されたことを確認します。「Activities」メニューから「mapreduce Jobs」を選択してジョブのリストを表示します。

図3-1に、前述の例で作成されたジョブを示します。

図3-1 Cloudera ManagerでのYARNジョブの監視

3.3 Hiveへのリモート・クライアント・アクセスの提供

Hiveへのリモート・クライアント・アクセス権を提供するには、次の手順に従います。

Hiveクライアントを設定するには、次の手順を実行します。

1. CDHクライアントを設定します。「CDHへのリモート・クライアント・アクセスの提供」を参照してください。

2. クライアント・システムにログインし、Cloudera ManagerからHiveクライアント構成をダウンロードします。次の例では、Cloudera Managerがbda01node03.example.comのポート7180 (デフォルト)でリスニングしており、構成はhive-conf.zipというファイルに格納されています。

$ wget -O hive-conf.zip http://bda01node03.example.com:7180/cmf/services/5/client-config
Length: 1283 (1.3K) [application/zip]
Saving to: 'hive-conf.zip'
100%[======================================>] 1,283       --.-K/s   in 0.001s
2014-05-15 08:19:06 (2.17 MB/s) - `hive-conf.zip' saved [1283/1283]

3. ファイルを常設のインストール・ディレクトリに解凍します。これがHive構成ディレクトリになります。

$ unzip hive-conf.zip
Archive:  hive-conf.zip
inflating: hive-conf/hive-env.sh
inflating: hive-conf/hive-site.xml

4. ClouderaのWebサイトからHiveソフトウェアをダウンロードします。

$ wget http://archive.cloudera.com/cdh5/cdh/5/hive-0.12.0-cdh5.0.0.tar.gz
Length: 49637596 (47M) [application/x-gzip]
Saving to: 'hive-0.12.0-cdh5.0.0.tar.gz'
100%[======================================>] 49,637,596   839K/s   in 47s
2014-05-15 08:22:18 (1.02 MB/s) - `hive-0.12.0-cdh5.0.0.tar.gz' saved [49637596/49637596]

5. ファイルを常設のインストール・ディレクトリに解凍します。これがHiveのホーム・ディレクトリになります。次のコマンドは、現在のディレクトリでhive-0.12.0-cdh5.0.0という名前のサブディレクトリにファイルを解凍します。

$ tar -xvzf hive-0.12.0-cdh5.0.0.tar.gz
hive-0.12.0-cdh5.0.0/
hive-0.12.0-cdh5.0.0/examples/
.
.
.

6. hive-home-dirとhive-conf-dirを、ステップ3と5で作成したディレクトリに置き換えて、次の変数を設定します。

export HIVE_HOME=hive-home-dir
export HIVE_CONF_DIR=hive-conf-dir
alias hive=$HIVE_HOME/bin/hive

次の手順は、Hiveクライアントが正常に設定されたかどうかをテストします。

Hiveのアクセス権を確認するには、次の手順を実行します。

1. Kerberosで保護されたCDHクラスタにアクセスするには、まずチケット発行チケット(TGT)を取得します。

$ kinit userid@realm

2. Hiveコンソールを開きます。

$ hive
Logging initialized using configuration in jar:file:/usr/lib/hive/lib/hive-common-0.12.0-cdh5.0.0.jar!/hive-log4j.properties
Hive history file=/tmp/oracle/hive_job_log_e10527ee-9637-4c08-9559-a2e5cea6cef1_831268640.txt
hive>

3. すべての表をリストします。

hive> show tables;
OK
src

3.4 ユーザー・アカウントの管理

このセクションでは、HDFS、MapReduceおよびHiveにアクセスできるユーザーの作成方法を説明します。この項の内容は次のとおりです。

- Hadoopクラスタ・ユーザーの作成

- ユーザー・ログイン権限の付与(オプション)

3.4.1 Hadoopクラスタ・ユーザーの作成

ユーザー・アカウントを作成する場合は、次のように定義してください。

- MapReduceジョブを実行するには、ユーザーはhadoopグループに属しているか、または同等の権限を付与されている必要があります。

- Hive内に表を作成または変更するには、ユーザーはhiveグループに属しているか、または同等の権限を付与されている必要があります。

- Hueユーザーを作成するには、ブラウザでHueを開き、「User Admin」アイコンをクリックします。「Cloudera Hueを使用したHadoopの操作」を参照してください。

3.4.1.1 保護されていないクラスタでのユーザーの作成

保護されていないHadoopクラスタ上でユーザーを作成するには、次の手順を実行します。

1. rootユーザーとして、非クリティカル・ノード(node04からnode18)へのssh接続を開きます。

2. ユーザーのホーム・ディレクトリを作成します。

# sudo -u hdfs hadoop fs -mkdir /user/user_name

HDFSスーパー・ユーザーはhdfsである(rootではない)ため、sudoを使用します。

3. ディレクトリの所有者を変更します。

# sudo -u hdfs hadoop fs -chown user_name:hadoop /user/user_name

4. ディレクトリが正しく設定されていることを確認します。

# hadoop fs -ls /user

5. クラスタ内のすべてのノードに対してオペレーティング・システム・ユーザーを作成します。

# dcli useradd -G hadoop,hive[,group_name...] -m user_name

この構文では、group_nameを既存のグループ名、user_nameを新しいユーザー名でそれぞれ置換します。

6. オペレーティング・システム・ユーザーが正しいグループに属していることを確認します。

# dcli id user_name

7. ユーザーのホーム・ディレクトリがすべてのノードに作成されたことを確認します。

# dcli ls /home | grep user_name

例3-1 Hadoopユーザーの作成

# sudo -u hdfs hadoop fs -mkdir /user/jdoe
# sudo -u hdfs hadoop fs -chown jdoe:hadoop /user/jdoe
# hadoop fs -ls /user
Found 5 items
drwx------   - hdfs     supergroup          0 2013-01-16 13:50 /user/hdfs
drwxr-xr-x   - hive     supergroup          0 2013-01-16 12:58 /user/hive
drwxr-xr-x   - jdoe     jdoe                0 2013-01-18 14:04 /user/jdoe
drwxr-xr-x   - oozie    hadoop              0 2013-01-16 13:01 /user/oozie
drwxr-xr-x   - oracle   hadoop              0 2013-01-16 13:01 /user/oracle
# dcli useradd -G hadoop,hive -m jdoe
# dcli id jdoe
bda1node01: uid=1001(jdoe) gid=1003(jdoe) groups=1003(jdoe),127(hive),123(hadoop)
bda1node02: uid=1001(jdoe) gid=1003(jdoe) groups=1003(jdoe),123(hadoop),127(hive)
bda1node03: uid=1001(jdoe) gid=1003(jdoe) groups=1003(jdoe),123(hadoop),127(hive)
.
.
.
# dcli ls /home | grep jdoe
bda1node01: jdoe
bda1node02: jdoe
bda1node03: jdoe

例3-1では、hadoopをプライマリ・グループとし、hiveを追加グループとしてjdoeという名前のユーザーを作成します。

3.4.1.2 保護されたクラスタでのユーザーの作成

Kerberosで保護されたクラスタ上でユーザーを作成するには、次の手順を実行します。

1. HDFSプリンシパルとしてKerberosに接続し、jdoeを実際のユーザー名に置き換えて次のコマンドを実行します。

hdfs dfs -mkdir /user/jdoe
hdfs dfs -chown jdoe /user/jdoe
dcli -C useradd -G hadoop,hive -m jdoe
hash=$(echo "hadoop" | openssl passwd -1 -stdin)
dcli -C "usermod --pass='$hash' jdoe"

2. キー配布センター(KDC)にログインし、ユーザーのプリンシパルを追加します。次の例で、jdoe、bda01node01およびexample.comを正しいユーザー名、サーバー名、ドメインおよびレルムで置き換えます。

ssh -l root bda01node01.example.com kadmin.local
add_principal user_name@EXAMPLE.COM

3.4.2 ユーザー・ログイン権限の付与(オプション)

リモート・クライアントからMapReduceジョブを実行する場合、Oracle Big Data Applianceでログイン権限は必要ありません。ただし、Oracle Big Data Applianceにログインする場合、パスワードを設定する必要があります。パスワードの設定とリセットは同じ方法で行えます。

すべてのOracle Big Data Applianceサーバーに対するユーザー・パスワードを設定するには、次の手順を実行します。

1. 「Hadoopクラスタ・ユーザーの作成」の説明に従って、Hadoopクラスタ・ユーザーを作成します。

2. ユーザーにパスワードがないことを確認します。

# dcli passwd -S user_name
bda1node01.example.com: jdoe NP 2013-01-22 0 99999 7 -1 (Empty password.)
bda1node02.example.com: jdoe NP 2013-01-22 0 99999 7 -1 (Empty password.)
bda1node03.example.com: jdoe NP 2013-01-22 0 99999 7 -1 (Empty password.)

出力に「Empty password」または「Password locked」と表示された場合は、パスワードを設定する必要があります。

3. パスワードを設定します。

hash=$(echo 'password' | openssl passwd -1 -stdin); dcli "usermod --pass='$hash' user_name"

4. すべてのサーバーに対してパスワードが設定されていることを確認します。

# dcli passwd -S user_name
bda1node01.example.com: jdoe PS 2013-01-24 0 99999 7 -1 (Password set, MD5 crypt.)
bda1node02.example.com: jdoe PS 2013-01-24 0 99999 7 -1 (Password set, MD5 crypt.)
bda1node03.example.com: jdoe PS 2013-01-24 0 99999 7 -1 (Password set, MD5 crypt.)

関連項目:

- dcliの詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

- useraddコマンドの完全な構文は、Linux manページを参照してください。

3.5 削除されたファイルのリカバリ

CDHはオプションのごみ箱機能を備えているので、削除されたファイルまたはディレクトリをただちにシステムから削除せずに、指定した期間trashディレクトリに移動できます。デフォルトで、ごみ箱機能はHDFSおよびすべてのHDFSクライアントで有効です。

3.5.1 ごみ箱からのファイルのリストア

ごみ箱機能が有効になっている場合は、削除してしまったファイルを簡単にリストアできます。

trashディレクトリからファイルをリストアするには、次の手順を実行します。

1. 削除されたファイルがごみ箱にあることを確認します。次の例では、oracleユーザーによって削除されたファイルを確認します。

$ hadoop fs -ls .Trash/Current/user/oracle
Found 1 items
-rw-r--r--  3 oracle hadoop  242510990 2012-08-31 11:20 /user/oracle/.Trash/Current/user/oracle/ontime_s.dat

2. 以前の場所にファイルを移動またはコピーします。次の例では、ontime_s.datをごみ箱からHDFSの/user/oracleディレクトリに移動します。

$ hadoop fs -mv .Trash/Current/user/oracle/ontime_s.dat /user/oracle/ontime_s.dat

3.5.2 ごみ箱を空にする間隔の変更

ごみ箱を空にする間隔とは、ファイルがシステムから永久に削除されるまで、trashディレクトリに保持される時間の最小値です。デフォルト値は、1日(24時間)です。

ごみ箱を空にする間隔を変更するには、次の手順を実行します。

1. Cloudera Managerを開きます。「Cloudera Managerを使用した操作の管理」を参照してください。

2. 「Home」ページの「Status」で、hdfsをクリックします。

3. hdfsページで、「Configuration」サブタブをクリックし、「View and Edit」を選択します。

4. 「NameNode Default Group」の下にある「Filesystem Trash Interval」プロパティを検索するか、下方向にスクロールして探します。図3-2を参照してください。

5. 現在の値をクリックして、ポップアップ・フォームに新しい値を入力します。

6. 「Save Changes」をクリックします。

7. ページ上部の「Actions」メニューを展開して、「Restart」を選択します。

8. rootとして、クラスタ内のノードへの接続を開きます。

9. 新しい構成をデプロイします。

dcli -C bdagetclientconfig

図3-2は、Cloudera ManagerにFilesystem Trash Intervalプロパティが表示されているところを示しています。

図3-2 Cloudera ManagerでのHDFSプロパティの設定

3.5.3 ごみ箱機能の無効化

Oracle Big Data Applianceでは、デフォルトでごみ箱機能が有効になっています。この構成はクラスタに対して無効にできます。ごみ箱機能を無効化すると、削除されたファイルおよびディレクトリはごみ箱に移動しません。リカバリできなくなります。

3.5.3.1 ごみ箱機能の完全な無効化

次の手順を実行すると、HDFSのごみ箱機能は無効化されます。ごみ箱機能が完全に無効化されても、クライアント構成には影響しません。

ごみ箱機能を完全に無効化するには、次の手順を実行します。

1. Cloudera Managerを開きます。「Cloudera Managerを使用した操作の管理」を参照してください。

2. 「Home」ページの「Status」で、hdfsをクリックします。

3. hdfsページで、「Configuration」サブタブをクリックし、「View and Edit」を選択します。

4. 「NameNode Default Group」の下にある「Filesystem Trash Interval」プロパティを検索するか、下方向にスクロールして探します。図3-2を参照してください。

5. 現在の値をクリックして、ポップアップ・フォームに値0 (ゼロ)と入力します。

6. 「Save Changes」をクリックします。

7. ページ上部の「Actions」メニューを展開して、「Restart」を選択します。

3.5.3.2 ローカルのHDFSクライアントのごみ箱機能の無効化

Oracle Big Data ApplianceにインストールされているすべてのHDFSクライアントは、ごみ箱機能を使用するように構成されています。HDFSクライアントとは、HDFSに接続して、HDFSファイルの一覧表示、HDFSとの間のファイルのコピー、ディレクトリの作成といった操作を実行する任意のアプリケーションです。

Cloudera Managerを使用すると、ローカルのクライアント構成設定を変更できますが、ごみ箱機能は有効なままです。

注意:

どのクライアントもごみ箱を使用できないようにするには、ごみ箱機能を完全に無効化します。「ごみ箱機能の完全な無効化」を参照してください。

ローカルのHDFSクライアントのごみ箱機能を無効化するには、次の手順を実行します。

1. Cloudera Managerを開きます。「Cloudera Managerを使用した操作の管理」を参照してください。

2. 「Home」ページの「Status」で、hdfsをクリックします。

3. hdfsページで、「Configuration」サブタブをクリックし、「View and Edit」を選択します。

4. 「Gateway Default Group」の下にある「Filesystem Trash Interval」プロパティを検索するか、下方向にスクロールして探します。図3-2を参照してください。

5. 「Client Settings」の下にある「Use Trash」プロパティを検索するか、下方向にスクロールして探します。図3-2を参照してください。

6. 「Use Trash」チェック・ボックスの選択を解除します。

7. 「Save Changes」をクリックします。この設定は、Oracle Big Data Applianceに新たにダウンロードされるすべてのHDFSクライアントの構成に使用されます。

8. rootとして、クラスタ内のノードへの接続を開きます。

9. 新しい構成をデプロイします。

dcli -C bdagetclientconfig

3.5.3.3 リモートのHDFSクライアントのごみ箱機能の無効化

リモートのHDFSクライアントは、通常、CDHクライアントをダウンロードおよびインストールすると構成されます(「CDHへのリモート・クライアント・アクセスの提供」を参照)。Oracle SQL Connector for HDFSやOracle R Advanced Analytics for Hadoopなどがリモート・クライアントです。

リモートのHDFSクライアントのごみ箱機能を無効化するには、次の手順を実行します。

1. CDHクライアントがインストールされているシステムへの接続を開きます。

2. テキスト・エディタで/etc/hadoop/conf/hdfs-site.xmlを開きます。

3. ごみ箱を空にする間隔をゼロに設定します。

<property>
<name>fs.trash.interval</name>
<value>0</value>
</property>

4. ファイルを保存します。

4 Oracle Big Data Applianceと併用するためのOracle Exadata Database Machineの構成

この章では、Oracle Exadata Database MachineとOracle Big Data Applianceの間での通信の最適化に関する情報を提供します。ここでは、インフィニバンド単体、あるいはSDP overインフィニバンドを使用してOracle Big Data Applianceと通信するようOracle Exadata Database Machineを構成する方法を説明しています。

この章は次の項で構成されています:

- 通信の最適化について

- 通信の最適化の前提条件

- Oracle Big Data Applianceへのインフィニバンド接続の指定

- Oracle Exadata Database Machineへのインフィニバンド接続の指定

- Exadata DatabaseノードでのSDPの有効化

- インフィニバンド・ネットワーク上でのSDPリスナーの作成

4.1 通信の最適化について

Oracle Exadata Database MachineとOracle Big Data Applianceはデフォルトではイーサネットを使用しますが、通常はインフィニバンド・ネットワークでも接続されます。イーサネットは、通信速度がインフィニバンドよりはるかに落ちます。Oracle Exadata Database Machineはインフィニバンドを使用して通信するよう構成すると、Oracle Big Data Applianceからデータをこれまでより何倍も速く取り込むことができるようになります。

さらに、Oracle Big Data Appliance上で動作してデータをOracle Databaseへプッシュするクライアント・アプリケーションは、Sockets Direct Protocol (SDP)を使用することでさらにパフォーマンスを向上させることができます。SDPは、クラスタ化されたサーバー環境用の標準の通信プロトコルで、ネットワーク・インタフェース・カードとアプリケーション間のインタフェースを提供します。SDPを使用すると、アプリケーションがメッセージング処理の大部分をネットワーク・インタフェース・カード上に配置できるようになるため、CPUを他のタスクに開放できます。結果として、SDPによりネットワーク・レイテンシとCPU使用率を減らし、パフォーマンスを改善できます。

4.1.1 Oracle Exadata Database Machineにデータをプルするアプリケーションについて

Oracle SQL Connector for Hadoop Distributed File System (HDFS)は、Oracle Exadata Database Machineにデータをプルするアプリケーションの例です。このコネクタにより、Oracle外部表はHDFSファイルかHive表に格納されたデータにアクセスできるようになります。

外部表で、HDFSデータへのアクセスが可能になります。外部表を使用することで、HDFSデータを問い合せたりOracleデータベース表にロードしたりすることができます。

Oracle SQL Connector for HDFSは、Oracle Exadata Database Machineのデータベース・サーバー上で実行されるHadoopクライアントとして機能します。

Oracle SQL Connector for HDFS、あるいはデータをOracle Exadata Database Machineにプルする他のツールを使用する場合は、パフォーマンスを最適にするために、システムでインフィニバンドを使用するよう構成してください。「Oracle Big Data Applianceへのインフィニバンド接続の指定」を参照してください。

関連項目:

『Oracle Big Data Connectorsユーザーズ・ガイド』のOracle SQL Connector for HDFSに関する詳細

4.1.2 Oracle Exadata Database Machineにデータをプッシュするアプリケーションについて

Oracle Loader for Hadoopは、Oracle Exadata Database Machineにデータをプッシュするアプリケーションの例です。このコネクタは、HadoopクラスタからOracle Databaseの表にデータをすばやく移動するための効率的でパフォーマンスのよいローダーです。このコネクタを使用して、Oracle Big Data ApplianceからOracle Exadata Database Machineにデータをロードできます。

Oracle Loader for Hadoopは、Oracle Big Data Appliance上で実行されるデータベース・クライアントとして機能します。Oracle Big Data ApplianceからOracle Exadata Database Machineへのデータベース接続をインフィニバンド・ネットワーク上で確立する必要があります。これらのデータベース接続にSockets Direct Protocol (SDP)を使用することで、パフォーマンスがさらに向上します。

Oracle Loader for Hadoop、あるいはデータをOracle Exadata Database Machineにプッシュする他のツールを使用する場合は、パフォーマンスを最適にするために、システムでSDP overインフィニバンドを使用するよう、この章の説明に従って構成してください。

関連項目:

『Oracle Big Data Connectorsユーザーズ・ガイド』のOracle Loader for Hadoopに関する詳細

4.2 通信の最適化の前提条件

Oracle Big Data ApplianceとOracle Exadata Database Machineのラックは、インフィニバンド・ケーブルを使用して接続する必要があります。IPアドレスは、すべてのラックにわたって一意であり、かつインフィニバンド・ネットワーク用に同じサブネットを使用する必要があります。

関連項目:

- Oracle Big Data Appliance Owner's Guide(マルチラックのケーブル接続について)

- IPアドレスとサブネットの詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

4.3 Oracle Big Data Applianceへのインフィニバンド接続の指定

Oracle Big Data ApplianceサーバーのインフィニバンドIPアドレスを使用するようにOracle Exadata Database Machineを構成できます。構成しない場合、デフォルトのネットワークはEthernetです。インフィニバンド・ネットワークを使用することで、Oracle Big Data ApplianceとOracle Exadata Database Machineの間のすべてのデータ転送のパフォーマンスが向上します。

Oracle Big Data ApplianceのインフィニバンドIPアドレスを識別するには、次の手順に従います。

1. まだインストールしていない場合は、Oracle Exadata Database MachineにCDHクライアントをインストールします。「CDHへのリモート・クライアント・アクセスの提供」を参照してください。

2. すべてのOracle Big Data Applianceサーバーについて、プライベート・ホスト名とインフィニバンドIPアドレスのリストを取得します。
1台のOracle Big Data Applianceラックには、6、12または18台のサーバーを搭載できます。

3. root権限を使用して、Oracle Exadata Database Machineにログインします。

4. Oracle Exadata Database Machine上で/etc/hostsを編集し、Oracle Big Data Applianceのホスト名とインフィニバンドIPアドレスを追加します。次に示すのは、連続したIPナンバリングの例です。

192.168.8.1       bda1node01.example.com    bda1node01
192.168.8.2       bda1node02.example.com    bda1node02
192.168.8.3       bda1node03.example.com    bda1node03
192.168.8.4       bda1node04.example.com    bda1node04
192.168.8.5       bda1node05.example.com    bda1node05
192.168.8.6       bda1node06.example.com    bda1node06

5. /etc/nsswitch.confで、次のような行を探します。

hosts:      files dns

この行で、記述の順序が逆(dns files)になっていないことを確認します。逆になっている場合、/etc/hostsに追加した記述は使用されません。必要に応じてファイルを編集します。

6. すべてのOracle Big Data Applianceサーバーをpingします。pingが完了し、インフィニバンドIPアドレスが表示されたことを確認します。

# ping bda1node01.example.com
PING bda1node01.example.com (192.168.8.1) 56(84) bytes of data.
64 bytes from bda1node01.example.com (192.168.8.1): icmp_seq=1 ttl=50 time=20.2 ms
.
.
.

7. Oracle Exadata Database Machine上でCDHをローカルに実行し、Oracle Big Data Applianceサーバーにサイズの大きいファイルをアップロードして、HDFSの機能をテストします。ネットワーク監視ツール(sarなど)で、インフィニバンド・デバイス上のI/Oアクティビティが示されることを確認します。
ファイルをアップロードするには、次のような構文を使用します(この例では、localfile.datを、Oracle Big Data Applianceのnode05にあるHDFSのtestdirディレクトリにコピーしています)。

hadoop fs -put localfile.dat hdfs://bda1node05.example.com/testdir/

4.4 Oracle Exadata Database Machineへのインフィニバンド接続の指定

Exadata Database MachineサーバーのインフィニバンドIPアドレスを使用するようにOracle Big Data Applianceを構成できます。この構成は、Oracle Big Data Appliance上でOracle Exadata Database Machineに接続する必要があるアプリケーションに対応します。

Oracle Exadata Database MachineのインフィニバンドIPアドレスを識別するには、次の手順を実行します。

1. すべてのOracle Exadata Database Machineサーバーについて、プライベート・ホスト名とインフィニバンドIPアドレスのリストを取得します。

2. root権限でOracle Big Data Applianceにログインします。

3. Oracle Big Data Appliance上で/etc/hostsを編集し、Oracle Exadata Database Machineのホスト名とインフィニバンドIPアドレスを追加します。

4. /etc/nsswitch.confで、次のような行を探します。

hosts:      files dns

この行で、記述の順序が逆(dns files)になっていないことを確認します。逆になっている場合、/etc/hostsに追加した記述は使用されません。必要に応じてファイルを編集します。

5. dnsmasqサービスを再起動します。

# service dnsmasq restart

6. すべてのOracle Exadata Database Machineサーバーをpingします。pingが完了し、インフィニバンドIPアドレスが表示されたことを確認します。

7. サイズの大きいファイルをOracle Exadata Database Machineサーバーにダウンロードし、接続をテストします。ネットワーク監視ツール(sarなど)で、インフィニバンド・デバイス上のI/Oアクティビティが示されることを確認します。
ファイルをダウンロードするには次のような構文を使用します。この例では、mydata.jsonという名前のファイルをdm01ce108ストレージ・サーバーにコピーします。

$ scp mydata.json oracle@dm01cel08-priv.example.com:mybigdata.json
oracle@dm01cel08-priv.example.com's password: password

4.5 Exadata DatabaseノードでのSDPの有効化

SDPによって、Oracle Big Data Appliance上で動作して大きなデータ・ロードをOracle Exadata Database Machine上のOracle Databaseにプッシュするクライアント・アプリケーションのパフォーマンスが向上します。

次の手順では、Oracle Linuxを実行しているOracle Exadata Database Machine内のデータベース・ノード上でSDPを有効化する方法について説明します。また、SDPを使用するジョブごとにアプリケーションを構成する必要があります。

Oracle Exadata Database Machine上でSDPを有効化するには、次の手順に従います。

1. テキスト・エディタで/etc/infiniband/openib.confファイルを開いて、次の行を追加します。

set: SDP_LOAD=yes

2. これらの変更を保存し、ファイルを閉じます。

3. SDPとTCPの両方を有効にするには、テキスト・エディタで/etc/ofed/libsdp.confを開き、use bothルールを追加します。

use both server * :
use both client * :

4. これらの変更を保存し、ファイルを閉じます。

5. テキスト・エディタで/etc/modprobe.confファイルを開いて、次の設定を追加します。

options ib_sdp sdp_zcopy_thresh=0 recv_poll=0

6. これらの変更を保存し、ファイルを閉じます。

7. これらの変更を、Oracle Exadata Database Machineラック内のすべてのデータベース・ノードにレプリケートします。

8. すべてのデータベース・ノードを再起動して、変更を有効化します。

9. Oracle Exadata Database Machineラックが複数ある場合は、すべてのラックでこれらの手順を繰り返します。

次のようにして、SDPプロトコルをロード・ジョブに指定します。

1. HADOOP_OPTS環境変数にJVMオプションを追加して、JDBC SDPエクスポートを有効にします。

HADOOP_OPTS="-Doracle.net.SDP=true -Djava.net.preferIPv4Stack=true"

2. Hadoopコマンドまたはジョブの構成ファイルのいずれかで、mapred.child.java.opts構成プロパティを設定してSDPの子タスクJVMを有効にします。
たとえば、MapReduceジョブのコマンドライン内のこれらのオプションを使用します。

-D mapred.child.java.opts="-Doracle.net.SDP=true -Djava.net.preferIPv4Stack=true"

3. 標準のイーサネット通信をジョブに対して構成します。
たとえば、Oracle Loader for Hadoopは、oracle.hadoop.loader.connection.urlプロパティの値をジョブ構成ファイルから読み込みます。この値は次の構文を使用します。

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=hostName)(PORT=portNumber)))
(CONNECT_DATA=(SERVICE_NAME=serviceName)))

hostName、portNumberおよびserviceNameは、Oracle Exadata Database Machine上のSDPリスナーを識別するための適切な値に置き換えます。

4. ExadataでOracleリスナーを、SDPプロトコルをサポートするように構成し、特定のポート・アドレス(1522など)にバインドします。
たとえば、Oracle Loader for Hadoopは、oracle.hadoop.loader.connection.oci_urlプロパティの値をジョブ構成ファイルから読み込みます。この値は次の構文を使用します。

(DESCRIPTION=(ADDRESS=(PROTOCOL=SDP)
(HOST=hostName) (PORT=portNumber))
(CONNECT_DATA=(SERVICE_NAME=serviceName)))

4.6 インフィニバンド・ネットワーク上でのSDPリスナーの作成

インフィニバンド・ネットワーク上に着信するOracle Big Data Appliance接続に対するリスナーを追加するには、まず仮想IPアドレスを使用してインフィニバンド・ネットワーク用のネットワーク・リソースを追加します。

注意:

この例では、Oracle Exadata Database Machineクォータ・ラック用の2つのノードを列挙しています。Oracle Exadata Database Machineのハーフ・ラックまたはフル・ラックを使用している場合は、クラスタ内のノードごとにノード固有の行を繰り返す必要があります。

1. Exadataラック内の各ノードで/etc/hostsを編集して、インフィニバンド・ネットワーク用の仮想IPアドレスを追加します。IPアドレスが使用中でないことを確認してください。次に例を示します。

# Added for Listener over IB
192.168.10.21 dm01db01-ibvip.example.com dm01db01-ibvip
192.168.10.22 dm01db02-ibvip.example.com dm01db02-ibvip

2. rootユーザーとして、インフィニバンド・ネットワーク用に使用する1つのデータベース・ノード上にネットワーク・リソースを作成します。次に例を示します。

# /u01/app/grid/product/12.1.0.1/bin/srvctl add network -k 2 -S 192.168.10.0/255.255.255.0/bondib0

3. 次の例のようなコマンドを使用して、ネットワークが正しく追加されたことを確認します。

# /u01/app/grid/product/12.1.0.1/bin/crsctl stat res -t | grep net
ora.net1.network
ora.net2.network -- Output indicating new Network resource

または

# /u01/app/grid/product/12.1.0.1/bin/srvctl config network -k 2
Network exists: 2/192.168.10.0/255.255.255.0/bondib0, type static -- Output indicating Network resource on the 192.168.10.0 subnet

4. クラスタ内の各ノードについて、ステップ2で作成したネットワーク上の仮想IPアドレスを追加します。次に例を示します。

# srvctl add vip -n dm01db01 -A dm01db01-ibvip/255.255.255.0/bondib0 -k 2
#
# srvctl add vip -n dm01db02 -A dm01db02-ibvip/255.255.255.0/bondib0 -k 2

5. oracleユーザー(Grid Infrastructureホームの所有者)として、ステップ4で作成した仮想IPアドレス用のリスナーを追加します。

# srvctl add listener -l LISTENER_IB -k 2 -p TCP:1522,/SDP:1522

6. 中間層からの接続を受け付ける各データベースについて、listener_networks initパラメータを変更して、複数のネットワーク(イーサネットとインフィニバンド)にまたがるロード・バランシングとフェイルオーバーを可能にします。初期化パラメータに完全なTNSNAMES構文を入力することも、$ORACLE_HOME/network/adminディレクトリ内のtnsnames.ora内にエントリを作成することもできます。TNSNAMES.ORAのエントリは、GRID_HOME内に存在している必要があります。次の例では、まずtnsnames.oraを更新します。

クラスタ内の各ノードで、そのノードの正しいIPアドレスを使用して、この手順を実行します。LISTENER_IBREMOTEでは、クラスタ内の他のすべてのノードを列記する必要があります。DBM_IBでは、クラスタ内のすべてのノードを列記する必要があります。

注意:

データベース・インスタンスがTNSNAMESを読み込むのは、起動時のみです。したがって、init.oraパラメータ(LISTENER_NETWORKS)によって参照されているエントリを変更した場合は、インスタンスを再起動するか、ALTER SYSTEM SET LISTENER_NETWORKSコマンドを発行し、インスタンスによって変更を有効にする必要があります。

DBM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dm01-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dbm)
))
DBM_IB =
(DESCRIPTION =
(LOAD_BALANCE=on)
(ADDRESS = (PROTOCOL = TCP)(HOST = dm01db01-ibvip)(PORT = 1522))
(ADDRESS = (PROTOCOL = TCP)(HOST = dm01db02-ibvip)(PORT = 1522))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dbm)
))
LISTENER_IBREMOTE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dm01db02-ibvip.mycompany.com)(PORT = 1522))
))
LISTENER_IBLOCAL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dm01db01-ibvip.mycompany.com)(PORT = 1522))
(ADDRESS = (PROTOCOL = SDP)(HOST = dm01db01-ibvip.mycompany.com)(PORT = 1523))
))
LISTENER_IPLOCAL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dm0101-vip.mycompany.com)(PORT = 1521))
))
LISTENER_IPREMOTE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dm01-scan.mycompany.com)(PORT = 1521))
))

7. sysdbaとしてデータベース・インスタンスに接続します。

8. SQLのALTER SYSTEMコマンドを使用してlistener_networks initパラメータを変更します。

SQL> alter system set listener_networks=
'((NAME=network2) (LOCAL_LISTENER=LISTENER_IBLOCAL)
(REMOTE_LISTENER=LISTENER_IBREMOTE))',
'((NAME=network1)(LOCAL_LISTENER=LISTENER_IPLOCAL)
(REMOTE_LISTENER=LISTENER_IPREMOTE))' scope=both;

9. Linuxコマンドラインで、srvctlコマンドを使用してLISTENER_IBを再起動して、ステップ7の変更を実施します。

# srvctl stop listener -l LISTENER_IB
# srvctl start listener -l LISTENER_IB

第II部 Oracle Big Data Applianceソフトウェア

この部では、Oracle Big Data Applianceでのみ使用できるソフトウェアについて説明します。ここには次の章が含まれます。

- Perfect Balanceを使用したMapReduceジョブの最適化

5 Perfect Balanceを使用したMapReduceジョブの最適化

この章では、Perfect Balanceを使用して一部のMapReduceジョブの実行時間を短縮する方法について説明します。内容は次のとおりです。

- Perfect Balanceとは

- アプリケーション要件

- Perfect Balanceの概要

- ジョブのリデューサ・ロードの分析

- Perfect Balanceの構成について

- Perfect Balanceを使用したBalanced MapReduceジョブの実行

- Perfect Balanceレポートについて

- 分割について

- Perfect Balanceで実行されているジョブのトラブルシューティング

- Perfect Balance APIの使用

- Perfect Balanceの例について

- Perfect Balance構成プロパティ・リファレンス

5.1 Perfect Balanceとは

Oracle Big Data ApplianceのPerfect Balance機能は、MapReduceアプリケーションのリデューサ・ロードを分散して、各リデュース・タスクで実行される処理がほぼ同じ量になるようにします。リデュース・ロードを分散するためのデフォルトのHadoopメソッドは、多くのジョブに対して適切ですが、データ・スキューが大きい場合にはジョブのロードを均等に分散できません。

データ・スキューとは、複数のリデュース・タスクに対する不均等なロード割当てのことです。ロードとは、次の要因がもたらす作用のことです。

- 1つのリデューサに割り当てられたキーの数。

- キー当たりの値に含まれるレコード数とバイト数。

ジョブの総実行時間は、最大ロードのリデューサの所要時間に応じて長くなります。ジョブのロードが不均衡な場合、リデューサによってジョブの所要時間にばらつきが生じます。Perfect Balanceを使用すると、ロードが均等に分散され、すべてのリデューサがほぼ同じ時間で処理を完了できるようになるため、総実行時間を大幅に短縮できます。

MapReduceジョブはmapredかmapreduceのいずれかのAPIを使用して記述されますが、Perfect Balanceはこれら両方をサポートしています。

5.1.1 マップおよびリデュース・タスク間でのジョブの均衡化について

典型的なHadoopジョブには、マップ・タスクとリデュース・タスクがあります。Hadoopは、マッパーのワークロードをHadoop Distributed File System (HDFS)全体と各マップ・タスク間にわたって均一に分散しながら、データのローカル性も維持します。これにより、マッパー間のスキューが減ります。

Hadoopはまた、マップ出力キーをすべてのリデューサに均一にハッシュします。この手法は、リデューサの数よりもキーの数のほうがかなり多く、各キーがワークロードのごく一部しか占めていない場合に効果的です。ただし、マッパー出力が少数のキーに集中している場合には効果的ではありません。これらのキーをハッシュするとスキューが発生し、並べ替えなど、レンジ・パーティショニングを必要とするアプリケーションではうまく機能しません。

Perfect Balanceは、最初にデータをサンプリングし、サイズの大きなキーを必要に応じて2つ以上のキーに分割し、ロード認識型のパーティショニング手法を使用してリデューサ・タスクにキーを割り当てることで、ロードを各リデューサに均等に分配します。

5.1.2 Perfect Balance機能の使用方法

Perfect Balance機能の実行方法は次の2つの中から選択できます。

- Perfect Balance: Perfect Balanceを適切に構成すると、アプリケーション・コードを変更することなくジョブを実行できます。これは、推奨される方法であり、ほとんどのジョブに適しています。
この方法は、「Perfect Balanceを使用したBalanced MapReduceジョブの実行」に説明されており、この章の主な目的です。

- Perfect Balance API: Perfect Balanceを実行するためのコードをアプリケーション・コードに追加できます。Perfect Balanceを使用する前にアプリケーション設定コードを実行する必要がある場合、この方法を使用します。それ以外の場合は、前述の方法(コードの変更は不要)を使用します。
この方法は、「Perfect Balance APIの使用」に説明されています。

5.1.3 Perfect Balanceのコンポーネント

Perfect Balanceには次のコンポーネントがあります。

- Job Analyzer: Perfect Balanceを使用するかどうかの判断材料として、MapReduceジョブに関する統計情報を収集し、レポートします。

- Counting Reducer: Perfect Balanceの効果を測定するための、追加の統計情報をJob Analyzerに提供します。

- Load Balancer: MapReduceジョブの前に実行して、静的パーティション・プランを生成し、プランを使用するジョブを再構成します。バランサには、良好なパーティショニング・プランが生成されしだいデータのサンプリングを停止する、ユーザー構成可能なプログレッシブ・サンプラが含まれます。

5.2 アプリケーション要件

Perfect Balanceを正常に使用するには、アプリケーションが次の要件を満たしている必要があります。

- ジョブは分散型で、リデュース・キーに関連付けられたレコードのグループを分割してもアプリケーションの不正確な結果が生成されることはありません。
ロードを均衡化するために、Perfect Balanceは大きいリデュース・キーの値をサブパーティション化し、各サブパーティションを別のリデューサに送信します。この分散は、1つのリデュース・キーのすべての値を同じリデューサに送信する標準のHadoopとは対照的です。アプリケーションは、不正確な結果を生成しないように、完全に集計されていないリデューサからの出力を処理できる必要があります。

この値のパーティショニングは分割と呼ばれます。分割をサポートするアプリケーションには分散リデュース機能があります。「分割について」を参照してください。

アプリケーションが分散型でない場合でも、キー分割機能を無効にした後であればPerfect Balanceを実行できます。その場合、Perfect Balanceのメリットは一応は発揮されますが、キー分割が有効な場合ほどにはロードは均等に分散されません。キー分割を無効にするには、oracle.hadoop.balancer.keyLoad.minChopBytes構成プロパティを参照してください。

- 今リリースでは、コンバイナはサポートされません。Perfect Balanceはコンバイナの存在を検出し、コンバイナが存在する場合にはバランシングを行いません。

5.3 Perfect Balanceの概要

Perfect Balanceは、次の手順に従って使用します。

1. アプリケーションが「アプリケーション要件」にリストされている要件を満たしていることを確認してください。

2. ジョブを発行するサーバーにログインします。

3. Perfect Balanceに付属している例を実行することにより、本製品について理解できます。この章で示しているすべての例は付属の例を基にしており、同じデータ・セットを使用します。「Perfect Balanceの例について」を参照してください。

4. Bash exportコマンドを使用して次の変数を設定します。

- BALANCER_HOME: Perfect Balanceのインストール・ディレクトリ(Oracle Big Data Applianceの/opt/oracle/orabalancer-2.4.0-h2)に設定します(オプション)。この章の例ではこの変数を使用しますが、変数を自分で定義することもできます。Perfect BalanceではBALANCER_HOMEは不要です。

- HADOOP_CLASSPATH: ${BALANCER_HOME}/jlib/orabalancer-2.4.0.jarと${BALANCER_HOME}/jlib/commons-math-2.2.jarを既存の値に追加します。使用するアプリケーションにJARファイルを追加します。
Perfect Balanceを有効にするには、${BALANCER_HOME}/jlib/orabalancerclient-2.4.0.jarを追加します。(APIモードではこのJARファイルを使用しません)。

- HADOOP_USER_CLASSPATH_FIRST: Perfect Balanceを有効化する場合は、trueに設定します。APIモードではこの変数は不要です。

Perfect Balanceを使用していないかぎり、これらの変数を設定する必要はありません。

5. バランサを使用せずにJob Analyzerを実行し、生成されたレポートを使用して、ジョブがPerfect Balanceの使用に適した候補であるかどうかを判断します。

「ジョブのリデューサ・ロードの分析」を参照してください。

6. 設定する構成プロパティを決定します。構成ファイルを作成するか、hadoopコマンドで設定を個別に入力します。

「Perfect Balanceの構成について」を参照してください。

7. Perfect Balanceを使用してジョブを実行します。

「Perfect Balanceを使用したBalanced MapReduceジョブの実行」を参照してください。

8. Job Analyzerレポートを使用して、Perfect Balanceを使用する効果を評価します。「Job Analyzerレポートの分析」を参照してください。

9. Perfect Balanceを使用してジョブを再実行する前に、必要に応じてジョブ構成プロパティを変更します。「Perfect Balanceの構成について」を参照してください。

5.4 ジョブのリデューサ・ロードの分析

Job Analyzerは、ロードの不均衡を特定するとともに、実際のジョブの実行時にPerfect Balanceによっていかに効果的に不均衡を解消できるかを評価するための、Perfect Balanceの1コンポーネントです。この項の内容は次のとおりです。

- Job Analyzerについて

- Job Analyzerをスタンドアロン・ユーティリティとして実行する

- Perfect Balanceを使用したJob Analyzerの実行

- Job Analyzerレポートの分析

5.4.1 Job Analyzerについて

Job Analyzerを使用すると、あるジョブがPerfect Balanceによるロード・バランシングの候補かどうかを判定できます。Job Analyzerは、MapReduceジョブの出力ログを使用して、各リデュース・タスクの経過時間やロードなどの統計情報を含んだシンプルなレポートを生成します。デフォルトでは、JobTrackerのユーザー・インタフェースによって表示される標準のHadoopカウンタが使用されますが、リデュース・タスクの相対パフォーマンスとロードを強調するためにデータが整理されるので、結果をより簡単に把握できます。

レポートで、データに不均衡がある(リデューサの処理するロードや実行時間に大きな差が見られる)場合、そのアプリケーションはPerfect Balanceの使用対象として適していると言えます。

5.4.1.1 Job Analyzerの実行方法

Job Analyzerの実行方法は次の2つの中から選択できます。

- スタンドアロン・ユーティリティとして実行する: この場合、Job Analyzerは既存のジョブ出力ログに対して実行されます。この選択は、以前に実行したジョブを分析する場合に適しています。

- Perfect Balanceを使用中に実行する: この場合Job Analyzerは、Perfect Balanceで実行されている現在のジョブの出力ログに対して実行されます。この選択は、現在のジョブを分析する場合に適しています。

5.4.2 Job Analyzerをスタンドアロン・ユーティリティとして実行する

Job Analyzerをスタンドアロン・ユーティリティとして実行すると、以前に実行されたジョブのリデュース・ロードをすばやく分析できます。

Job Analyzerをスタンドアロン・ユーティリティとして実行するには、次の手順に従います。

1. Job Analyzerを実行するサーバーにログインします。

2. 分析するジョブからの出力ファイルを探します。
oracle.hadoop.balancer.application_idを、分析するジョブのジョブIDに設定します。

YARN Resource ManagerのWebインタフェースからジョブIDを取得できます。ジョブのアプリケーションIDをクリックし、「Tracking URL」をクリックします。通常、ジョブIDは"job_"で始まります。

このジョブでPerfect BalanceまたはJob Analyzerをすでに実行した場合は、レポート・ディレクトリ(デフォルトではoutdir/_balancer)のPerfect Balanceによって生成されたapplication_idファイルからジョブIDを読み取ることもできます。

3. 「Job Analyzerユーティリティの構文」の説明に従って、Job Analyzerを実行します。

4. Job Analyzerレポートをブラウザで参照します。

5.4.2.1 Job Analyzerユーティリティの例

例5-1では、必要な変数を設定し、アプリケーションIDがjob_1396563311211_0947のジョブのMapReduceジョブのログを使用して、デフォルトの場所にレポートを作成するスクリプトが実行されます。その後、HTMLバージョンのレポートがHDFSから/home/jdoeローカル・ディレクトリにコピーされ、ブラウザでレポートが開かれます。

この例をYARNクラスタで実行するには、アプリケーションIDをジョブのアプリケーションIDに置換します。ジョブのアプリケーションIDは、job_1396563311211_0947のようになります。

例5-1 Job Analyzerユーティリティの実行

$ cat runja.sh

BALANCER_HOME=/opt/oracle/orabalancer-2.4.0-h2
export HADOOP_CLASSPATH=${BALANCER_HOME}/jlib/orabalancer-2.4.0.jar:${BALANCER_HOME}/jlib/commons-math-2.2.jar:$HADOOP_CLASSPATH
export HADOOP_USER_CLASSPATH_FIRST=true

# Command on YARN cluster
hadoop jar orabalancer-2.4.0.jar oracle.hadoop.balancer.tools.JobAnalyzer \
-D oracle.hadoop.balancer.application_id=job_1396563311211_0947

$ sh ./runja.sh
$
$ hadoop fs -get jdoe_nobal_outdir/_balancer/jobanalyzer-report.html /home/jdoe
$ cd /home/jdoe
$ firefox jobanalyzer-report.html

5.4.2.2 Job Analyzerユーティリティの構文

Job Analyzerユーティリティを実行するための構文を次に示します。

hadoop jar ${BALANCER_HOME}/jlib/orabalancer-2.4.0.jar oracle.hadoop.balancer.tools.JobAnalyzer \
-D oracle.hadoop.balancer.application_id=job_number \
[ja_report_path]

job_number

ジョブに以前に割り当てられたアプリケーションID。

ja_report_path

Job Analyzerが自身のレポートを作成するHDFSディレクトリ(オプション)。デフォルトのディレクトリは、job_output_dir/_balancerです。

5.4.3 Perfect Balanceを使用したJob Analyzerの実行

Perfect Balanceを使用してジョブを実行するとき、Job Analyzerが自動的に実行されるように構成できます。この項の内容は次のとおりです。

- Perfect Balanceを使用したJob Analyzerの実行

- 追加メトリックの収集

5.4.3.1 Perfect Balanceを使用したJob Analyzerの実行

Perfect Balanceを使用してJob Analyzerを実行するには、次の手順に従います。

1. Perfect Balanceを使用するジョブを発行するサーバーにログインします。

2. 「Perfect Balanceの概要」の手順を実行し、Perfect Balanceを設定します。

3. Job Analyzerを有効にするには、oracle.hadoop.balancer.autoAnalyze構成プロパティを次のいずれかの値に設定します。

- BASIC_REPORT: Job Analyzerを有効にします。oracle.hadoop.balancer.autoBalanceをtrueに設定した場合、Perfect Balanceはoracle.hadoop.balancer.autoAnalyzeを自動的にBASIC_REPORTに設定します。

- REDUCER_REPORT: 追加のロード統計を収集するようにJob Analyzerを構成します。「追加メトリックの収集」を参照してください。

4. 設定する追加構成プロパティを決定します(必要な場合)。

「Perfect Balance構成プロパティ・リファレンス」を参照してください。

5. ジョブを実行します。

例5-2 Perfect Balanceを使用したJob Analyzerの実行

$ cat ja_nobalance.sh

# set up perfect balance
BALANCER_HOME=/opt/oracle/orabalancer-2.4.0-h2
export HADOOP_CLASSPATH=${BALANCER_HOME}/jlib/orabalancerclient-2.4.0.jar:${BALANCER_HOME}/jlib/orabalancer-2.4.0.jar:${BALANCER_HOME}/jlib/commons-math-2.2.jar:${HADOOP_CLASSPATH}
export HADOOP_USER_CLASSPATH_FIRST=true

# run the job
hadoop jar application_jarfile.jar ApplicationClass \
-D application_config_property \
-D mapreduce.input.fileinputformat.inputdir=jdoe_application/input \
-D mapreduce.output.fileoutputformat.outputdir=jdoe_nobal_outdir \
-D mapreduce.job.name=nobal \
-D mapreduce.job.reduces=10 \
-D oracle.hadoop.balancer.autoBalance=false \
-D oracle.hadoop.balancer.autoAnalyze=REDUCER_REPORT \
-conf application_config_file.xml

$ sh ja_nobalance.sh
14/04/14 14:52:42 INFO input.FileInputFormat: Total input paths to process : 5
14/04/14 14:52:42 INFO mapreduce.JobSubmitter: number of splits:5
14/04/14 14:52:42 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1397066986369_3478
14/04/14 14:52:43 INFO impl.YarnClientImpl: Submitted application application_1397066986369_3478
.
.
.
File Input Format Counters
Bytes Read=112652976
File Output Format Counters
Bytes Written=384974202

$ hadoop fs -get jdoe_nobal_outdir/_balancer/jobanalyzer-report.html /home/jdoe
$ cd /home/jdoe
$ firefox jobanalyzer-report.html

例5-2では、必要な変数を設定するスクリプトを実行し、ロード・バランシングを行わずにPerfect Balanceを使用してJob Analyzerでジョブを実行し、デフォルトの場所にレポートを作成します。その後、HTMLバージョンのレポートがHDFSから/home/jdoeローカル・ディレクトリにコピーされ、ブラウザでレポートが開かれます。出力には警告が含まれますが、これは無視できます。

5.4.3.2 追加メトリックの収集

oracle.hadoop.balancer.autoAnalyzeプロパティをREDUCER_REPORTに設定した場合、Job Analyzerレポートには各キーのロード・メトリックが含まれます。この追加情報を使用すると、標準のHadoopカウンタでは使用できないメトリックを使用して、各リデューサのロードを詳細に把握できます。

Job Analyzerレポートは、予測ロードと実際のロードとの比較も行います。これらの値の違いに基づいて、Perfect Balanceがジョブの均衡化にどれほど効果を発揮しているか測定できます。

Job Analyzerでは、ジョブのロードの分析に基づいてPerfect Balanceキー・ロード・モデルのキー・ロード係数を推奨する場合があります。Perfect Balanceを使用してジョブを実行するときにこれらの推奨係数を使用するには、oracle.hadoop.balancer.linearKeyLoad.feedbackDirプロパティを、以前に分析したジョブの実行のJob Analyzerレポートを含むディレクトリに設定します。

レポートに推奨係数が含まれる場合、Perfect Balanceは自動的にその係数を使用します。追加メトリックの収集中にJob Analyzerでエラーが発生した場合、レポートには追加メトリックは含まれません。

ジョブのロード・モデル係数の値がわからない場合は、feedbackDirプロパティを使用しますが、以前にジョブを実行したときのJob Analyzer出力を使用できます。その後、feedbackDirの値を、出力が格納されているディレクトリに設定します。これらのファイルからの推奨値はジョブのロードの分析に基づいているため、推奨値は通常、Perfect Balanceのデフォルト値よりも優れた結果になります。

ジョブのロード・モデル係数の適切な値がわかっている場合は、ロード・モデル・プロパティを設定することもできます。

- oracle.hadoop.balancer.linearKeyLoad.byteWeight

- oracle.hadoop.balancer.linearKeyLoad.keyWeight

- oracle.hadoop.balancer.linearKeyLoad.rowWeight

これらの係数を使用してジョブを実行すると、ジョブがさらに均衡化されます。

5.4.4 Job Analyzerレポートの分析

Job Analyzerは、レポートの内容を2つの形式で記述します。HTML (ユーザー用)とXML (Perfect Balance用)です。HDFSから直接、またはローカル・ファイル・システムにコピーした後、レポートをブラウザで開くことができます。

ブラウザでHDFSのJob Analyzerレポートを開くには、次の手順を実行します。

1. 次のようなURLを使用して、NameNodeノード(node01またはnode02)のポート50070上でHDFS Webインタフェースを開きます。

http://bda1node01.example.com:50070

2. 「Utilities」メニューから、「Browse the File System」を選択します。

3. job_output_dir/_balancerディレクトリに移動します。

ブラウザでローカル・ファイル・システムのJob Analyzerレポートを開くには、次の手順を実行します。

1. HDFSからローカル・ファイル・システムにレポートをコピーします。

$ hadoop fs -get job_output_dir/_balancer/jobanalyzer-report.html /home/jdoe

2. ローカル・ディレクトリに切り替えます。

$ cd /home/jdoe

3. ファイルをブラウザで開きます。

$ firefox jobanalyzer-report.html

Job Analyzerレポートの内容を調べる際には、次のようなスキューの指標を探します。

- 一部のリデューサの実行時間が他のものよりも長い。

- 一部のリデューサが他のリデューサよりも多くのレコードやバイトを処理している。

- 一部のマップ出力キーのレコード数が他のものよりも多い。

- 一部のマップ出力レコードのバイト数が他のものよりも多い。

図5-1に、転置インデックス(invindx)の例に対するアナライザ・レポートの冒頭を示します。このジョブは適切な構成設定を使用して実行されたため、図にはキー・ロード係数の推奨値が表示されています。「追加メトリックの収集」を参照してください。

タスクIDは、特定のタスクの分析結果を示すテーブルへのリンクです。これにより、最初のサマリー・テーブルからより詳細なデータへとドリルダウンできます。

この例では極端に小さなデータ・セットが使用されていますが、タスク7と8の間の差に注目してください。入力レコードの差が3%と29%で大きく開いており、対応する経過時間の差も5秒と15秒で大きく開いています。この開きはスキューの発生を示しています。

図5-1 不均衡な転置インデックス・ジョブのJob Analyzerレポート

5.5 Perfect Balanceの構成について

Perfect Balanceでは、コマンドラインでの構成プロパティの指定に、標準のHadoopメソッドが使用されます。ユーザーは、-confオプションを使用して構成ファイルを特定できます。または、-Dオプションを使用して個別のプロパティを指定できます。Perfect Balanceのすべての構成プロパティにはデフォルト値があるため、各プロパティの設定は任意です。

「Perfect Balance構成プロパティ・リファレンス」には、構成プロパティがアルファベット順でリストされており、それらの詳しい説明が記載されています。次に示すのは、プロパティの機能グループです。

Perfect Balance基本プロパティ

- oracle.hadoop.balancer.autoAnalyze

- oracle.hadoop.balancer.autoBalance

Job Analyzerプロパティ

- oracle.hadoop.balancer.application_id

- oracle.hadoop.balancer.tools.writeKeyBytes

キー分割プロパティ

- oracle.hadoop.balancer.enableSorting

- oracle.hadoop.balancer.keyLoad.minChopBytes

ロード・バランシング・プロパティ

- oracle.hadoop.balancer.confidence

- oracle.hadoop.balancer.maxLoadFactor

- oracle.hadoop.balancer.maxSamplesPct

- oracle.hadoop.balancer.minSplits

ロード・モデル・プロパティ

- oracle.hadoop.balancer.linearKeyLoad.feedbackDir

- oracle.hadoop.balancer.linearKeyLoad.byteWeight

- oracle.hadoop.balancer.linearKeyLoad.keyWeight

- oracle.hadoop.balancer.linearKeyLoad.rowWeight

MapReduce関連プロパティ

- oracle.hadoop.balancer.useMapreduceApi

- oracle.hadoop.balancer.inputFormat.mapred.map.tasks

- oracle.hadoop.balancer.inputFormat.mapred.max.split.size

パーティション・レポート・プロパティ

- oracle.hadoop.balancer.report.overwrite

- oracle.hadoop.balancer.reportPath

- oracle.hadoop.balancer.tmpDir

サンプラ・プロパティ

- oracle.hadoop.balancer.minSplits

- oracle.hadoop.balancer.numThreads

- oracle.hadoop.balancer.runMode

- oracle.hadoop.balancer.useClusterStats

5.6 Perfect Balanceを使用したBalanced MapReduceジョブの実行

Perfect Balanceでは、アプリケーション・コードの変更は不要です。実行するジョブをHadoopに発行すると、そのジョブに対してPerfect Balanceが自動的に実行されます。

Perfect Balanceを使用してジョブを実行するには、次の手順を実行します。

1. ジョブを発行するサーバーにログインします。

2. 「Perfect Balanceの概要」の手順を実行し、Perfect Balanceを設定します。

3. Perfect Balanceの次のプロパティを設定してジョブを構成します。

- バランシングを有効にするには、oracle.hadoop.balancer.autoBalanceをtrueに設定します。この設定で、Job Analyzerも実行されます。ロード・バランシングは、デフォルトで有効ではありません。

- Job Analyzerで追加のメトリックを収集できるようにするには、oracle.hadoop.balancer.autoAnalyzeをREDUCER_REPORTに設定します。
「追加メトリックの収集」を参照してください。

- 設定する追加構成プロパティを決定します(必要な場合)。
「Perfect Balanceの構成について」を参照してください。

4. 次の構文で、通常どおりにジョブを実行します。

bin/hadoop jar application_jarfile.jar ApplicationClass\
-D application_config_property \
-D oracle.hadoop.balancer.autoBalance=true \
-D other_perfect_balance_config_property \
-conf application_config_file.xml \
-conf perfect_balance_config_file.xml

アプリケーションのコードを変更する必要はありません。Perfect Balanceの構成プロパティは、コマンドラインと構成ファイルのどちらでも指定できます。Perfect BalanceのプロパティとMapReduceのプロパティは同じ構成ファイル内で組み合せて使用することもできます。「Perfect Balanceの構成について」。

例5-3では、pb_balance.shというスクリプトを実行しています。これは、ジョブに対するPerfect Balanceを設定し、続いてそのジョブを実行します。キー・ロード・メトリック・プロパティは、図5-1で示したJob Analyzerレポートの推奨値に設定されます。

例5-3 Perfect Balanceを使用したジョブの実行

$ cat pb_balance.sh

#setup perfect balance as described in Getting Started with Perfect Balance
BALANCER_HOME=/opt/oracle/orabalancer-2.4.0-h2
export HADOOP_CLASSPATH=${BALANCER_HOME}/jlib/orabalancerclient-2.4.0.jar:${BALANCER_HOME}/jlib/orabalancer-2.4.0.jar:${BALANCER_HOME}/jlib/commons-math-2.2.jar:$HADOOP_CLASSPATH
export HADOOP_USER_CLASSPATH_FIRST=true

# setup  optional properties like java heap size and garbage collector
export HADOOP_CLIENT_OPTS="–Xmx1024M ${HADOOP_CLIENT_OPTS}"

# run the job with balancing and job analyzer enabled
hadoop jar  application_jarfile.jarApplicationClass
-D application_config_property \
-D mapreduce.input.fileinputformat.inputdir=jdoe_application/input  \
-D mapreduce.output.fileoutputformat.outputdir=jdoe_outdir \
-D mapreduce.job.name="autoinvoke" \
-D mapreduce.job.reduces=10 \
-D oracle.hadoop.balancer.autoBalance=true \
-D oracle.hadoop.balancer.autoAnalyze=REDUCER_REPORT \
-D oracle.hadoop.balancer.linearKeyLoad.keyWeight=93.98 \
-D oracle.hadoop.balancer.linearKeyLoad.rowWeight=0.001126 \
-D oracle.hadoop.balancer.linearKeyLoad.byteWeight=0.0 \
-conf application_config_file.xml

$ sh ./pb_balance.sh
14/04/14 14:59:42 INFO balancer.Balancer: Creating balancer
14/04/14 14:59:42 INFO balancer.Balancer: Starting Balancer
14/04/14 14:59:43 INFO input.FileInputFormat: Total input paths to process : 5
14/04/14 14:59:46 INFO balancer.Balancer: Balancer completed
14/04/14 14:59:47 INFO input.FileInputFormat: Total input paths to process : 5
14/04/14 14:59:47 INFO mapreduce.JobSubmitter: number of splits:5
14/04/14 14:59:47 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1397066986369_3500
14/04/14 14:59:47 INFO impl.YarnClientImpl: Submitted application application_1397066986369_3500
14/04/14 14:59:47 INFO mapreduce.Job: The url to track the job:
.
.
.
Map-Reduce Framework
Map input records=1000000
Map output records=20000000
Map output bytes=872652976
Map output materialized bytes=175650573
Input split bytes=580
Combine input records=0
Combine output records=0
Reduce input groups=106
Reduce shuffle bytes=175650573
Reduce input records=20000000
Reduce output records=13871794
Spilled Records=60000000
Shuffled Maps =50
Failed Shuffles=0
Merged Map outputs=50
GC time elapsed (ms)=1573
CPU time spent (ms)=242850
Physical memory (bytes) snapshot=6789033984
Virtual memory (bytes) snapshot=24548044800
Total committed heap usage (bytes)=11921457152
Shuffle Errors
BAD_ID=0
CONNECTION=0
IO_ERROR=0
WRONG_LENGTH=0
WRONG_MAP=0
WRONG_REDUCE=0
File Input Format Counters
Bytes Read=112652976
File Output Format Counters
Bytes Written=384974202

5.7 Perfect Balanceレポートについて

Perfect Balanceは、ジョブの実行時に次のレポートを生成します。

- Job Analyzerレポート: ジョブ内のロードの分散に関する様々な指標を含みます。このレポートは、ユーザー用のHTML形式と、Perfect Balanceで使用するためのXML形式で保存されます。このレポートには常に、jobanalyzer-report.htmlおよび-.xmlという名前が付けられます。「Job Analyzerレポートの分析」を参照してください。

- パーティション・レポート: 様々なリデューサに割り当てられたキーを識別します。このレポートは、Perfect Balanceで使用するためのJSON形式で保存され、ユーザーが使用するための情報を含みません。このレポートには、${job_output_dir}/_balancer/orabalancer_report.jsonという名前が付けられます。均衡化されたジョブのためにのみ生成されます。

- リデュース・キー・メトリック・レポート: 適切な構成プロパティが設定されている場合、Perfect Balanceは各ファイル・パーティションに対してレポートを生成します。これらのレポートは、Perfect Balanceで使用するためのXML形式で保存されます。ユーザーが使用するための情報は含まれません。これらのレポートには、${job_output_dir}/_balancer/ReduceKeyMetricList-attempt_jobid_taskid_task_attemptid.xmlという名前が付けられます。これらのレポートは、カウンティング・リデューサを使用する場合のみ生成されます(つまり、Perfect Balanceを使用する場合はoracle.hadoop.balancer.autoAnalyze=REDUCER_REPORT、またはAPIを使用する場合はBalancer.configureCountingReducerメソッドの呼出し)。
「追加メトリックの収集」を参照してください。

これらのレポートは、デフォルトではジョブの出力ディレクトリ(YARNの場合は${mapreduce.output.fileoutputformat.outputdir}、MRv1の場合は${mapred.output.dir})に保存されます。次に示すのは、このディレクトリの構造です。

job_output_directory
/_SUCCESS
/_balancer
ReduceKeyMetricList-attempt_201305031125_0016_r_000000_0.xml
ReduceKeyMetricList-attempt_201305031125_0016_r_000001_0.xml
.
.
.
jobanalyzer-report.html
jobanalyzer-report.xml
orabalancer_report.json
/part-r-00000
/part-r-00001
.
.
.

5.8 分割について

ロードを均衡化するために、Perfect Balanceは単一のリデュース・キーの値をサブパーティション化し、各サブパーティションを別のリデューサに送信する場合があります。この値のパーティショニングは分割と呼ばれます。

5.8.1 分割方法の選択

oracle.hadoop.balancer.enableSorting構成プロパティを設定することで、Perfect Balanceによる値の分割方法を構成できます。

- ハッシュ・パーティショニングによる分割: ソートが不要な場合、enableSorting=falseを設定します。これはデフォルトの分割方法です。

- ソートによる分割: 各サブパーティションの値をソートするようにenableSorting=trueを設定し、すべてのサブパーティションの値を並べ替えます。パラレル・ソート・ジョブでは、各タスクはタスク内の行をソートします。ジョブは、リデュース・タスク2の値がリデュース・タスク1の値より大きく、リデュース・タスク3の値がリデュース・タスク2の値より大きい(以下同様)ことを確認する必要があります。ジョブは、ソートされたデータを含む1つの大きいファイルではなく、ソート順のデータを含む複数のファイルを生成します。
たとえば、キーが3つのサブパーティションに分割され、サブパーティションがリデューサ5、8および9に送信される場合、リデューサ9のそのキーの値はリデューサ8のそのキーのすべての値より大きく、リデューサ8のそのキーの値はリデューサ5のそのキーのすべての値よりも大きくなります。enableSorting=trueの場合、Perfect Balanceはこの順序がリデュース・タスク全体に及ぶことを確認します。

アプリケーションでファイル全体のデータを集計する必要がある場合、oracle.hadoop.balancer.keyLoad.minChopBytes=-1を設定することで分割を無効にできます。Perfect Balanceでは、ビン・パッキングと呼ばれる小さいリデュース・キーを結合することで引き続きパフォーマンスが向上するようにします。

5.8.2 分割がアプリケーションに及ぼす影響

MapReduceがリデュース・キーでデータを集計する場合、各リデュース・タスクはそのタスク内のキーごとに値を集計します。ただし、Perfect Balanceで分割が有効になっている場合、リデュース・キーに関連付けられた行は異なるリデュース・タスクに存在し、部分集計になる可能性があります。このように、リデュース・キーの値は、リデュース・タスク全体ではなく1つのリデュース・タスク内で集計されます。(「分割方法の選択」に説明されているように、リデュース・タスク全体のリデュース・キーの値をソートできます。)

完全な集計が必要な場合、分割を無効にできます。MapReduceジョブの出力を使用するアプリケーションを調べることもできます。アプリケーションは部分集計に適している場合があります。

たとえば、検索エンジンは転置インデックスを作成するMapReduceジョブから出力をパラレルに読み取る場合があります。リデュース・タスクの出力は単語のリストであり、単語ごとに、その単語が発生するドキュメントのリストです。単語はキーであり、ドキュメントのリストは値です。部分集計を使用すると、一部の単語には集計されたリストではなく複数のドキュメント・リストが含まれます。複数のリストは、検索エンジンがパラレルに使用するのに役立ちます。パラレル検索エンジンでは、1つのリストに集計するのではなくドキュメント・リストを分割する必要がある場合もあります。ドキュメント・コレクションから転置インデックスを作成するHadoopジョブは、「Perfect Balanceの例について」を参照してください。

別の例として、Oracle Loader for Hadoopはデータを複数のファイルからターゲット表の正しいパーティションにロードします。リデュース・キーの複数のファイルがある場合、ロード・ステップは高速になります。これは、リデュース・キーの1つのファイルからロードする場合よりもより高度な並列化が可能になるためです。

5.9 Perfect Balanceで実行されているジョブのトラブルシューティング

Perfect Balanceサンプラを実行中にクライアント・ノードでJavaの「out of heap space」または「GC overhead limit exceeded」エラーが発生した場合には、そのジョブのクライアントJVMのヒープ・サイズを増やしてください。

Java JVMの-Xmxオプションを使用します。HADOOP_CLIENT_OPTS変数を設定すれば、Hadoopジョブを実行する前にクライアントJVMのオプションを指定できます。

$ export HADOOP_CLIENT_OPTS="-Xmx1024M $HADOOP_CLIENT_OPTS"

HADOOP_CLIENT_OPTSを設定しても、変更されるのはクライアント・ノード上のJVMオプションのみです。マップおよびリデュース・タスクでのJVMオプションは変更されません。この変数の設定例は、invindxスクリプトを参照してください。

oracle.hadoop.balancer.runModeがlocalとdistributedのどちらに設定されているかに関係なく、サンプラのヒープ・サイズを増やすにはHADOOP_CLIENT_OPTSを設定するだけで十分です。runMode=localの場合、サンプラはクライアント・ノードで実行され、HADOOP_CLIENT_OPTSはクライアント・ノード上でヒープ・サイズを設定します。runMode=distributedの場合、Perfect Balanceは、HADOOP_CLIENT_OPTSで指定した-Xmx設定に基づいてサンプラHadoopジョブのヒープ・サイズを自動的に設定します。Perfect Balanceは、マップのヒープ・サイズを変更することはなく、サンプラ・ジョブの場合のみジョブのタスクを削減します。

5.10 Perfect Balance APIの使用

oracle.hadoop.balancer.Balancerクラスには、パーティショニング・プランを作成したり、プランをファイルに保存したり、プランを使用してMapReduceジョブを実行したりするためのメソッドが含まれています。アプリケーションのジョブ・ドライバJavaクラスにコードを追加するのみで、アプリケーションの再設計は必要ありません。シェル・スクリプトを実行してアプリケーションを実行する際には、Perfect Balanceの構成設定を含めることができます。

5.10.1 Perfect Balanceを使用するためのJavaコードの変更

Perfect Balanceのインストール・ディレクトリには、Perfect Balance APIを使用するJava MapReduceプログラムの完全な例(入力データを含む)が含まれています。

転置インデックスの例と実行方法については、orabalancer-2.4.0-h2/examples/invindx/README.txtを参照してください。

変更されたJavaコードを探すには、orabalancer-2.4.0-h2/examples/jsrc/oracle/hadoop/balancer/examples/invindx/InvertedIndexMapred.javaまたはInvertedIndexMapreduce.javaを参照してください。

Perfect Balanceを実行するための変更には、次のものが含まれます。

- createBalancerメソッドは、構成プロパティを検証し、Balancerインスタンスを返します。

- waitForCompletionメソッドは、データをサンプリングし、パーティショニング・プランを作成します。

- addBalancingPlanメソッドは、パーティショニング・プランをジョブ構成設定に追加します。

- configureCountingReducerメソッドは、追加のロード統計を収集します。

- saveメソッドは、パーティショニング・レポートを保存し、Job Analyzerレポートを生成します。

例5-4は、転置インデックスのJavaコードの一部を示したものです。

関連項目:

Oracle Big Data Appliance Perfect Balance Java APIリファレンス

例5-4 MapReduceジョブでのPerfect Balanceの実行

.
.
.
import oracle.hadoop.balancer.Balancer;
.
.
.
///// BEGIN: CODE TO INVOKE BALANCER (PART-1, before job submission) //////
Configuration conf = job.getConfiguration();

Balancer balancer = null;

boolean useBalancer =
conf.getBoolean("oracle.hadoop.balancer.driver.balance", true);
if(useBalancer)
{
balancer = Balancer.createBalancer(conf);
balancer.waitForCompletion();
balancer.addBalancingPlan(conf);
}

if(conf.getBoolean("oracle.hadoop.balancer.tools.useCountingReducer", true))
{
Balancer.configureCountingReducer(conf);
}
////////////// END: CODE TO INVOKE BALANCER (PART-1) //////////////////////

boolean isSuccess = job.waitForCompletion(true);

///////////////////////////////////////////////////////////////////////////
// BEGIN: CODE TO INVOKE BALANCER (PART-2, after job completion, optional)
// If balancer ran, this saves the partition file report into the _balancer
// sub-directory of the job output directory. It also writes a JobAnalyzer
// report.
Balancer.save(job);
////////////// END: CODE TO INVOKE BALANCER (PART-2) //////////////////////
.
.
.
}

5.10.2 変更したJavaコードとPerfect Balanceの実行

変更したJavaコードを実行する際には、標準のhadoopコマンド構文を使用してPerfect Balanceプロパティを設定できます。

bin/hadoop jar application_jarfile.jar ApplicationClass \
-conf application_config.xml \
-conf perfect_balance_config.xml \
-D application_config_property \
-D perfect_balance_config_property \
-libjars application_jar_path.jar...

例5-5では、pb_balanceapi.shというスクリプトが実行されます。このスクリプトは、Perfect Balance JARファイルにパッケージされたInvertedIndexMapreduceクラスの例を実行します。キー・ロード・メトリック・プロパティは、図5-1で示したJob Analyzerレポートの推奨値に設定されます。

InvertedIndexMapreduceクラスの例を実行するには、「Perfect Balanceの例について」を参照してください。

例5-5 InvertedIndexMapreduceクラスの実行

$ cat pb_balanceapi.sh
BALANCER_HOME=/opt/oracle/orabalancer-2.4.0-h2
APP_JAR_FILE=/opt/oracle/orabalancer-2.4.0-h2/jlib/orabalancer-2.4.0.jar
export HADOOP_CLASSPATH=${BALANCER_HOME}/jlib/orabalancer-2.4.0.jar:${BALANCER_HOME}/jlib/commons-math-2.2.jar:$HADOOP_CLASSPATH
export HADOOP_USER_CLASSPATH_FIRST=true

hadoop jar ${APP_JAR_FILE} oracle.hadoop.balancer.examples.invindx.InvertedIndexMapreduce \
-D mapreduce.input.fileinputformat.inputdir=invindx/input \
-D mapreduce.output.fileoutputformat.outputdir=jdoe_outdir_api \
-D mapreduce.job.name=jdoe_invindx_api \
-D mapreduce.job.reduces=10 \
-D oracle.hadoop.balancer.linearKeyLoad.keyWeight=93.981394 \
-D oracle.hadoop.balancer.linearKeyLoad.rowWeight=0.001126 \
-D oracle.hadoop.balancer.linearKeyLoad.byteWeight=0.0

$ sh ./balanceapi.sh
14/04/14 15:03:51 INFO balancer.Balancer: Creating balancer
14/04/14 15:03:51 INFO balancer.Balancer: Starting Balancer
14/04/14 15:03:51 INFO input.FileInputFormat: Total input paths to process : 5
14/04/14 15:03:54 INFO balancer.Balancer: Balancer completed
14/04/14 15:03:55 INFO input.FileInputFormat: Total input paths to process : 5
14/04/14 15:03:55 INFO mapreduce.JobSubmitter: number of splits:5
14/04/14 15:03:55 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1397066986369_3510
14/04/14 15:03:55 INFO impl.YarnClientImpl: Submitted application application_1397066986369_3510
.
.
.
File Input Format Counters
Bytes Read=112652976
File Output Format Counters
Bytes Written=384974202

5.11 Perfect Balanceの例について

Perfect Balanceインストール・ファイルには、すぐに実行できる例の一式が含まれています。InvertedIndex例は、入力した一連のテキスト・ファイルについて転置インデックスを作成するMapReduceアプリケーションです。転置インデックスは、語をテキスト・ファイル内のその語の場所にマップします。入力データは含まれています。

5.11.1 この章の例について

InvertedIndex例は、この章のすべての例の基礎を提供します。これらは同じデータ・セットを使用して同じMapReduceアプリケーションを実行します。InvertedIndex例の変更は、自分のアプリケーションをPerfect Balanceで実行するときに行う必要があるステップをハイライトしているにすぎません。

この章の例を実行する場合、あるいはこれらの例を自分のジョブを実行する際の基礎として使用する場合は、次の変更を行ってください。

- 自分のアプリケーションを実行するために例を変更している場合は、アプリケーションJARファイルをHADOOP_CLASSPATHおよび-libjarsに追加してください。

- mapreduce.input.fileinputformat.inputdirの値がデータの場所を示していることを確認してください。
invindx/inputディレクトリには、InvertedIndex例のサンプル・データが含まれています。このデータを使用するには、最初に設定してください。「例データ・セットの抽出」を参照してください。

- jdoeをHadoopユーザー名に置き換えます。

- -confオプションを、既存の構成ファイルに設定します。
jdoe_conf_invindx.xmlファイルは、InvertedIndex例の構成ファイルを変更したものです。変更したファイルには、パフォーマンス最適化設定がありません。例構成ファイルはそのまま使用することも、変更することもできます。/opt/oracle/orabalancer-2.4.0-h2/examples/invindx/conf_mapreduce.xml (またはconf_mapred.xml)を参照してください。

- ファイル内とシェル・スクリプト内の構成設定を見直して、これらがジョブに適切であることを確認してください。

- ブラウザをノートパソコンから実行することも、あるいはグラフィカル・インタフェースをサポートするクライアント(VNCなど)を使用してOracle Big Data Applianceに接続することもできます。

5.11.2 例データ・セットの抽出

InvertedIndex例を実行したりこの章のいずれかの例を実行するには、最初にデータ・ファイルを設定する必要があります。

InvertedIndexデータ・ファイルを抽出するには、次の手順を実行します。

1. Perfect Balanceがインストールされているサーバーにログインします。

2. ディレクトリをexamples/invindxサブディレクトリに移動します。

cd /opt/oracle/orabalancer-2.4.0-h2/examples/invindx

3. データを解凍して、HDFS invindx/inputディレクトリにコピーします。

./invindx -setup

InvertedIndex例を実行する手順の詳細は、/opt/oracle/orabalancer-2.4.0-h2/examples/invindx/README.txtを参照してください。

5.12 Perfect Balance構成プロパティ・リファレンス

このセクションでは、Perfect Balanceの構成プロパティと、Perfect Balanceがジョブ構成から読み取るいくつかの汎用Hadoop MapReduceプロパティについて説明します。

- MapReduce構成プロパティ

- Job Analyzerの構成プロパティ

- Perfect Balance構成プロパティ

機能カテゴリにまとめられたプロパティのリストは、「Perfect Balanceの構成について」を参照してください。

注意:

CDH5では多数のMapReduceプロパティが非推奨になり、新しいプロパティに置換されています。Perfect Balanceでは古いプロパティ名を引き続き使用しますが、新しい名前を使用することをお薦めします。新しいMapReduceプロパティ名については、次のCloudera Webサイトを参照してください。

http://archive.cloudera.com/cdh5/cdh/5/hadoop/hadoop-project-dist/hadoop-common/DeprecatedProperties.html

MapReduce構成プロパティ

mapreduce.input.fileinputformat.inputdir

型: String

デフォルト値: 定義されていません。

説明: 入力ディレクトリの名前のカンマ区切りリスト。

mapreduce.inputformat.class

型: String

デフォルト値: org.apache.hadoop.mapreduce.lib.input.TextInputFormat

説明: InputFormatクラスのフル・ネーム。

mapreduce.map.class

型: String

デフォルト値: org.apache.hadoop.mapreduce.Mapper

説明: マッパー・クラスのフル・ネーム。

mapreduce.output.fileoutputformat.outputdir

型: String

デフォルト値: 定義されていません。

説明: ジョブの出力ディレクトリ。

mapreduce.partitioner.class

型: String

デフォルト値: org.apache.hadoop.mapreduce.lib.partition.HashPartitioner

説明: パーティショナ・クラスのフル・ネーム。

mapreduce.reduce.class

型: String

デフォルト値: org.apache.hadoop.mapreduce.Reducer

説明: リデューサ・クラスのフル・ネーム。

Job Analyzerの構成プロパティ

oracle.hadoop.balancer.application_id

型: String

デフォルト値: 定義されていません。

説明: Job Analyzerで分析するジョブのジョブ識別子。このプロパティは、YARNクラスタ上のスタンドアロン・モードでのJob Analyzerユーティリティに対するパラメータです。MRv1クラスタには適用されません。「Job Analyzerをスタンドアロン・ユーティリティとして実行する」を参照してください。

oracle.hadoop.balancer.tools.writeKeyBytes

型: Boolean

デフォルト値: false

説明: カウンティング・リデューサがJob Analyzer用のリデュース・キーのバイト表現を収集するかどうかを制御します。このプロパティをtrueに設定すると、レポート内で一意のキー値がBase64エンコーディングで表現されます。レポート内には、キーの文字列表現(key.toStringを使用して作成されたもの)も記載されます。この文字列値は各キーに対して一意でない場合があります。

Perfect Balance構成プロパティ

oracle.hadoop.balancer.autoAnalyze

タイプ: 列挙

デフォルト値: oracle.hadoop.balancer.autoBalanceがtrueの場合はBASIC_REPORT、それ以外の場合はNONE

説明: Perfect Balanceを使用してJob Analyzerを呼び出すときのJob Analyzerの動作を制御します。次の値が有効です。

- NONE: Job Analyzerを無効にします。

- BASIC_REPORT: Job Analyzerを有効にします。

- REDUCER_REPORT: ジョブの各リデュース・タスクに関する追加のロード統計を収集するようにJob Analyzerを有効にします。「追加メトリックの収集」を参照してください。

Perfect Balanceは次のプロパティを使用し、Perfect Balance APIは使用しません。

oracle.hadoop.balancer.autoBalance

型: Boolean

デフォルト値: false

説明: ロード・バランシング機能が有効かどうかを制御します。falseに設定すると、バランシングがオフになります。Perfect Balanceは次のプロパティを使用し、Perfect Balance APIは使用しません。

oracle.hadoop.balancer.confidence

型: Float

デフォルト値: 0.95

説明: oracle.hadoop.balancer.maxLoadFactorプロパティによって指定された負荷係数に対する統計的信頼指標。

このプロパティは、0.5以上、1.0未満(0.5 <= 値 < 1.0)の値を受け入れます。値が0.5未満の場合、プロパティがデフォルト値に再設定されます。0.9以上の値をお薦めします。典型的な値は、0.95と0.99です。

oracle.hadoop.balancer.enableSorting

型: Boolean

デフォルト値: false

説明: マップ出力キーをチョップ(分割)するかどうかを制御します。

- false: ハッシュ関数を使用します。

- true: マップ出力キーのソーティング・コンパレータをトータルオーダー・パーティショニング関数として使用します。バランサは、分割されたキーの値に対するトータル・オーダーを保存します。

Perfect Balanceは、ジョブがセカンダリ・ソートに構成されていない場合またはoracle.hadoop.balancer.keyLoad.minChopBytesが-1である場合にこのプロパティをfalseに設定します。

oracle.hadoop.balancer.inputFormat.mapred.map.tasks

型: Integer

デフォルト値: 100

説明: 入力形式のgetSplitsを呼び出す直前に、Hadoopのmapred.map.tasksプロパティをサンプリングの継続時間用に設定します。実際のジョブのmapred.map.tasksは変更しません。最適なマップ・タスク数は、良好なサンプルの取得(より大きい数)と限定されたメモリー・リソース(より小さい数)との間のトレードオフになります。

このプロパティは1以上の値に設定してください。1未満の値に設定すると、プロパティが無効になります。

一部の入力形式(DBInputFormatなど)では、このプロパティはgetSplitsによって返される分割数を決定するためのヒントとして使用されます。値が高いほど、より大きなデータ・チャンクがランダムにサンプリングされ、サンプルが改善されます。

値を高くすると、より大きいデータ・セットを取得できます(たとえば、行当たり約100バイトで数百行を取得するなど)。ただし、極端に大きな値を設定すると、入力形式のgetSplitsメソッドから返される分割が増えすぎて、メモリーが不足する可能性があります。

oracle.hadoop.balancer.inputFormat.mapred.max.split.size

型: Long

デフォルト値: 1048576 (1 MB)

説明: 入力形式のgetSplitsを呼び出す直前に、Hadoopのmapred.max.split.sizeプロパティをサンプリングの継続時間用に設定します。実際のジョブのmapred.max.split.sizeは変更しません。

このプロパティは1以上の値に設定してください。1未満の値に設定すると、プロパティが無効になります。最適な分割サイズは、良好なサンプルの取得(より少ない分割数)と効率的なI/Oパフォーマンス(より多い分割数)との間のトレードオフになります。

一部の入力形式(FileInputFormatなど)では、最大分割サイズはgetSplitsによって返される分割数を決定するためのヒントとして使用されます。分割サイズが小さいほど、より大きなデータ・チャンクがランダムにサンプリングされ、サンプルが改善されます。良好なパフォーマンスでサンプリングできるよう、なるべく小さい値を設定しますが、あまり小さくしすぎないようにしてください。極端に小さな値を設定すると、I/Oパフォーマンスが非効率になり、サンプルが改善されません。

大きなデータ・セット(数十TB)を取得しようとして値を高くすると、入力形式のgetSplitsメソッドからメモリー不足エラーがスローされる場合があります。分割が大きいと、I/Oパフォーマンスは高まりますが、サンプリング品質は低下します。

oracle.hadoop.balancer.keyLoad.minChopBytes

型: Long

デフォルト値: 0

説明: Perfect Balanceでマップ出力キーを中間キーに分割するかどうかを制御します。

- -1: Perfect Balanceは大きなマップ出力キーを分割しません。

- 0: Perfect Balanceは大きなマップ出力キーを分割し、各中間キーの最適なサイズを決定します。

- 正の整数: Perfect Balanceは大きなマップ出力キーを指定された整数以上のサイズで中間キーに分割します。

oracle.hadoop.balancer.linearKeyLoad.byteWeight

型: Float

デフォルト値: 0.05

説明: oracle.hadoop.balancer.KeyLoadLinearクラスによって指定された線形キー・ロード・モデル内の、キー当たりのバイト数を決定します。

oracle.hadoop.balancer.linearKeyLoad.feedbackDir

型: String

デフォルト値: 定義されていません。

説明: 以前に分析したジョブのJob Analyzerレポートを含むディレクトリへのパス。サンプラはフィードバックのためにこのレポートを分析し、現在のバランシング・プランを最適化します。フィードバックを直接適用できるように、このプロパティを、現在のジョブと同一または類似するジョブのJob Analyzerレポート・ディレクトリに設定できます。

フィードバック・ディレクトリにPerfect Balance線形キー・ロード・モデル係数の推奨値を含むJob Analyzerレポートが含まれている場合、Perfect Balanceはその係数を自動的に読み取って使用します。推奨値は、これらの構成パラメータでユーザーが指定した値よりも優先されます。

- oracle.hadoop.balancer.linearKeyLoad.byteWeight

- oracle.hadoop.balancer.linearKeyLoad.keyWeight

- oracle.hadoop.balancer.linearKeyLoad.rowWeight

Job Analyzerはこれらの係数に適切な値の推奨を試行します。ただし、Perfect Balanceは次のような状況では構成プロパティのこのリストからロード・モデル係数を読み込みます。

- feedbackDirプロパティは設定されません。

- feedbackDirプロパティは設定されていますが、指定したディレクトリのJob Analyzerレポートにはロード・モデル係数の適切な推奨値が含まれていません。

oracle.hadoop.balancer.linearKeyLoad.keyWeight

型: Float

デフォルト値: 50.0

説明: oracle.hadoop.balancer.KeyLoadLinearクラスによって指定された線形キー・ロード・モデル内の、大きなキー当たりの中間キー数を決定します。

oracle.hadoop.balancer.linearKeyLoad.rowWeight

型: Float

デフォルト値: 0.05

説明: oracle.hadoop.balancer.KeyLoadLinearクラスによって指定された線形キー・ロード・モデル内のキー当たりの行数を決定します。

oracle.hadoop.balancer.maxLoadFactor

型: Float

デフォルト値: 0.05

説明: バランサのパーティション・プランで達成するターゲット・リデューサ負荷係数。

負荷係数とは、見積り値からの相対偏差です。たとえば、maxLoadFactor=0.05かつconfidence=0.95の場合、信頼度が95%より高ければ、ジョブのリデューサ・ロードはパーティション・プランの値よりも(最大で)5%大きくなります。

これら2つのプロパティの値により、サンプラの停止条件が決定されます。バランサは、指定された負荷係数を指定された信頼度で保証するプランを生成できるかぎり、サンプリングを継続します。この保証では、他の停止条件(サンプル数がoracle.hadoop.balancer.maxSamplesPctを超えるなど)によってサンプラが早期に停止するケースは対象外とされる場合があります。停止条件はパーティション・レポートに記録されます。

oracle.hadoop.balancer.confidenceを参照してください。

oracle.hadoop.balancer.maxSamplesPct

型: Float

デフォルト値: 0.01 (1%)

説明: Perfect Balanceが収集できるサンプル数を、総入力レコードのごく一部に制限します。ゼロより小さい値を設定すると、プロパティは無効(無制限)になります。

リデューサ・パーティションがきわめて不均一な場合や、マップ出力キーが高密度でクラスタ化されている場合には、Hadoopアプリケーションの値を高くすることが必要になることがあります。これらの場合、サンプラは良好なパーティショニング・プランを達成するためにより多くのデータをサンプリングする必要があります。

oracle.hadoop.balancer.useClusterStatsを参照してください。

oracle.hadoop.balancer.minSplits

型: Integer

デフォルト値: 5

説明: サンプラが読み取る最小分割数を設定します。総分割数がこの値よりも少ない場合、サンプラはすべての分割を読み取ります。このプロパティは、1以上の値に設定してください。正の数以外を指定すると、プロパティは1に設定されます。

oracle.hadoop.balancer.numThreads

型: Integer

デフォルト値: 5

説明: サンプラ・スレッドの数。この値は、ジョブが開始されるノードで使用可能なプロセッサとメモリー・リソースに基づいて設定します。サンプラ・スレッドの数を増やすほど、より多くのサンプリングが並行処理されます。このプロパティを(1)に設定すると、サンプラでのマルチスレッディングは無効になります。

oracle.hadoop.balancer.report.overwrite

型: Boolean

デフォルト値: false

説明: Perfect Balanceがoracle.hadoop.balancer.reportPathプロパティによって指定された場所のファイルを上書きするかどうかを制御します。デフォルトでは、Perfect Balanceはファイルを上書きしません(例外をスローします)。このプロパティをtrueに設定すると、パーティション・レポートの上書きが許可されます。

oracle.hadoop.balancer.reportPath

型: String

デフォルト値: directory/orabalancer_report-random_unique_string.json (HDFS用のディレクトリは、ジョブを送信するユーザーのホーム・ディレクトリ)。ローカル・ファイル・システム用のディレクトリは、ジョブが送信されるディレクトリです。

説明: Hadoopジョブ出力ディレクトリが使用可能になる前(つまり、MapReduceジョブが実行を完了する前)に、Perfect Balanceがパーティション・レポートを書き込む場所のパス。ジョブの最後に、Perfect Balanceはファイルをjob_output_dir/_balancer/orabalancer_report.jsonに移動します。APIでは、saveメソッドがこのタスクを実行します。

oracle.hadoop.balancer.runMode

型: String

デフォルト値: local

説明: Perfect Balanceサンプラの実行方法を指定します。次の値が有効です。

- local: サンプラはジョブが発行されたクライアント・ノード上で実行されます。

- distributed: サンプラはHadoopジョブとして実行されます。ジョブが分散キャッシュを使用する場合、Perfect Balanceはこのプロパティを自動的にdistributedに設定します。

このプロパティを無効な文字列に設定すると、Perfect Balanceによってlocalにリセットされます。

oracle.hadoop.balancer.tmpDir

型: String

デフォルト値: /tmp/orabalancer-user_name

説明: ジョブ出力ディレクトリ(HDFSまたはローカル)のファイル・システム内にあるステージング・ディレクトリへのパス。Perfect Balanceは、ディレクトリが存在していなければディレクトリを作成し、パーティション・レポートをそこにコピーして、Hadoop分散キャッシュにロードできるようにします。

oracle.hadoop.balancer.useClusterStats

型: Boolean

デフォルト値: true

説明: サンプラがクラスタ・サンプリング統計情報を使用できるようにします。これらの統計情報は、マップ出力キーがすべての入力分割に対して個別に分散されているのではなく、各入力分割に対してクラスタ内で分散されている場合に、サンプリングされた見積り値(マップ出力キー内のレコード数など)の精度を改善します。

このプロパティは、マップ出力キーがクラスタ化されていないことが確実にわかっている場合にのみ、falseに設定してください。この設定は、クラスタリングが一切存在しない場合にのみ、サンプラの見積りを改善します。マップ出力キーの分散は通常確認されないので、このプロパティはtrueのままにしておくことをお薦めします。

oracle.hadoop.balancer.useMapreduceApi

型: Boolean

デフォルト値: true

説明: Hadoopジョブで使用されるMapReduce APIを識別します。

- true: ジョブはmapreduce APIを使用します。

- false: ジョブはmapred APIを使用します。

第III部 Oracle Big Data SQL

この項では、Oracle Big Data SQLライセンスで提供されるソフトウェアについて説明します。ここには次の章が含まれます。

- データ・アクセスのためのOracle Big Data SQLの使用

- Oracle Big Data SQLリファレンス

- HadoopへのOracle表のコピー

6 データ・アクセスのためのOracle Big Data SQLの使用

この章では、Oracle Big Data SQLについて説明します。この項の内容は次のとおりです。

- Oracle Big Data SQLとは

- Oracle Big Data SQLのインストール

- HiveデータのOracle外部表の作成

- Oracle NoSQL DatabaseのOracle外部表の作成

- Apache HBaseのOracle外部表の作成

- HDFSファイルのOracle外部表の作成

- SQL CREATE TABLE文について

- データ型変換について

- 外部表の問合せ

- Oracle Exadata Database Machine上のOracle Big Data SQLについて

6.1 Oracle Big Data SQLとは

Oracle Big Data SQLは、Apache Hive、HDFS、Oracle NoSQL Database、Apache HBaseなどの複数のデータ・ソースに格納された大量のビッグ・データに対する問合せをサポートしています。様々なデータ・ストアのすべてのデータを、Oracleデータベースに格納されているかのようにまとめて表示および分析できます。

Oracle Big Data SQLを使用すると、完全なSQL構文を使用してHadoopクラスタに格納されたデータを問い合せることができます。手動で、または既存のアプリケーションを使用して、Hadoop内のデータに対して最も複雑なSQL SELECT文を実行し、最も重要な洞察を引き出すことができます。たとえば、Oracle Advanced Analyticsデータベース・オプションのユーザーは、Oracle Databaseに存在するデータ・マイニング・モデルをOracle Big Data Applianceに存在するデータに適用できます。

次の項に詳細を示します。

- Oracle外部表について

- Oracle Big Data SQLのアクセス・ドライバについて

- Smart Scanテクノロジについて

- ストレージ索引について

- Oracle Big Data SQLを使用したデータ・セキュリティについて

6.1.1 Oracle外部表について

Oracle Big Data SQLは、外部表で次世代のパフォーマンス向上を実現します。外部表は、データベース外のデータの場所を識別および記述するOracle Databaseオブジェクトです。他のデータベース表に使用するのと同じSQL SELECT構文を使用して、外部表を問い合せることができます。

外部表はアクセス・ドライバを使用して、データベース外のデータを解析します。外部データのタイプごとに一意のアクセス・ドライバが必要です。Oracle Big Data SQLのこのリリースには、ビッグ・データ用の2つのアクセス・ドライバが含まれています。Apache Hiveに格納されているデータにアクセスするためのドライバ、およびHadoop Distributed File System (HDFS)ファイルに格納されているデータにアクセスするためのドライバです。

6.1.2 Oracle Big Data SQLのアクセス・ドライバについて

外部表への問合せによって、データがOracleデータベースの表に格納されている場合と同様に、HDFSやHive表に格納されているデータにアクセスできます。Oracle Databaseは、外部表の作成時に指定されたメタデータを使用してデータにアクセスします。

Oracle Database 12.1.0.2は、Oracle Big Data SQL用の新しい2つのアクセス・ドライバをサポートしています。

- ORACLE_HIVE: Apache Hiveデータ・ソースに対するOracle外部表を作成できます。HDFSデータ・ソースに対してHive表がすでに定義されている場合、このアクセス・ドライバを使用します。ORACLE_HIVEは、Hive表が定義されている他の場所(HBaseなど)に格納されているデータにもアクセスできます。

- ORACLE_HDFS: HDFSに格納されているファイルに対するOracle外部表を直接作成できます。このアクセス・ドライバはHive構文を使用してデータ・ソースを記述し、COL_1、COL_2などのデフォルトの列名を割り当てます。個別の手順としてHive表を手動で作成する必要はありません。
ORACLE_HIVEと同じ方法でHiveメタデータ・ストアからメタデータを取得するのではなく、ORACLE_HDFSアクセス・ドライバは必要な情報をすべてアクセス・パラメータから取得します。メタデータを指定するにはORACLE_HDFSアクセス・パラメータが必要です。このパラメータは、Oracle Database内の外部表定義の一部として格納されます。

Oracle Big Data SQLは、これらのアクセス・ドライバを使用して問合せのパフォーマンスを最適化します。

6.1.3 Smart Scanテクノロジについて

通常、外部表に対する問合せには全表スキャンが必要なため、外部表には従来の索引はありません。ただし、Oracle Big Data SQLはOracle Big Data Appliance上にExadataストレージ・サーバー・ソフトウェアをインストールすることで、SmartScan機能(フィルタ述語オフロードなど)をOracle外部表に拡張します。このテクノロジを使用すると、Oracle Big Data Applianceは大部分(合計で最大99パーセント)の無関係なデータを破棄し、より小さい結果セットをOracle Exadata Database Machineに返すことができます。エンド・ユーザーが問合せの結果を得るまでの時間は大幅に短縮されます。これは、Oracle Databaseに対する負荷、およびネットワーク上のトラフィックが軽減されたことの直接的な結果です。

関連項目:

外部表の概要、およびOracle Databaseドキュメント・ライブラリ内の詳細情報への手引きについては、『Oracle Database概要』を参照してください。

6.1.4 ストレージ索引について

Oracle Big Data SQLでは、ストレージ索引が自動的に管理され、Oracle Databaseに対して透過的です。ストレージ索引には、HDFに格納されているデータに関するハード・ディスク上のデータ分散のサマリーが含まれています。ストレージ索引により、I/O操作とフラット・ファイルからOracle Databaseブロックにデータを変換するCPUコストを減らすことができます。

ストレージ索引は、HDFSに基づいた外部表またはORACLE_HDFSドライバとORACLE_HIVEドライバのいずれかを使用して作成された外部表に対してのみ使用できます。ストレージ索引は、Apache、HBase、Oracle NoSQLなどのストレージ・ハンドラを使用する外部表に対して使用することはできません。

ストレージ索引はインメモリー領域索引を収集したもので、各領域索引には最大32列のサマリーが格納されています。各分割に領域索引が1つあります。1つの領域索引に格納されているコンテンツは、その他の領域索引とは無関係です。これにより拡張性が高まり、ラッチ競合を回避できます。

各領域索引では、ストレージ索引が領域の列の最小値と最大値を管理します。最小値および最大値は、不要なI/Oの回避に使用されます。これは、I/Oフィルタリングとも呼ばれます。V$SYSSTATビューにあるストレージ索引統計別に保存されたセルのXTグラニュルI/Oバイト数は、ストレージ索引を使用して保存されたI/Oのバイト数を示したものです。

関連項目:

V$SYSSTATビューの詳細は、『Oracle® Databaseリファレンス』を参照してください

次の比較を使用する問合せはストレージ索引によって改善されます。

- 等価(=)

- 不等価(<、!=または>)

- 以下(<=)

- 以上(>=)

- IS NULL

- IS NOT NULL

Oracle Big Data SQLサービスでは、領域内の列の最大値より大きいか、最小値より小さいという比較述語が指定された問合せを受け取った後に、ストレージ索引は自動的に作成されます。

注意:

- WHERE問合せ句に頻繁に出現する列に基づいて表内の行を順序付けると、ストレージ索引の効果が上がります。

- ストレージ索引は、すべての非言語データ型で動作し、非言語索引に似た言語データ型でも動作します。

例6-1 ストレージ索引を使用したディスクI/Oの回避

次の図に、表および領域索引を示します。表内の値の範囲は1から8です。一方の領域索引には最小値として1、最大値として5が格納されています。もう一方の領域索引には、最小値として3、最大値として8が格納されています。

SELECT * FROM TABLE WHERE B < 2などの問合せの場合、最初の行セットのみが一致します。2番目の行セットの最小値と最大値は問合せのWHERE句と一致しないため、ディスクI/Oが回避されます。

例6-2 ストレージ索引による結合パフォーマンスの向上

ストレージ索引を使用すると、表の結合で不要なI/O操作をスキップできます。たとえば、次の問合せでは、I/O操作を実行し、ファクト表の最初のブロックにのみブルーム・フィルタを適用しています。

SELECT count(*) from fact, dim where fact.m=dim.m and dim.name="Hard drive"

ファクト表の2番目のブロックに対するI/Oは、最小値/最大値の範囲(5,8)がブルーム・フィルタに存在しないため、ストレージ索引によって完全に回避されます。

6.1.5 Oracle Big Data SQLを使用したデータ・セキュリティについて

Oracle Big Data Applianceには、Oracle Big Data Appliance上のCDHクラスタに格納されているデータを保護するための多数のセキュリティ機能がすでに用意されています。

- Kerberos認証: ユーザーおよびクライアント・ソフトウェアは、クラスタにアクセスする前に資格証明を提供する必要があります。

- Apacheセキュリティ認証: データおよびメタデータにファイングレインのロールベース認証を提供します。

- HDFSでの透過的暗号化: ディスクにあるデータを保護します。データの暗号化と復号化は、データを使用するアプリケーションに対して透過的です。

- Oracle Audit Vault and Database Firewall監視: Oracle Big Data Appliance上のAudit Vaultプラグインは、MapReduce、HDFSおよびOozieサービスから監査およびロギング・データを収集します。そうすると、Audit Vault Serverを使用してOracle Big Data Appliance上でこれらのサービスを監視できるようになります。

Oracle Big Data SQLは、このリストに様々なOracle Databaseセキュリティ機能を追加します。リレーショナル・データに適用するHadoopデータに同じセキュリティ・ポリシーおよびルールを適用できます。

6.2 Oracle Big Data SQLのインストール

Oracle Big Data SQLは、Oracle Big Data Applianceに接続されたOracle Exadata Database Machineでのみ使用できます。Oracle Big Data SQLソフトウェアを両方のシステムにインストールする必要があります。

次のトピックでは、Oracle Big Data SQLをインストールする方法について説明します。

- Oracle Big Data SQLを使用するための前提条件

- インストールの実行

- Oracle Big Data SQLのインストール後スクリプトの実行

- Kerberos化されたクラスタへのOracle Big Data SQLアクセスの有効化

6.2.1 Oracle Big Data SQLを使用するための前提条件

Oracle Exadata Database Machineは次の要件に準拠している必要があります。

- 計算サーバーでは、Oracle DatabaseおよびOracle Enterprise Manager Grid Control 12.1.0.2.1以降を実行しています。

- ストレージ・サーバーでは、Exadataストレージ・サーバー・ソフトウェア12.1.1.1または12.1.1.0を実行しています。

- Oracle Exadata Database Machineは、Oracle Big Data Applianceと同じインフィニバンド・サブネットで構成されています

- Oracle Exadata Database Machineは、インフィニバンド・ネットワークによってOracle Big Data Applianceに接続されています。

6.2.2 インストールの実行

Oracle Big Data ApplianceとOracle Exadata Database MachineにOracle Big Data SQLソフトウェアをインストールするには、次の手順を実行します。

注意:

この手順は、Bundle Patch 11 - 13には使用しないでください。これらのパッチは、Big Data SQL 2.0との併用についてはサポートされていません。

1. Bundle Patch 10を使用している場合は、12.1.0.2.1のOracle Databaseの個別パッチ(パッチ番号21419192)をダウンロードします。

注意:

Bundle Patch 14以上を使用している場合は、このステップをスキップします。Big Data SQL 2.0の場合、追加のOracle Databaseの個別パッチは必要ありません。

2. すべてのOracle Exadata Database Machine計算サーバーで、パッチをインストールします。

- グリッド・インフラストラクチャ・ホーム

- Oracle Databaseホーム

Bundle PatchのDatapatch部分を忘れずに実行してください。パッチをインストールする順を追った手順は、パッチのREADMEを参照してください。

3. Oracle Big Data Applianceで、ソフトウェアをインストールするか、最新のバージョンにアップグレードします。詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

Oracle Big Data Appliance構成生成ユーティリティを使用する場合、インストール・オプションとしてOracle Big Data SQLを選択できます。詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

4. Oracle Big Data SQLがインストール中に有効でない場合、bdacliユーティリティを使用します。

# bdacli enable big_data_sql

詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

5. Oracle Exadata Database Machineで、インストール後スクリプトを実行します。

「Oracle Big Data SQLのインストール後スクリプトの実行」を参照してください。

Cloudera Managerを使用すると、Oracle Big Data SQLが稼働していることを確認できます。「Oracle Big Data SQLの管理」を参照してください。

完了したとき、クラスタがKerberosで保護されている場合は、クラスタ・ノードとOracle Exadata Database Machineの両方で追加の手順を実行する必要があります。「Kerberos化されたクラスタへのOracle Big Data SQLアクセスの有効化」を参照してください。

Oracle Big Data Applianceがバージョン4.3.0にアップグレードされた場合、Big Data SQLがすでにインストールされていると、アップグレード・プロセスによって、暗黙的にOracle Big Data SQLがバージョン2.0にアップグレードされます。ただし、Oracle Big Data Applianceのアップグレード後、顧客は、インストール後スクリプトを再実行する前に、引き続きOracle Databaseをサポートされているレベルにアップグレードする必要があります。

6.2.3 Oracle Big Data SQLのインストール後スクリプトの実行

Oracle Big Data SQLのインストール後スクリプトを実行するには、次の手順を実行します。

1. bds-exa-install.shインストール・スクリプトを、MammothがインストールされているOracle Big Data Applianceノードからコピーします。一般に、Oracle Exadataに対するクラスタの最初のノードです。任意の場所にコピーできます。wget、curlなどのコマンドを使用できます。この例では、bda1node07からスクリプトをコピーします。

wget http://bda1node07/bda/bds-exa-install.sh

2. Oracleインストールの所有者の名前を確認し、Oracleユーザーとして実行可能ファイルを設定します。通常は、oracleユーザーがインストールを所有します。次のコマンドを使用します。

$ ls -l bds-exa-install.sh
$ chown oracle:oinstall bds-exa-install.sh
$ chmod +x bds-exa-install.sh

3. 次の環境変数を適切に設定します。

$ORACLE_HOME to <database home>
$ORACLE_SID to <correct db SID>
$GI_HOME to <correct grid home>

注意:

この手順で説明するように、$GI_HOMEを設定するかわりに、手順5で説明するように、グリッド・ホームとインストール・スクリプトを設定できます。

4. TNS_ADMINが、直接listener.oraが実行されている場所を指していることを確認します。リスナーがデフォルトの場所のTNS_ADMIN、$ORACLE HOME/network/adminにある場合、TNS_ADMINを定義する必要はありません。リスナーがデフォルトの場所にない場合は、コマンドを使用して、正しくTNS_ADMINがこれを指すように設定する必要があります。

export TNS_ADMIN=<path to listener.ora>

5. ORACLE_SIDが大文字の場合、この手順のみを実行します。それ以外の場合は、次の手順に進みます。これは、小文字の場合にのみ、インストール・スクリプトがCRSデータベース・リソースをORACLE_SIDから取得するためです。大文字の場合、次の手順を実行してSIDをスクリプトに手動で渡します。

a. 次のコマンドを実行して、すべてのリソースをリストします。

$ crsctl stat res -t

b. 出力ノートから、ora.<dbresource>.dbリソース名を選択します。

c. 次のコマンドを実行して、正しいora.<dbresource>.dbリソース名が返されているかどうか確認します。

$ ./crsctl stat res ora.<dbresource>.db

出力には、次のようにリソース名が表示されます。

NAME=ora.<dbresource>.db
TYPE=ora.database.type
TARGET=ONLINE , ONLINE
STATE=ONLINE on <name01>, ONLINE on <name02>

d. 次のようにして、--db-name=<dbresource>をインストール・スクリプトへの追加引数として指定します。

./bds-exa-install.sh --db-name=<dbresource>

また、手順3で説明するように、次のようにして上記のコマンドを使用して$GI_HOMEを設定するかわりにグリッド・ホームを設定することができます。

./bds-exa-install.sh --db-name=<dbresource> --grid-home=<grid home>

注意:

この手順を実行済の場合、次の手順をスキップできます。

6. oracleとしてスクリプトを実行します。

./bds-exa-install.sh

スクリプトからoracleユーザーとして次に進むように求められた場合、別のセッションではスクリプトをrootとして実行する必要があります。次に例を示します

$ ./bda-exa-install.sh:
bds-exa-install: root shell script         : /u01/app/oracle/product/12.1.0.2/dbhome_1/install/bds-root-<cluster-name>-setup.sh
please run as root:
/u01/app/oracle/product/12.1.0.2/dbhome_1/install/bds-root-<rack-name>-clu-setup.sh

出力例を次に示します。

bds-exa-install: setup script started at: Mon May 4 16:56:48 PDT 2015
bds-exa-install: version                : 1.1.09
bds-exa-install: bda cluster name       : <cluster-name>
bds-exa-install: bda web server         : bdanode01.example.com
bds-exa-install: cloudera manager url   : bdanode03.example.com:7180
bds-exa-install: hive version           : hive-0.13.1-cdh5.3.0
bds-exa-install: hadoop versi           : hadoop-2.5.0-cdh5.3.0
bds-exa-install: bds ve                 : Bds 1.1
bds-exa-install: bds install date       : 05/04/2015 16:34 PDT
bds-exa-install: bd_cell version        : bd_cell-12.1.2.0.100_LINUX.X64_150225.1100-1.x86_64
bds-exa-install: action                 : setup
bds-exa-install: crs                    : useCrs
bds-exa-install: db resource            : <db_resource>
bds-exa-install: database type          : RAC
bds-exa-install: cardinality            : 8
************************
README--README--README--README--README--README--README--README--README--README
************************
Detected a multi instance database (<db_resource>). Run this script on all instances.
Please read all option of this program (bds-exa-install --help)
This script does extra work on the last instance.  The last instance is determined as
the instance with the largest instance_id number.
press <return>

bds-exa-install: root shell script      : /u01/app/oracle/product/12.1.0.2/dbhome_1/install/bds-root-<cluster-name>-setup.sh
please run as root:

/u01/app/oracle/product/12.1.0.2/dbhome_1/install/bds-root-<cluster-name>-setup.sh

waiting for root script to complete, press <enter> to continue checking.. q<enter> to quit

bds-exa-install: root script seem to have succeeded, continuing with setup bds
mkdir: created directory `/u01/app/oracle/product/12.1.0.2/dbhome_1/bigdatasql'
mkdir: created directory `default_dir'
mkdir: created directory `bigdata_config'
mkdir: created directory `log'
mkdir: created directory `jlib'
bds-exa-install: working directory : /u01/app/oracle/product/12.1.0.2/dbhome_1/bigdatasql/jlib
bds-exa-install: removing old oracle bds jars if any
bds-exa-install: downloading oracle bds jars
bds-exa-install: installing oracle bds jars
bds-exa-install: working directory  : /u01/app/oracle/product/12.1.0.2/dbhome_1/bigdatasql
bds-exa-install: downloading      : hadoop-2.5.0-cdh5.3.0.tar.gz
...
bds-exa-install: creating bds property files
bds-exa-install: working directory : /u01/app/oracle/product/12.1.0.2/dbhome_1/bigdatasql/bigdata_config
bds-exa-install: created bigdata.properties
bds-exa-install: created  bigdata-log4j.properties
...
catcon: See /u01/app/oracle/product/12.1.0.2/dbhome_1/install/bdscatcon*.log files for output generated by scripts
catcon: See /u01/app/oracle/product/12.1.0.2/dbhome_1/install/bdscatcon_*.lst files for spool files, if any
catcon.pl: completed successfully
bds-exa-install: granted default and cluster directories to public!
bds-exa-install: no mta will be setup, dropping db links for bda01clu
...
catcon: See bdscatcon-<##>_*.lst files for spool files, if any
catcon.pl: completed successfully
bds-exa-install: setup script completed all steps

詳細は、「bds-exa-installスクリプトの実行」を参照してください。

7. 複数のインスタンス・データベースを使用している場合、データベース・インスタンスごとに手順6を繰り返します。

スクリプトが終了すると、Oracle Big Data SQLを含む次の項目が使用できるようになり、データベース・インスタンス上で実行されます。ただし、イベントによってOracle Big Data SQLエージェントが停止した場合、再起動する必要があります。「Big Data SQLエージェントの起動および停止」を参照してください。

- Oracle Big Data SQLのjarのディレクトリおよび構成、環境ファイルおよびプロパティ・ファイル。

- Database dba_directories。

- Database dblinks。

- Databaseビッグ・ファイルspfileパラメータ。
たとえば、次のようにして、dba_directoriesをSQLプロンプトから確認できます。

SQL> select * from dba_directories where directory_name like '%BIGDATA%';

6.2.3.1 bds-exa-installスクリプトの実行

bds-exa-installスクリプトは、Oracleホーム・ディレクトリの所有者によって実行されるカスタム・インストール・スクリプトを生成します。そのセカンダリ・スクリプトは、Oracle Big Data SQLで必要なすべてのファイルを$ORACLE_HOME/bigdatasqlディレクトリにインストールします。Oracle NoSQL Databaseのサポートには、クライアント・ライブラリ(kvclient.jar)をインストールします。また、データベース・ディレクトリ・オブジェクト、およびマルチスレッドのOracle Big Data SQLエージェントのデータベース・リンクも作成します。

--generate-onlyオプションを使用してセカンダリ・スクリプトを作成し、$ORACLE_HOMEの所有者として実行することもできます。

6.2.3.2 bds-exa-install構文

次にbds-exa-installの構文を示します。

./bds-exa-install.sh [option]

オプション名の前には2つのハイフン(--)が付いています。

--generate-only={true | false}

セカンダリ・スクリプトを生成するだけで実行しない場合は、trueに設定します。1つのステップでスクリプトを生成して実行する場合は、falseに設定します(デフォルト)。

6.2.3.3 bds-exa-installスクリプトの実行のトラブルシューティング

Exadataでインストール・スクリプトを実行する場合に問題が発生したら、次の手順を実行してOracleサポートでSRを開き詳細を確認します。

1. 次のようにして、デバッグ内のスクリプトを実行してデバッグ出力を収集します。

$ ./bds-exa-install.sh --db-name=<dbresource> --grid-home=<grid home>  --root-script=false --debug
OR
$ ./bds-exa-install.sh --root-script=false --debug

2. 次のようにして、Oracle Databaseバージョンを収集します。

a. RDBMS-RAC Homeからopatch lsinventoryの結果を収集します。

b. Grid Homeからopatch lsinventoryの結果を収集します

3. 次のSQL文の結果により、Datapatchが設定されていることを確認します。

SQL> select patch_id, patch_uid, version, bundle_series, bundle_id, action, status from dba_registry_sqlpatch;

4. 次の環境変数から、情報を収集します。

- $ORACLE_HOME

- $ORACLE_SID

- $GI_HOME

- $TNS_ADMIN

5. lsnrctl statusコマンドを実行します。

6.2.4 Kerberos化されたクラスタへのOracle Big Data SQLアクセスの有効化

Oracle Big Data SQLにKerberosが有効化されたクラスタ上のHDFSデータへのアクセス権を付与するには、アクセスを必要とする各Oracle Exadata Database MachineをKerberosクライアントにします。また、各クラスタ・ノードおよびExadata Database Machine上のoracleアカウントでkinitを実行し、このアカウントがKerberosによって認証されることを確認します。この手順は、次の2つの状況で必要となります。

- Kerberosが有効化されたクラスタでOracle Big Data SQLを有効化する場合。

- Oracle Big Data SQLがすでにインストールされているクラスタでKerberosを有効化する場合。

注意:
Oracle Big Data SQL問合せは、Oracle Databaseプロセスの所有者(つまりoracleユーザー)として、Hadoopクラスタ上で実行されます。したがって、oracleユーザーがデータにアクセスするには、有効なKerberosチケットが必要です。このチケットは、クラスタにアクセスするすべてのOracle Databaseインスタンスで必要となります。また、有効なチケットは、Oracle Big Data Appliance上で実行中の各Big Data SQL Serverプロセスにも必要です。チケットを取得するには、kinit oracleを実行します。

これらの手順を使用すると、オペレーティング・システム・ユーザーは、kinitユーティリティで認証されてから、Oracle SQL Connector for HDFSジョブを発行できます。kinitユーティリティは通常、認証用のKerberosキータブ・ファイルを使用し、パスワードに対話型プロンプトを使用しません。

1. クラスタの各ノードで、次の手順を実行します。

a. oracleユーザーとしてログインします。

b. oracleアカウントでkinitを実行します。

$ kinit oracle

c. Kerberosパスワードを入力します。

2. プライマリ・ノードにログオンし、Oracle Big Data SQLを停止して再起動します。

$ bdacli stop big_data_sql_cluster
$ bdacli start big_data_sql_cluster

3. クラスタへのアクセス権が必要なすべてのOracle Exadata Database Machine上で、次の手順を実行します。

a. Mammothがインストールされているノードから各Oracle Exadata Machine上の同じパスに、Kerberos構成ファイル/etc/krb5.confをコピーします。

b. oracleアカウントでkinitを実行し、Kerberosパスワードを入力します。

c. Oracle Big Data SQLのインストール後スクリプトを再実行します

$ ./bds-exa-install.sh

Kerberosチケットの期限切れの防止

システムではkinitをKerberosチケットの失効前に定期的に実行して、Oracle SQL Connector for HDFSによる透過的な認証を可能にする必要があります。cronまたは類似ユーティリティを使用して、kinitを実行します。たとえば、Kerberosチケットが2週間ごとに期限が切れる場合は、チケットの期限を1週間ごとに延長するようにcronジョブを設定します。

6.3 HiveデータのOracle外部表の作成

Apache Hive内のデータのOracle外部表を簡単に作成できます。Oracle Databaseはメタデータを使用できるため、Hive表に関する情報をデータ・ディクショナリに問い合せることができます。次に、PL/SQL関数を使用して、基本的なSQL CREATE TABLE EXTERNAL ORGANIZATION文を生成できます。実行前に文を変更して、外部表をカスタマイズできます。

6.3.1 Hive表に関する情報の取得

DBMS_HADOOP PL/SQLパッケージには、CREATE_EXTDDL_FOR_HIVEという名前の関数が含まれています。データ・ディクショナリ言語(DDL)を返して、Hive表にアクセスするための外部表を作成します。この関数では、Hive表に関する基本情報を指定する必要があります。

- Hadoopクラスタの名前

- Hiveデータベースの名前

- Hive表の名前

- Hive表がパーティション化されているかどうか

ALL_HIVE_TABLESデータ・ディクショナリ・ビューを問い合せることで、この情報を取得できます。Oracle DatabaseからアクセスできるすべてのHive表に関する情報が表示されます。

この例では、現在のユーザーにデフォルト・データベース内のRATINGS_HIVE_TABLEという名前のパーティション化されていないHive表へのアクセス権があることを示します。JDOEという名前のユーザーは所有者です。

SQL> SELECT cluster_id, database_name, owner, table_name, partitioned FROM all_hive_tables;
CLUSTER_ID   DATABASE_NAME  OWNER    TABLE_NAME         PARTITIONED
------------ -------------- -------- ------------------ --------------
hadoop1      default        jdoe     ratings_hive_table  UN-PARTITIONED

関連項目:

「Hiveの静的データ・ディクショナリ・ビュー」

6.3.2 CREATE_EXTDDL_FOR_HIVE関数の使用

データ・ディクショナリからの情報とともに、DBMS_HADOOPのCREATE_EXTDDL_FOR_HIVE関数を使用できます。この例では、現在のスキーマ内のRATINGS_DB_TABLEのデータベース表名を指定します。関数は、DDLoutという名前のローカル変数でCREATE TABLEコマンドのテキストを返しますが、実行はしません。

DECLARE
DDLout VARCHAR2(4000);
BEGIN
dbms_hadoop.create_extddl_for_hive(
CLUSTER_ID=>'hadoop1',
DB_NAME=>'default',
HIVE_TABLE_NAME=>'ratings_hive_table',
HIVE_PARTITION=>FALSE,
TABLE_NAME=>'ratings_db_table',
PERFORM_DDL=>FALSE,
TEXT_OF_DDL=>DDLout
);
dbms_output.put_line(DDLout);
END;
/

このプロシージャを実行すると、PUT_LINE関数はCREATE TABLEコマンドを表示します。

CREATE TABLE ratings_db_table (
c0 VARCHAR2(4000),
c1 VARCHAR2(4000),
c2 VARCHAR2(4000),
c3 VARCHAR2(4000),
c4 VARCHAR2(4000),
c5 VARCHAR2(4000),
c6 VARCHAR2(4000),
c7 VARCHAR2(4000))
ORGANIZATION EXTERNAL
(TYPE ORACLE_HIVE DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS
(
com.oracle.bigdata.cluster=hadoop1
com.oracle.bigdata.tablename=default.ratings_hive_table
)
) PARALLEL 2 REJECT LIMIT UNLIMITED

この情報をSQLスクリプトで取得し、アクセス・パラメータを使用して、実行前に必要に応じてOracle表名、列名およびデータ型を変更できます。アクセス・パラメータを使用して日付書式マスクを指定することもできます。

ALL_HIVE_COLUMNSビューには、デフォルトの列名およびデータ型の導出方法が表示されます。この例では、Hive列の名前がC0からC7であり、Hive STRINGデータ型がVARCHAR2(4000)にマップされることを示します。

SQL> SELECT table_name, column_name, hive_column_type, oracle_column_type FROM all_hive_columns;

TABLE_NAME            COLUMN_NAME  HIVE_COLUMN_TYPE ORACLE_COLUMN_TYPE
--------------------- ------------ ---------------- ------------------
ratings_hive_table    c0           string           VARCHAR2(4000)
ratings_hive_table    c1           string           VARCHAR2(4000)
ratings_hive_table    c2           string           VARCHAR2(4000)
ratings_hive_table    c3           string           VARCHAR2(4000)
ratings_hive_table    c4           string           VARCHAR2(4000)
ratings_hive_table    c5           string           VARCHAR2(4000)
ratings_hive_table    c6           string           VARCHAR2(4000)
ratings_hive_table    c7           string           VARCHAR2(4000)

8 rows selected.

関連項目:

「DBMS_HADOOP PL/SQLパッケージ」

6.3.3 ORACLE_HIVEのCREATE TABLE文の作成

DBMS_HADOOPを使用するか、CREATE TABLE文を最初から作成するかを選択できます。どちらの場合にも、ORACLE_HIVEのデフォルトの動作を変更するように一部のアクセス・パラメータを設定する必要があります。

6.3.3.1 ORACLE_HIVEのデフォルト設定の使用

次の文は、HiveデータにアクセスするためにORDERという名前の外部表を作成します。

CREATE TABLE order (cust_num    VARCHAR2(10),
order_num   VARCHAR2(20),
description VARCHAR2(100),
order_total NUMBER (8,2))
ORGANIZATION EXTERNAL (TYPE  oracle_hive);

この文ではアクセス・パラメータが設定されていないため、ORACLE_HIVEアクセス・ドライバはデフォルト設定を使用して次の処理を実行します。

- デフォルトのHadoopクラスタに接続します。

- orderという名前のHive表を使用します。Hive表にCUST_NUM、ORDER_NUM、DESCRIPTIONおよびORDER_TOTALという名前のフィールドがない場合、エラーが発生します。

- CUST_NUM値が10バイトを超えるなど、変換エラーが発生した場合は、フィールドの値をNULLに設定します。

6.3.3.2 ORACLE_HIVEのデフォルト設定の上書き

外部表の句のACCESS PARAMETERS句でプロパティを設定できます。これにより、アクセス・ドライバのデフォルトの動作が上書きされます。次の句には、com.oracle.bigdata.overflowアクセス・パラメータが含まれています。前述の例でこの句を使用する場合、エラーをスローするのではなく、100文字を超えるDESCRIPTION列のデータが切り捨てられます。

(TYPE oracle_hive
ACCESS PARAMETERS (
com.oracle.bigdata.overflow={"action:"truncate", "col":"DESCRIPTION""} ))

次の例では、ORACLE_HIVEの使用可能なパラメータの大部分を設定します。

CREATE TABLE order (cust_num VARCHAR2(10),
order_num VARCHAR2(20),
order_date DATE,
item_cnt NUMBER,
description VARCHAR2(100),
order_total (NUMBER(8,2)) ORGANIZATION EXTERNAL
(TYPE oracle_hive
ACCESS PARAMETERS (
com.oracle.bigdata.tablename:  order_db.order_summary
com.oracle.bigdata.colmap:     {"col":"ITEM_CNT", \
"field":"order_line_item_count"}
com.oracle.bigdata.overflow:   {"action":"TRUNCATE", \
"col":"DESCRIPTION"}
com.oracle.bigdata.erroropt:   [{"action":"replace", \
"value":"INVALID_NUM" , \
"col":["CUST_NUM","ORDER_NUM"]} ,\
{"action":"reject", \
"col":"ORDER_TOTAL}
))

これらのパラメータは、ORACLE_HIVEアクセス・ドライバがデータを特定してエラー条件を処理する方法で、次の変更を行います。

- com.oracle.bigdata.tablename: 表名の違いを処理します。ORACLE_HIVEは、ORDER.DBデータベース内のORDER_SUMMARYという名前のHive表を調べます。

- com.oracle.bigdata.colmap: 列名の違いを処理します。HiveのORDER_LINE_ITEM_COUNTフィールドはOracleのITEM_CNT列にマップされます。

- com.oracle.bigdata.overflow: 文字列データを切り捨てます。DESCRIPTION列の100文字を超える値は切り捨てられます。

- com.oracle.bigdata.erroropt: 不正なデータを置換します。CUST_NUMまたはORDER_NUMのデータのエラーにより、値がINVALID_NUMに設定されます。

6.4 Oracle NoSQL DatabaseのOracle外部表の作成

ORACLE_HIVEアクセス・ドライバを使用して、Oracle NoSQL Databaseに格納されているデータにアクセスできます。ただし、KVStoreにアクセスするHive外部表を最初に作成する必要があります。次に、「HiveデータのOracle外部表の作成」に示されているプロセスのように、それに対してOracle Databaseの外部表を作成できます。

この項の内容は次のとおりです。

- Oracle NoSQL DatabaseのHive外部表の作成

- Oracle NoSQLデータのOracle Database表の作成

- 列データ型マッピングについて

- Oracle NoSQL Databaseのデータのアクセス例

6.4.1 Oracle NoSQL DatabaseのHive外部表の作成

Oracle NoSQL Databaseのデータにアクセス可能にするには、Oracle NoSQL表に対してHive外部表を作成します。Oracle Big Data SQLは、HiveによるOracle NoSQL Database表形式の読取りが可能なoracle.kv.hadoop.hive.table.TableStorageHandlerという名前のストレージ・ハンドラを提供します。

Oracle NoSQL表に対するHive外部表のHive CREATE TABLE文の基本的な構文は次のとおりです。

CREATE EXTERNAL TABLE tablename colname coltype[, colname coltype,...]
STORED BY 'oracle.kv.hadoop.hive.table.TableStorageHandler'
TBLPROPERTIES (
"oracle.kv.kvstore" = "database",
"oracle.kv.hosts" = "nosql_node1:port[, nosql_node2:port...]",
"oracle.kv.hadoop.hosts" = "hadoop_node1[,hadoop_node2...]",
"oracle.kv.tableName" = "table_name");

Hive CREATE TABLEパラメータ

tablename

作成されるHive外部表の名前。

この表名はOracle Databaseで発行されるSQL問合せで使用されるため、ユーザーに適した名前を選択してください。Oracle Databaseで作成する外部表の名前は、このHive表の名前と同じである必要があります。

表、列およびフィールド名は、Oracle NoSQL Database、Apache HiveおよびOracle Databaseで大文字と小文字を区別しません。

colname coltype

Hive外部表の列の名前およびデータ型。Oracle NoSQL DatabaseとHive間のデータ型マッピングは、表6-1を参照してください。

Hive CREATE TABLE TBLPROPERTIES句

oracle.kv.kvstore

KVStoreの名前。大文字、小文字および数字のみが名前で有効です。

oracle.kv.hosts

Oracle NoSQL Databaseクラスタのホスト名およびポート番号のカンマ区切りリスト。各文字列では形式hostname:portを使用します。ホストで障害が発生した場合の冗長性を提供するには、複数の名前を入力します。

oracle.kv.hadoop.hosts

Oracle Big Data SQLが有効であるOracle Big Data ApplianceのCDHクラスタのすべてのホスト名のカンマ区切りリスト。

oracle.kv.tableName

このHive外部表のデータを格納するOracle NoSQL Databaseの表の名前。

関連項目:

次のApache Hive LanguageManual DDL

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Create/Drop/TruncateTable

6.4.2 Oracle NoSQLデータのOracle Database表の作成

次の構文を使用して、Hive外部表を介してOracle NoSQLデータにアクセスできるOracle Databaseの外部表を作成します。

CREATE TABLE tablename(colname colType[, colname colType...])
ORGANIZATION EXTERNAL
(TYPE ORACLE_HIVE DEFAULT DIRECTORY directory
ACCESS PARAMETERS
(access parameters)
)
REJECT LIMIT UNLIMITED;

この構文では、列名およびデータ型を識別します。この構文の詳細は、「SQL CREATE TABLE文について」を参照してください。

6.4.3 列データ型マッピングについて

Oracle Big Data SQLがOracle NoSQL Databaseからデータを取得する場合、データが次の別のデータ型に2回変換されます。

- データがHive外部表の列に読み込まれる場合にHiveデータ型。

- データがOracle Database外部表の列に読み込まれる場合にOracleデータ型。

表6-1に、サポートされているOracle NoSQLデータ型およびHiveとOracle Databaseデータ型のマッピングを示します。Oracle Big Data SQLは、Oracle NoSQL複合データ型の配列、マップおよびレコードをサポートしません。

表6-1 Oracle NoSQL Databaseのデータ型マッピング

Oracle NoSQL Databaseデータ型

Apache Hiveデータ型

Oracle Databaseデータ型

String

STRING

VARCHAR2

Boolean

BOOLEAN

NUMBER[1]

Integer

INT

NUMBER

Long

INT

NUMBER

Double

DOUBLE

NUMBER(p,s)

Float

FLOAT

NUMBER(p,s)

6.4.4 Oracle NoSQL Databaseのデータのアクセス例

この例は、Oracle NoSQL Databaseソフトウェアで用意されているサンプル・データを使用します。

- Oracle NoSQL Database表の例の作成

- vehicleTableのHive表の例の作成

- VEHICLESのOracle表の作成

6.4.4.1 Oracle NoSQL Database表の例の作成

次のファイルがexamples/hadoop/tableディレクトリにあることを確認します。

create_vehicle_table.kvs
CountTableRows.java
LoadVehicleTable.java

この例は、bda1node07という名前のOracle Big Data Applianceサーバーで実行され、BDAKVという名前のKVStoreを使用します。

Oracle NoSQL Databaseのサンプルの表を作成して移入するには、次の手順を実行します。

1. Oracle Big Data ApplianceのOracle NoSQL Databaseノードの接続を開きます。

2. vehicleTableという名前の表を作成します。次の例は、loadコマンドを使用して、create_vehicle_table.kvsのコマンドを実行します。

$ cd NOSQL_HOME
$ java -jar lib/kvcli.jar -host bda1node07 -port 5000 \
load -file examples/hadoop/table/create_vehicle_table.kvs

3. LoadVehicleTable.javaをコンパイルします。

$ javac -cp examples:lib/kvclient.jar examples/hadoop/table/LoadVehicleTable.java

4. LoadVehicleTableクラスを実行して、表に移入します。

$ java -cp examples:lib/kvclient.jar hadoop.table.LoadVehicleTable -host bda1node07 -port 5000 -store BDAKV
{"type":"auto","make":"Chrysler","model":"PTCruiser","class":"4WheelDrive","colo
r":"white","price":20743.240234375,"count":30}
{"type":"suv","make":"Ford","model":"Escape","class":"FrontWheelDrive","color":"
.
.
.
10 new records added

vehicleTable表には、次のフィールドが含まれています。

フィールド名

データ型

type

STRING

make

STRING

model

STRING

class

STRING

color

STRING

price

DOUBLE

count

INTEGER

6.4.4.2 vehicleTableのHive表の例の作成

次の例では、BDAKV KVStoreのvehicleTableにアクセスするVEHICLESという名前のHive表を作成します。Oracle Big Data Applianceは、最初の6つのサーバー(bda1node01からbda1node06)のCDHクラスタと次の3つのサーバー(bda1node07からbda1node09)のOracle NoSQL Databaseクラスタで構成されます。

CREATE EXTERNAL TABLE IF NOT EXISTS vehicles
(type STRING,
make STRING,
model STRING,
class STRING,
color STRING,
price DOUBLE,
count INT)
COMMENT 'Accesses data in vehicleTable in the BDAKV KVStore'
STORED BY 'oracle.kv.hadoop.hive.table.TableStorageHandler'
TBLPROPERTIES
("oracle.kv.kvstore" = "BDAKV",
"oracle.kv.hosts" = "bda1node07.example.com:5000,bda1node08.example.com:5000",
"oracle.kv.hadoop.hosts" = "bda1node01.example.com,bda1node02.example.com,bda1node03.example.com,bda1node04.example.com,bda1node05.example.com,bda1node06.example.com",
"oracle.kv.tableName" = "vehicleTable");

DESCRIBEコマンドは、VEHICLES表の列をリストします。

hive> DESCRIBE vehicles;
OK
type                    string                  from deserializer
make                    string                  from deserializer
model                   string                  from deserializer
class                   string                  from deserializer
color                   string                  from deserializer
price                   double                  from deserializer
count                   int                     from deserializer

Hive VEHICLES表に対する問合せは、Oracle NoSQL vehicleTable表のデータを返します。

hive> SELECT make, model, class
FROM vehicletable
WHERE type='truck' AND color='red'
ORDER BY make, model;
Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 1
.
.
.
Chrysler       Ram1500         RearWheelDrive
Chrysler       Ram2500         FrontWheelDrive
Ford           F150            FrontWheelDrive
Ford           F250            RearWheelDrive
Ford           F250            AllWheelDrive
Ford           F350            RearWheelDrive
GM             Sierra          AllWheelDrive
GM             Silverado1500   RearWheelDrive
GM             Silverado1500   AllWheelDrive

6.4.4.3 VEHICLESのOracle表の作成

Hive表を作成した後、メタデータをOracle Database静的データ・ディクショナリ・ビューで使用できます。次のSQL SELECT文は、前のトピックで作成されたHive表の情報を返します。

SQL> SELECT table_name, column_name, hive_column_type
FROM all_hive_columns
WHERE table_name='vehicles';
TABLE_NAME      COLUMN_NAME  HIVE_COLUMN_TYPE
--------------- ------------ ----------------
vehicles        type         string
vehicles        make         string
vehicles        model        string
vehicles        class        string
vehicles        color        string
vehicles        price        double
vehicles        count        int

次のSQL CREATE TABLE文は、ORACLE_HIVEアクセス・ドライバを使用して、Hive VEHICLES表に対するVEHICLESという名前の外部表を生成します。Oracle Databaseの表の名前は、Hiveの表の名前と同じである必要があります。ただし、Oracle NoSQL DatabaseおよびOracle Databaseは、大文字と小文字を区別しません。

CREATE TABLE vehicles
(type  VARCHAR2(10), make  VARCHAR2(12), model VARCHAR2(20),
class VARCHAR2(40), color VARCHAR2(20), price NUMBER(8,2),
count NUMBER)
ORGANIZATION EXTERNAL
(TYPE ORACLE_HIVE DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS
(com.oracle.bigdata.debug=true com.oracle.bigdata.log.opt=normal))
REJECT LIMIT UNLIMITED;

このSQL SELECT文は、Oracle NoSQL DatabaseのvehicleTableから赤いトラックのすべての行を取得します。

SQL> SELECT make, model, class
FROM vehicles
WHERE type='truck' AND color='red'
ORDER BY make, model;
MAKE         MODEL                CLASS
------------ -------------------- ---------------------
Chrysler     Ram1500              RearWheelDrive
Chrysler     Ram2500              FrontWheelDrive
Ford         F150                 FrontWheelDrive
Ford         F250                 AllWheelDrive
Ford         F250                 RearWheelDrive
Ford         F350                 RearWheelDrive
GM           Sierra               AllWheelDrive
GM           Silverado1500        RearWheelDrive
GM           Silverado1500        4WheelDrive
GM           Silverado1500        AllWheelDrive

6.5 Apache HBaseのOracle外部表の作成

ORACLE_HIVEアクセス・ドライバを使用して、Apache HBaseに格納されているデータにアクセスすることもできます。ただし、最初にHBase表にアクセスするHive外部表を作成する必要があります。次に、それに対してOracle Databaseの外部表を作成できます。基本的な手順は、「Oracle NoSQL DatabaseのOracle外部表の作成」で説明されているものと同じです。

6.5.1 HBaseのHive外部表の作成

HBase表のデータにアクセス可能にするには、それに対してHive外部表を作成します。Apacheは、ストレージ・ハンドラおよびHiveによるHBase表形式の読取りが可能なSerDeを提供します。

HBase表に対する外部表のHive CREATE TABLE文の基本的な構文は、次のとおりです。

CREATE EXTERNAL TABLE tablename colname coltype[, colname coltype,...]
ROW FORMAT
SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe'
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES (
'serialization.format'='1',
'hbase.columns.mapping'=':key,value:key,value:

関連項目:

- 次のApache Hive LanguageManual DDL
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Create/Drop/TruncateTable

- 次のHive HBaseIntegration
https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration#HBaseIntegration-StorageHandlers

- 次のHive APIリファレンスのClass HBaseSerDe
http://hive.apache.org/javadocs/r0.13.1/api/hbase-handler/index.html

6.5.2 HBaseのOracle Database表の作成

次の構文を使用して、Hive外部表を介してHBaseデータにアクセスできるOracle Databaseの外部表を作成します。

CREATE TABLE tablename(colname colType[, colname colType...])
ORGANIZATION EXTERNAL
(TYPE ORACLE_HIVE DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS
(access parameters)
)
REJECT LIMIT UNLIMITED;

この構文では、列名およびデータ型を識別します。アクセス・パラメータを指定するには、「SQL CREATE TABLE文について」を参照してください。

6.6 HDFSファイルのOracle外部表の作成

ORACLE_HDFSアクセス・ドライバを使用すると、HDFSに格納されている様々なタイプのデータにアクセスできますが、HDFSにはHiveメタデータはありません。テキスト・データのレコード形式を定義することも、特定のデータ形式のSerDeを指定することもできます。

HDFSファイルの外部表を手動で作成し、データを特定するためにアクセス・ドライバが必要とするすべての情報を提供して、レコードおよびフィールドを解析する必要があります。CREATE TABLE ORGANIZATION EXTERNAL文のいくつかの例を次に示します。

6.6.1 デフォルトのアクセス・パラメータとORACLE_HDFSの使用

次の文は、ORDERという名前の文を作成して、HDFSの/usr/cust/summaryディレクトリに格納されているすべてのファイル内のデータにアクセスします。

CREATE TABLE ORDER (cust_num VARCHAR2(10),
order_num VARCHAR2(20),
order_total (NUMBER 8,2))
ORGANIZATION EXTERNAL (TYPE oracle_hdfs)
LOCATION ("hdfs:/usr/cust/summary/*");

この文ではアクセス・パラメータが設定されていないため、ORACLE_HDFSアクセス・ドライバはデフォルト設定を使用して次の処理を実行します。

- デフォルトのHadoopクラスタに接続します。

- ファイルをデリミタ付きテキスト、フィールドをSTRINGタイプとして読み取ります。

- HDFSファイル内のフィールドの数は、列の数と一致すると仮定します(この例では3)。

- CUST_NUMデータが第1フィールド、ORDER_NUMデータが第2フィールド、ORDER_TOTALデータが第3フィールドになるように、フィールドは列と同じ順序であることを前提とします。

- 値によってデータ変換エラーが発生するレコードを拒否します。CUST_NUMの値が10文字を超える場合、ORDER_NUMの値が20文字を超える場合、またはORDER_TOTALの値がNUMBERに変換できない場合です。

6.6.2 ORACLE_HDFSのデフォルト設定の上書き

ORACLE_HDFSでも、ORACLE_HIVEと同じアクセス・パラメータの多くを使用できます。

6.6.2.1 デリミタ付きテキスト・ファイルへのアクセス

次の例は、「ORACLE_HIVEのデフォルト設定の上書き」に示した例に相当します。外部表は、HDFSに格納されているデリミタ付きテキスト・ファイルにアクセスします。

CREATE TABLE order (cust_num VARCHAR2(10),
order_num VARCHAR2(20),
order_date DATE,
item_cnt NUMBER,
description VARCHAR2(100),
order_total (NUMBER8,2)) ORGANIZATION EXTERNAL
(TYPE oracle_hdfs
ACCESS PARAMETERS (
com.oracle.bigdata.colmap:     {"col":"item_cnt", \
"field":"order_line_item_count"}
com.oracle.bigdata.overflow:   {"action":"TRUNCATE", \
"col":"DESCRIPTION"}
com.oracle.bigdata.erroropt:   [{"action":"replace", \
"value":"INVALID NUM", \
"col":["CUST_NUM","ORDER_NUM"]} , \
{"action":"reject", \
"col":"ORDER_TOTAL}]
)
LOCATION ("hdfs:/usr/cust/summary/*"));

これらのパラメータは、ORACLE_HDFSアクセス・ドライバがデータを特定してエラー条件を処理する方法で、次の変更を行います。

- com.oracle.bigdata.colmap: 列名の違いを処理します。HDFSファイル内のORDER_LINE_ITEM_COUNTは、外部表のITEM_CNT列と一致します。

- com.oracle.bigdata.overflow: 文字列データを切り捨てます。DESCRIPTION列の100文字を超える値は切り捨てられます。

- com.oracle.bigdata.erroropt: 不正なデータを置換します。CUST_NUMまたはORDER_NUMのデータのエラーにより、値がINVALID_NUMに設定されます。

6.6.2.2 Avroコンテナ・ファイルへのアクセス

次の例では、SerDeを使用してAvroコンテナ・ファイルにアクセスします。

CREATE TABLE order (cust_num VARCHAR2(10),
order_num VARCHAR2(20),
order_date DATE,
item_cnt NUMBER,
description VARCHAR2(100),
order_total (NUMBER8,2)) ORGANIZATION EXTERNAL
(TYPE oracle_hdfs
ACCESS PARAMETERS (
com.oracle.bigdata.rowformat: \
SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
com.oracle.bigdata.fileformat: \
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'\
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
com.oracle.bigdata.colmap: {  "col":"item_cnt", \
"field":"order_line_item_count"}
com.oracle.bigdata.overflow: {"action":"TRUNCATE", \
"col":"DESCRIPTION"}
LOCATION ("hdfs:/usr/cust/summary/*"));

アクセス・パラメータは、次の情報をORACLE_HDFSアクセス・ドライバうに提供します。

- com.oracle.bigdata.rowformat: アクセス・ドライバがレコードおよびフィールドを解析するために使用する必要があるSerDeを識別します。ファイルはデリミタ付きテキスト形式ではありません。

- com.oracle.bigdata.fileformat: レコードを抽出し、それらを目的の形式で出力できるJavaクラスを識別します。

- com.oracle.bigdata.colmap: 列名の違いを処理します。ORACLE_HDFSは、外部表のITEM_CNT列を持つHDFSファイル内のORDER_LINE_ITEM_COUNTと一致します。

- com.oracle.bigdata.overflow: 文字列データを切り捨てます。DESCRIPTION列の100文字を超える値は切り捨てられます。

6.7 SQL CREATE TABLE文について

SQLのCREATE TABLE文には、外部表の作成に特化した句があります。この句に指定する情報により、アクセス・ドライバは外部ソースからデータを読み取り、そのデータを外部表用に準備できます。

6.7.1 基本的な構文

次に外部表のCREATE TABLE文の基本的な構文を示します。

CREATE TABLE table_name (column_name datatype,
column_name datatype[,...])
ORGANIZATION EXTERNAL (external_table_clause);

他の表と同様に、列名およびデータ型を指定します。ORGANIZATION EXTERNALは、表を外部表として識別します。

external_table_clauseはアクセス・ドライバを識別し、データのロードに必要な情報を提供します。「外部表の句について」を参照してください。

6.7.2 外部表の句について

CREATE TABLE ORGANIZATION EXTERNALは、引数としてexternal_table_clauseを取ります。次の従属句があります。

- TYPE句

- DEFAULT DIRECTORY句

- LOCATION句

- REJECT LIMIT句

- ORACLE_HIVEアクセス・パラメータ

関連項目:

external_table_clauseの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

6.7.2.1 TYPE句

TYPE句はアクセス・ドライバを識別します。アクセス・ドライバのタイプによって、外部表定義の他の部分がどのように解釈されるかが決まります。

Oracle Big Data SQLに次の値のいずれかを指定します。

- ORACLE_HDFS: HDFSディレクトリ内のファイルにアクセスします。

- ORACLE_HIVE: Hive表にアクセスします。

注意:

ORACLE_DATAPUMPおよびORACLE_LOADERアクセス・ドライバは、Oracle Big Data SQLには関連付けられません。

6.7.2.2 DEFAULT DIRECTORY句

DEFAULT DIRECTORY句はOracle Databaseディレクトリ・オブジェクトを識別します。ディレクトリ・オブジェクトは、外部表が読取りおよび書込みを行うファイルを含むオペレーティング・システム・ディレクトリを識別します。

ORACLE_HDFSおよびORACLE_HIVEはデフォルト・ディレクトリのみを使用して、Oracle Databaseシステムにログ・ファイルを書き込みます。

6.7.2.3 LOCATION句

LOCATION句はデータ・ソースを識別します。

6.7.2.4 ORACLE_HDFS LOCATION句

ORACLE_HDFSのLOCATION句には、ファイルの場所のコンマ区切りのリストが含まれます。ファイルは、デフォルト・クラスタ上のHDFSファイル・システムに存在する必要があります。

場所は次のいずれかになります。

- 完全修飾HDFS名(/user/hive/warehouse/hive_seed/hive_typesなど)。ORACLE_HDFSはディレクトリ内のすべてのファイルを使用します。

- 完全修飾HDFSファイル名(/user/hive/warehouse/hive_seed/hive_types/hive_types.csvなど)。

- HDFSファイルまたはファイルのセットのURL (hdfs:/user/hive/warehouse/hive_seed/hive_types/*など)。ディレクトリ名のみは無効です。

ファイル名には、表6-2に説明されているパターン一致文字を含めることができます。

表6-2 パターン一致文字

文字

説明

?

任意の1文字に一致します。

*

0文字以上の文字に一致します。

[abc]

セット{a, b, c}内の1文字に一致します。

[a-b]

範囲{a...b}内の1文字に一致します。文字は、b以下である必要があります。

[^a]

文字セットまたは範囲{a}外の1文字に一致します。カレット(^)は、左カッコの直後に付ける必要があります(スペースなし)。

\c

cの特別な意味を無効にします。バックスラッシュ(\)は、エスケープ文字です。

{ab\,cd}

セット{ab, cd}内の文字列に一致します。エスケープ文字(\)は、パス区切りとしてのコンマの意味を無効にします。

{ab\,c{de\,fh}

セット{ab, cde, cfh}内の文字列に一致します。エスケープ文字(\)は、パス区切りとしてのコンマの意味を無効にします。

6.7.2.5 ORACLE_HIVE LOCATION句

ORACLE_HIVEにLOCATION句を指定しないでください。指定すると、エラーが発生します。データはHiveに格納され、アクセス・パラメータおよびメタデータ・ストアは必要な情報を提供します。

6.7.2.6 REJECT LIMIT句

Oracle Databaseが問合せを停止し、エラーを返すまで、外部表の問合せ中に許可される変換エラーの数を制限します。

行が拒否される処理エラーは、制限に対してカウントされます。拒否制限は、各並列問合せ(PQ)プロセスに個別に適用されます。すべてのPQプロセスについて、拒否されたすべての行の合計ではありません。

6.7.2.7 ACCESS PARAMETERS句

ACCESS PARAMETERS句は、アクセス・ドライバがデータを外部表に正しくロードするために必要な情報を提供します。「CREATE TABLE ACCESS PARAMETERS句」を参照してください。

6.8 データ型変換について

アクセス・ドライバは、データを外部表にロードする際に、Hiveデータをターゲット列のデータ型に変換できることを確認します。互換性がない場合、アクセス・ドライバはエラーを返します。それ以外の場合は、適切なデータ変換を行います。

通常、Hiveは他の場所(HDFSファイル内など)に格納されているデータに表抽象化レイヤーを提供します。Hiveはシリアライザ/デシリアライザ(SerDe)を使用して、必要に応じてデータを格納されている形式からHiveデータ型に変換します。その後、アクセス・ドライバはHiveデータ型からOracleデータ型にデータを変換します。たとえば、テキスト・ファイルに対するHive表にBIGINT列がある場合、SerDeはデータをテキストからBIGINTに変換します。その後、アクセス・ドライバはデータをBIGINT (Hiveデータ型)からNUMBER (Oracleデータ型)に変換します。

2つではなく1つのデータ型変換を実行する場合、パフォーマンスが向上します。したがって、HDFSファイル内のフィールドのデータ型は、ディスク上に実際に格納されているデータを示す必要があります。たとえば、JSONはクリア・テキスト形式であるため、JSONファイル内のデータはすべてテキストです。フィールドのHiveタイプがDATEの場合、SerDeはデータを文字列(データ・ファイル内)からHive日付に変換します。その後、アクセス・ドライバはデータをHive日付からOracle日付に変換します。ただし、フィールドのHiveタイプが文字列の場合、SerDeは変換を実行せず、アクセス・ドライバはデータを文字列からOracle日付に変換します。2番目の例では、外部表に対する問合せはより速くなります。これは、アクセス・ドライバがデータ変換のみを実行するためです。

表6-3は、データを外部表にロードするときにORACLE_HIVEが実行できるデータ型変換を示します。

表6-3 サポートされているHiveデータ型からOracleデータ型への変換

Hiveデータ型

VARCHAR2、CHAR、NCHAR2、NCHAR、CLOB

NUMBER、FLOAT、BINARY_NUMBER、BINARY_FLOAT

BLOB

RAW

DATE、TIMESTAMP、TIMESTAMP WITH TZ、TIMESTAMP WITH LOCAL TZ

INTERVAL YEAR TO MONTH、INTERVAL DAY TO SECOND

INT

SMALLINT

TINYINT

BIGINT

はい

はい

はい

はい

いいえ

いいえ

DOUBLE

FLOAT

はい

はい

はい

はい

いいえ

いいえ

DECIMAL

はい

はい

いいえ

いいえ

いいえ

いいえ

BOOLEAN

はい[2]

はい

はい[3]

はい

いいえ

いいえ

BINARY

はい

いいえ

はい

はい

いいえ

いいえ

STRING

はい

はい

はい

はい

はい

はい

TIMESTAMP

はい

いいえ

いいえ

いいえ

はい

いいえ

STRUCT

ARRAY

UNIONTYPE

MAP

はい

いいえ

いいえ

いいえ

いいえ

いいえ

6.9 外部表の問合せ

ユーザーは、他の表を問い合せる場合と同じように、SQL SELECT文を使用して外部表を問い合せることができます。

6.9.1 ユーザー・アクセス権の付与

Hadoopクラスタ上のデータを問い合せるユーザーには、外部表、およびクラスタ・ディレクトリを指すデータベース・ディレクトリ・オブジェクトへのOracle Database内のREADアクセス権が必要です。「クラスタ・ディレクトリについて」を参照してください。

6.9.2 エラー処理の概要

デフォルトでは、列の値を計算しているときにエラーが発生した場合、問合せはデータを返しません。ほとんどのエラー(特に、列の値を計算中にスローされたエラー)の後も処理は続行します。

エラーの処理方法を決定するには、com.oracle.bigdata.erroroptパラメータを使用します。

6.9.3 ログ・ファイルについて

次のアクセス・パラメータを使用すると、ログ・ファイルをカスタマイズできます。

- com.oracle.bigdata.log.exec

- com.oracle.bigdata.log.qc

6.10 Oracle Exadata Database Machine上のOracle Big Data SQLについて

Oracle Big Data SQLは、Oracle Exadata Database Machineに接続されたOracle Big Data Applianceがあるシステム上で排他的に実行されます。Oracle Exadata Storage Server Softwareは、構成可能な数のOracle Big Data Applianceサーバー上にデプロイされます。これらのサーバーは、CDHノードとOracle Exadata Storage Serverの機能を結合します。

Mammothユーティリティは、Oracle Big Data ApplianceとOracle Exadata Database Machineの両方にBig Data SQLソフトウェアをインストールします。この項の情報では、MammothがOracle Databaseシステムに対して行う変更について説明します。

この項の内容は次のとおりです。

- Big Data SQLエージェントの起動および停止

- 共通ディレクトリについて

- 一般的な構成プロパティ

- クラスタ・ディレクトリについて

注意:

Oracle SQL Connector for HDFSは、Oracle Exadata Database Machineに接続されていないラックを含む、すべてのOracle Big Data ApplianceラックにHadoopデータへのアクセスを提供します。ただし、Oracle Big Data SQLのパフォーマンス上の利点はなく、Oracle Big Data Applianceライセンスにも含まれません。『Oracle Big Data Connectorsユーザーズ・ガイド』を参照してください。

6.10.1 Big Data SQLエージェントの起動および停止

データベース上のBig Data SQLエージェントはクラスタウェアにより管理されます。Big Data SQLのインストール中にエージェントがクラスタウェアに登録され、データベースを自動的に開始および停止します。ステータスを確認するには、GridホームまたはClusterwareホームから実行します。

mtactl check bds_databasename_clustername

6.10.2 共通ディレクトリについて

共通ディレクトリには、すべてのHadoopクラスタに共通の構成情報が含まれています。このディレクトリは、Oracle DatabaseシステムのOracleホーム・ディレクトリの下にあります。oracleファイル・システムのユーザー(またはOracle Databaseインスタンスを所有するユーザー)は、共通ディレクトリを所有します。ORACLE_BIGDATA_CONFIGという名前のデータベース・ディレクトリは共通ディレクトリを指します。

6.10.3 一般的な構成プロパティ

Mammothインストール・プロセスでは、次のファイルが作成され、共通ディレクトリに格納されます。

- bigdata.properties

- bigdata-log4j.properties

Oracle DBAは、必要に応じてこれらの構成ファイルを編集できます。

6.10.3.1 bigdata.properties

共通ディレクトリ内のbigdata.propertiesファイルには、HDFS内のデータにアクセスするために必要なJavaクラス・パスおよびネイティブ・ライブラリ・パスを定義するプロパティ/値のペアが含まれています。

次のプロパティを設定する必要があります。

- bigdata.cluster.default

- java.classpath.hadoop

- java.classpath.hive

- java.classpath.oracle

次のリストで、bigdata.propertiesで許可されているすべてのプロパティを説明します。

bigdata.properties

bigdata.cluster.default

デフォルトのHadoopクラスタの名前。アクセス・パラメータがクラスタを指定しない場合、アクセス・ドライバはこの名前を使用します。必須。

デフォルトのクラスタ名を変更すると、明示的なクラスタ名なしで以前に作成された外部表が使用できなくなる可能性があります。

bigdata.cluster.list

Hadoopクラスタ名のコンマ区切りのリスト。オプション。

java.classpath.hadoop

Hadoopクラス・パス。必須。

java.classpath.hive

Hiveクラス・パス。必須。

java.classpath.oracle

Oracle JXAD Java JARファイルへのパス。必須。

java.classpath.user

ユーザーJARファイルへのパス。オプション。

java.libjvm.file

JVM共有ライブラリ(libjvm.soなど)への完全なファイル・パス。必須。

java.options

JVMに渡されるオプションのコンマ区切りのリスト。オプション。

この例では、最大ヒープ・サイズを2GBに設定し、Java Native Interface (JNI)呼出しの詳細なロギングを設定します。

Xmx2048m,-verbose=jni

LD_LIBRARY_PATH

Hadoopネイティブ・ライブラリを検索するためのディレクトリ・パスのコロン区切りの(:)リスト。推奨。

このオプションを設定した場合は、java.optionsでjava.libraryパスを設定しないでください。

例6-3は、サンプルのbigdata.propertiesファイルを示します。

例6-3 サンプルのbigdata.propertiesファイル

# bigdata.properties
#
# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
#
#    NAME
#      bigdata.properties - Big Data Properties File
#
#    DESCRIPTION
#      Properties file containing parameters for allowing access to Big Data
#      Fixed value properties can be added here
#

java.libjvm.file=$ORACLE_HOME/jdk/jre/lib/amd64/server/libjvm.so
java.classpath.oracle=$ORACLE_HOME/hadoopcore/jlib/*:$ORACLE_HOME/hadoop/jlib/hver-2/*:$ORACLE_HOME/dbjava/lib/*
java.classpath.hadoop=$HADOOP_HOME/*:$HADOOP_HOME/lib/*
java.classpath.hive=$HIVE_HOME/lib/*
LD_LIBRARY_PATH=$ORACLE_HOME/jdk/jre/lib
bigdata.cluster.default=hadoop_cl_1

6.10.3.2 bigdata-log4j.properties

共通ディレクトリのbigdata-log4j.propertiesファイルは、外部表に対する問合せのロギング動作をJavaコードで定義します。このファイルでは、すべてのlog4jプロパティを使用できます。

例6-4は、サンプルのbigdata-log4j.propertiesファイルと関連するlog4jプロパティを示します。

例6-4 サンプルのbigdata-log4j.propertiesファイル

# bigdata-log4j.properties
#
# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
#
#    NAME
#      bigdata-log4j.properties - Big Data Logging Properties File
#
#    DESCRIPTION
#      Properties file containing logging parameters for Big Data
#      Fixed value properties can be added here

bigsql.rootlogger=INFO,console
log4j.rootlogger=DEBUG, file
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n
log4j.logger.oracle.hadoop.sql=ALL, file

bigsql.log.dir=.
bigsql.log.file=bigsql.log
log4j.appender.file.File=$ORACLE_HOME/bigdatalogs/bigdata-log4j.log

関連項目:

Apacheロギング・サービスのドキュメントの場所:

http://logging.apache.org/log4j/1.2/manual.html

6.10.4 クラスタ・ディレクトリについて

クラスタ・ディレクトリには、CDHクラスタの構成情報が含まれています。Oracle DatabaseがOracle Big Data SQLを使用してアクセスする各クラスタにクラスタ・ディレクトリがあります。このディレクトリは、Oracle Databaseシステムの共通ディレクトリの下にあります。たとえば、bda1_cl_1という名前のクラスタには、共通ディレクトリに同じ名前(bda1_cl_1)のディレクトリがあります。

クラスタ・ディレクトリには、次のようなクラスタにアクセスするためのCDHクライアント構成ファイルが含まれています。

- core-site.xml

- hdfs-site.xml

- hive-site.xml

- mapred-site.xml (オプション)

- log4jプロパティ・ファイル(hive-log4j.propertiesなど)

データベース・ディレクトリ・オブジェクトはクラスタ・ディレクトリを指します。クラスタ内のデータにアクセスするユーザーには、ディレクトリ・オブジェクトの読取りアクセス権が必要です。

関連項目:

Hadoopクライアントの詳細は、「CDHへのリモート・クライアント・アクセスの提供」を参照してください。

6.10.5 権限について

oracleオペレーティング・システム・ユーザー(またはOracle Databaseインストール・ディレクトリを所有するユーザー)には次の設定が必要です。

- ログ・ディレクトリを指すデータベース・ディレクトリへのREAD/WRITEアクセス権。これらの権限を使用すると、アクセス・ドライバはログ・ファイルを作成し、ユーザーはそれを読み取ることができます。

- Oracle Big Data Applianceで定義されている、該当するoracleオペレーティング・システム・ユーザー。ソース・データが格納されているHDFSディレクトリへのオペレーティング・システム内の読取りアクセス権を持ちます。

[1]
falseの場合には0、trueの場合には1

[2]
FALSEは文字列FALSEにマップされ、TRUEは文字列TRUEにマップされます。

3
FALSEは0にマップされ、TRUEは1にマップされます。

7 Oracle Big Data SQLリファレンス

この章には、Oracle Big Data SQLのリファレンス情報が含まれています。

- DBMS_HADOOP PL/SQLパッケージ

- CREATE TABLE ACCESS PARAMETERS句

- Hiveの静的データ・ディクショナリ・ビュー

7.1 DBMS_HADOOP PL/SQLパッケージ

DBMS_HADOOPパッケージには、Hive表のCREATE EXTERNAL TABLE DDLを生成するための関数が含まれています。

- CREATE_EXTDDL_FOR_HIVE

7.1.1 CREATE_EXTDDL_FOR_HIVE

この関数は、Hive表のSQL CREATE TABLE ORGANIZATION EXTERNAL文を返します。ORACLE_HIVEアクセス・ドライバを使用します。

構文

DBMS_HADOOP.CREATE_EXTDDL_FOR_HIVE (
cluster_id        IN    VARCHAR2,
db_name           IN    VARCHAR2   := NULL,
hive_table_name   IN    VARCHAR2,
hive_partition    IN    BOOLEAN,
table_name        IN    VARCHAR2   := NULL,
perform_ddl       IN    BOOLEAN    DEFAULT FALSE,
text_of_ddl       OUT   VARCHAR2
);

パラメータ

表7-1 CREATE_EXTDDL_FOR_HIVE関数のパラメータ

パラメータ

説明

cluster_id

HiveメタストアがあるHadoopクラスタ

db_name

Hiveデータベースの名前

hive_table_name

Hive表の名前

hive_partition

表がパーティション化されている(TRUE)かされていない(FALSE)か

table_name

作成されるOracle外部表の名前。すでに存在する名前にはできません。

perform_ddl

生成されたCREATE TABLE文を実行する(TRUE)か、コマンドのテキストを返すのみ(FALSE)か。

コマンドを確認または変更する場合は、コマンドを自動的に実行しないでください。

text_of_ddl

生成されたCREATE TABLE ORGANIZATION EXTERNAL文。

使用上の注意

Oracle DatabaseシステムはOracle Big Data SQL用に構成する必要があります。「Oracle Exadata Database Machine上のOracle Big Data SQLについて」を参照してください。

データ型変換は、Hiveデータ型とOracleデータ型の間のデフォルトのマッピングに基づいています。「データ型変換について」を参照してください。

7.1.1.1 例

次の問合せは、デフォルトのHiveデータベースからmy_hive_tableのCREATE EXTERNAL TABLE DDLを返します。Hiveへの接続は、ORACLE_BIGDATA_CONFIGディレクトリ内の構成ファイルを使用して確立されます。これは、HADOOP1クラスタの場所を識別します。

DECLARE
DDLtxt VARCHAR2(4000);
BEGIN
dbms_hadoop.create_extddl_for_hive(
CLUSTER_ID=>'hadoop1',
DB_NAME=>'default',
HIVE_TABLE_NAME=>'my_hive_table',
HIVE_PARTITION=>FALSE,
TABLE_NAME=>'my_xt_oracle',
PERFORM_DDL=>FALSE,
TEXT_OF_DDL=>DDLtxt
);
dbms_output.put_line(DDLtxt);
END;
/

問合せは、次のSQLコマンドのテキストを返します。

CREATE TABLE my_xt_oracle
(
c0 VARCHAR2(4000),
c1 VARCHAR2(4000),
c2 VARCHAR2(4000),
c3 VARCHAR2(4000))
ORGANIZATION EXTERNAL
(TYPE ORACLE_HIVE
DEFAULT DIRECTORY DEFAULT_DIR
ACCESS PARAMETERS (
com.oracle.bigdata.cluster=hadoop1
com.oracle.bigdata.tablename=default.my_hive_table
)
)
PARALLEL 2 REJECT LIMIT UNLIMITED

7.2 CREATE TABLE ACCESS PARAMETERS句

この項では、ORACLE_HDFSまたはORACLE_HIVEアクセス・ドライバを使用する外部表を作成するときに使用するプロパティについて説明します。CREATE TABLE ORGANIZATION EXTERNAL文で、ACCESS PARAMETERSのopaque_format_spec句にパラメータを指定します。

この項の内容は次のとおりです。

- プロパティを指定するための構文ルール

- ORACLE_HDFSアクセス・パラメータ

- ORACLE_HIVEアクセス・パラメータ

- プロパティのアルファベット順リスト

7.2.1 プロパティを指定するための構文ルール

プロパティは、SQLのCREATE TABLE ACCESS PARAMETERS句および構成ファイルのキーワード/値のペアを使用して設定されます。構文は次のルールに従う必要があります。

- 各キーワード/値のペアの形式は、キーワード、コロンまたは等号および値です。次に有効なキーワード/値のペアを示します。

keyword=value
keyword:value

値は、セパレータの後の最初の非空白文字から行末まですべてです。セパレータと値の間の空白は無視されます。値の後の空白は保持されます。

- プロパティ定義は1行または複数行になります。

- 行の終了文字は、行フィード、キャリッジ・リターンまたはキャリッジ・リターンの後に続く行フィードです。

- プロパティ定義が複数行にまたがる場合は、行の終了文字の前にバックスラッシュ(エスケープ文字)を付けますが、最終行には付けません。この例では、Keyword1プロパティの値はValue part 1 Value part 2 Value part 3です。

Keyword1=  Value part 1 \
Value part 2 \
Value part 3

- 先頭の空白の各物理行を削除して行を連結することで、論理行を作成できます。パーサーは、論理行からプロパティ名および値を抽出します。

- 文字の前に代入を示すバックスラッシュ(エスケープ文字)を付けることで、プロパティ名またはプロパティ値に特殊文字を埋め込むことができます。表7-2に特殊文字を示します。

表7-2 プロパティの特殊文字

エスケープ・シーケンス

文字

\b

バックスペース(\u0008)

\t

水平タブ(\u0009)

\n

行フィード(\u000a)

\f

フォーム・フィード(\u000c)

\r

キャリッジ・リターン(\u000d)

\"

二重引用符(\u0022)

\'

一重引用符(\u0027)

\\

バックスラッシュ(\u005c)

複数のバックスラッシュが行末にある場合、パーサーは奇数のバックスラッシュに対してのみ値を次の行に継続します。

\uxxxx

2バイト、ビッグ・エンディアン、Unicodeコード・ポイント。

1文字に2コード・ポイント(4バイト)が必要な場合、パーサーは2番目のコード・ポイントに\uを要求します。

7.2.2 ORACLE_HDFSアクセス・パラメータ

ORACLE_HDFSアクセス・ドライバのアクセス・パラメータは、HDFS内のデータを特定するのに必要なメタデータを提供し、Hive表を作成します。

7.2.2.1 ORACLE_HDFSのデフォルトのパラメータ設定

CREATE TABLE文からすべてのアクセス・パラメータを省略した場合、ORACLE_HDFSは次のデフォルト値を使用します。

com.oracle.bigdata.rowformat=DELIMITED
com.oracle.bigdata.fileformat=TEXTFILE
com.oracle.bigdata.overflow={"action":"truncate"}
com.oracle.bigdata.erroropt={"action":"setnull"}

7.2.2.2 ORACLE_HDFSのオプションのパラメータ設定

ORACLE_HDFSは、次のオプションのcom.oracle.bigdataパラメータをサポートしています。このパラメータは、opaque_format_spec句で指定できます。

- com.oracle.bigdata.colmap

- com.oracle.bigdata.erroropt

- com.oracle.bigdata.fields

- com.oracle.bigdata.fileformat

- com.oracle.bigdata.log.exec

- com.oracle.bigdata.log.qc

- com.oracle.bigdata.overflow

- com.oracle.bigdata.rowformat

例7-1に、複数のアクセス・パラメータが設定されているCREATE TABLE文を示します。

例7-1 ORACLE_HDFSの複数のアクセス・パラメータの設定

CREATE TABLE ORDER (CUST_NUM VARCHAR2(10),
ORDER_NUM VARCHAR2(20),
ORDER_DATE DATE,
ITEM_CNT NUMBER,
DESCRIPTION VARCHAR2(100),
ORDER_TOTAL (NUMBER8,2)) ORGANIZATION EXTERNAL
(TYPE ORACLE_HDFS
ACCESS PARAMETERS (
com.oracle.bigdata.fields: (CUST_NUM,              \
ORDER_NUM,             \
ORDER_DATE,            \
ORDER_LINE_ITEM_COUNT, \
DESCRIPTION,           \
ORDER_TOTAL)
com.oracle.bigdata.colMap:     {"col":"item_cnt", \
"field":"order_line_item_count"}
com.oracle.bigdata.overflow:   {"action":"TRUNCATE", \
"col":"DESCRIPTION"}
com.oracle.bigdata.errorOpt:  [{"action":"replace", \
"value":"INVALID NUM", \
"col":["CUST_NUM","ORDER_NUM"]} , \
{"action":"reject", \
"col":"ORDER_TOTAL}]
)
LOCATION ("hdfs:/usr/cust/summary/*"));

7.2.3 ORACLE_HIVEアクセス・パラメータ

ORACLE_HIVEは、Hiveカタログから外部データ・ソースに関するメタデータを取得します。通常、外部データ表の列へのHiveデータのデフォルト・マッピングは適切です。ただし、状況によっては、特殊なパラメータ設定が必要です。独自の理由でデフォルト値を上書きする場合もあります。

7.2.3.1 ORACLE_HIVEのデフォルトのパラメータ設定

CREATE TABLE文からすべてのアクセス・パラメータを省略した場合、ORACLE_HIVEは次のデフォルト値を使用します。

com.oracle.bigdata.tablename=name of external table
com.oracle.bigdata.overflow={"action":"truncate"}
com.oracle.bigdata.erroropt={"action":"setnull"}

7.2.3.2 ORACLE_HIVEのオプションのパラメータ値

ORACLE_HIVEは、次のオプションのcom.oracle.bigdataパラメータをサポートしています。このパラメータは、opaque_format_spec句で指定できます。

- com.oracle.bigdata.colmap

- com.oracle.bigdata.erroropt

- com.oracle.bigdata.log.exec

- com.oracle.bigdata.log.qc

- com.oracle.bigdata.overflow

- com.oracle.bigdata.tablename

例7-2に、複数のアクセス・パラメータが設定されているCREATE TABLE文を示します。

例7-2 ORACLE_HIVEの複数のアクセス・パラメータの設定

CREATE TABLE ORDER (cust_num VARCHAR2(10),
order_num VARCHAR2(20),
order_date DATE,
item_cnt NUMBER,
description VARCHAR2(100),
order_total (NUMBER8,2)) ORGANIZATION EXTERNAL
(TYPE oracle_hive
ACCESS PARAMETERS (
com.oracle.bigdata.tableName:  order_db.order_summary
com.oracle.bigdata.colMap:     {"col":"ITEM_CNT", \
"field":"order_line_item_count"}
com.oracle.bigdata.overflow:   {"action":"ERROR", \
"col":"DESCRIPTION"}
com.oracle.bigdata.errorOpt:   [{"action":"replace", \
"value":"INV_NUM" , \
"col":["CUST_NUM","ORDER_NUM"]} ,\
{"action":"reject", \
"col":"ORDER_TOTAL}]
));

7.2.4 com.oracle.bigdata.colmap

ソース・データの列をOracle外部表の列にマップします。ソース・フィールド名がOracle列名の最大長を超える場合、または外部表で別の列名を使用する場合、このプロパティを使用します。

デフォルト値

Hive列と同じ名前を持つ外部表の列

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

colmap ::=

colmap_entry ::=

セマンティクス

"col":name

"col": キーワードは小文字を使用して、引用符で囲む必要があります。

name: Oracle外部表の列の名前。大/小文字を区別し、引用符で囲む必要があります。

"field":name

"field": キーワードは小文字を使用して、引用符で囲む必要があります。

name: データ・ソースのフィールドの名前。大/小文字は区別しませんが、引用符で囲む必要があります。「プロパティを指定するための構文ルール」を参照してください。

例

この例は、ORDER_LINE_ITEM_COUNTという名前のHive列をITEM_CNTという名前のOracle列にマップします。

com.oracle.bigdata.colMap={"col":"ITEM_CNT", \
"field":"order_line_item_count"}

7.2.5 com.oracle.bigdata.datamode

SmartScanがHadoopデータ・ソースをスキャンするために使用する方法を指定します。方法によって、パフォーマンスに大きな違いが生じる可能性があります。

デフォルト値

automatic

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

datamode ::=

セマンティクス

automatic

メタデータに基づいて適切なモードを自動的に選択します。可能な場合はcモードを選択します。データにcモードでサポートされていない形式が含まれる場合は、javaモードを選択します。

c

ファイル・バッファを読み取る場合はJavaを使用しますが、データを処理してOracle形式に変換する場合はCコードを使用します。デリミタ付きデータにこのモードを指定します。

データにCコードでサポートされていない形式が含まれる場合は、エラーが返されます。

java

データを処理してOracle形式に変換する場合は、Java SerDesおよびInputFormatsを使用します。Parquet、RCFileおよびSerDeを必要とする他のデータ形式にこのモードを指定します。

7.2.6 com.oracle.bigdata.erroropt

列の値の計算中に発生するエラーを処理する方法を示します。

デフォルト値

{"action":"setnull"}

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

erroropt ::=

error_element ::=

セマンティクス

"action"、"reject"、"setnull"、"replace"、"value"および"col"キーワードは小文字を使用して、引用符で囲む必要があります。「プロパティを指定するための構文ルール」を参照してください。

"action":value

value: 次のキーワードのいずれかになります。

- "reject": 行をロードしません。

- "setnull": 列をNULLに設定します。

- "replace": 列を指定された値に設定します。

"value":string

string: 外部表の不正な値を置換します。引用符で囲む必要があります。

"col":name

name: 外部表の列を識別します。列名は大/小文字を区別し、引用符で囲む必要があります。リストできるのは1回のみです。

例

この例では、Hive値によってエラーが発生した場合、CUST_NUMまたはORDER_NUM列の値をINVALIDに設定します。その他の列では、エラーによってHive値が拒否されます。

com.oracle.bigdata.errorOpt: {"action":"replace",\
"value":"INVALID", \
"col":["CUST_NUM","ORDER_NUM"]

7.2.7 com.oracle.bigdata.fields

データ・ソースのフィールド名およびデータ型をリストします。

デフォルト値

未定義

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

fields ::=

data_type ::=

primitive_type ::=

セマンティクス

構文は、Hive表のフィールド・リストと同じです。フィールド・リストを複数行に分割する場合、バックスラッシュを使用して改行文字をエスケープする必要があります。

field_name

Hiveフィールドの名前。英数字およびアンダースコア(_)のみ使用します。最大長は128文字です。フィールド名は大/小文字を区別します。

data_type

Hiveフィールドのデータ型。オプション。デフォルトはSTRINGです。文字セットはUTF8である必要があります。

データ型は複合またはプリミティブになります。

Hive複合データ型

- ARRAY: 索引付け可能なリスト

- MAP: キー値のタプル

- STRUCT: 要素のリスト

- UNIONTYPE: 複数のデータ型

Hiveプリミティブ・データ型

- INT: 4バイトの整数

- BIGINT: 8バイトの整数

- SMALLINT: 2バイトの整数

- TINYINT: 1バイトの整数

- BOOLEAN: TRUEまたはFALSE

- FLOAT: 単精度

- DOUBLE: 倍精度

- STRING: 文字列

関連項目:

Apache Hive Language Manualのデータ型に関する項を参照してください。

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types

COMMENT col_comment

一重引用符で囲まれた文字列リテラル。Hive表のメタデータとして格納されます(TBLPROPERTIESのcommentプロパティ)。

7.2.8 com.oracle.bigdata.fileformat

ORACLE_HDFSによって生成されたHive表のROW FORMAT句に基づいて、データ・ソースの行形式を説明します。

デフォルト値

TEXTFILE

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

fileformat ::=

セマンティクス

ORC

最適化された行カラムナ・ファイル形式

PARQUET

列指向、バイナリ・ファイル形式

RCFILE

レコード・カラムナ・ファイル形式

SEQUENCEFILE

圧縮ファイル形式

TEXTFILE

プレーン・テキスト・ファイル形式

INPUTFORMAT

データ・ファイルからレコードを抽出できるJavaクラスを識別します。

OUTPUTFORMAT

出力レコードを目的の形式に設定できるJavaクラスを識別します。

7.2.9 com.oracle.bigdata.log.exec

アクセス・ドライバがCDH上の並列プロセスとして実行されている場合、問合せのCコードによって生成されたログ・ファイルを生成する方法を指定します。

アクセス・ドライバはHadoopクラスタ・ノード上で実行されている場合、ログ・ファイルの作成または書込みを行いません。並列問合せプロセスがログ・ファイルを書き込みます。Javaコードからのログ・ファイルはlog4jプロパティによって制御されます。このプロパティは、構成ファイルまたはアクセス・パラメータで指定されます。「bigdata-log4j.properties」を参照してください。

デフォルト値

未定義(ロギングなし)

構文

[directory_object:]file_name_template

セマンティクス

directory_object

ログ・ファイルが作成されるHadoopクラスタ上のHDFSパスのOracleディレクトリ・オブジェクト。

file_name_template

ファイル名の生成に使用する文字列。表7-2に、テンプレートで使用できるオプションの変数を示します。

表7-3 com.oracle.bigdata.log.execの変数

変数

値

%p

オペレーティング・システム・プロセス識別子(PID)

%a

プロセスを一意に識別する番号。

%%

パーセント記号(%)

例

次の例では、PIDおよび一意の番号を含むログ・ファイル名(xtlogp_hive14_3413_57など)を生成します。

com.oracle.bigdata.log.exec= xtlogp_hive14_%p_%a

7.2.10 com.oracle.bigdata.log.qc

アクセス・ドライバが問合せのログ・ファイルを生成する方法を指定します。

デフォルト値

未定義(ロギングなし)

構文

[directory_object:]file_name_template

セマンティクス

directory_object

ログ・ファイルが書き込まれるパスを指すOracleディレクトリ・オブジェクトの名前。この値を省略すると、ログは外部表のデフォルト・ディレクトリに書き込まれます。

file_name_template

ファイル名の生成に使用する文字列。表7-4に、文字列で使用できるオプションの変数を示します。

表7-4 com.oracle.bigdata.log.qcの変数

変数

値

%p

オペレーティング・システム・プロセス識別子(PID)

%%

パーセント記号(%)

例

この例では、PIDおよびパーセント記号を含むログ・ファイル名(xtlogp_hive213459_%など)を作成します。

com.oracle.bigdata.log.qc= xtlogp_hive21%p_%%

7.2.11 com.oracle.bigdata.overflow

外部表の列には長すぎる文字列データの処理方法を示します。データ・ソースは文字またはバイナリになります。Hiveの場合、データ・ソースはSTRUCT、UNIONTYPES、MAPまたはARRAYにすることもできます。

デフォルト値

{"action":"truncate"}

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

overflow ::=

overflow_element ::=

セマンティクス

"action"、"truncate"、"error"および"col"タグは小文字を使用して、引用符で囲む必要があります。「プロパティを指定するための構文ルール」を参照してください。

"action":value

"action"の値は次のキーワードのいずれかになります。

- truncate: 列に収まるようにデータを短くします。

- error: エラーをスローします。com.oracle.bigdata.erroroptプロパティは、エラーの結果を制御します。

"col":name

name: 外部表の列を識別します。名前は大/小文字を区別し、引用符で囲む必要があります。

例

この例では、DESCRIPTION列のソース・データが列幅を超える場合、ソース・データを切り捨てます。

com.oracle.bigdata.overflow={"action":"truncate", \
"col":"DESCRIPTION"}

7.2.12 com.oracle.bigdata.rowformat

アクセス・ドライバがファイル内のレコードからフィールドを抽出するために必要な情報を提供します。

デフォルト値

DELIMITED

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

rowformat ::=

セマンティクス

DELIMITED

レコード内のフィールドを区切るために使用する文字を示します。

- FIELDS TERMINATED BY: レコード内の各フィールドを区切る文字。オプションのESCAPED BY文字は、フィールド値内に表示される場合、デリミタ文字の前に付けます。

- COLLECTION ITEMS TERMINATED BY: 配列要素の終了を示す文字。

- MAP KEYS TERMINATED BY: MAPフィールドのエントリの終了を示す文字。

- LINES TERMINATED BY: レコードの終了を示す文字。

- NULL DEFINED AS: null値を示す文字。

SERDE

アクセス・ドライバが必要とするSerDeのデータおよびプロパティを解析できるSerDeを識別します。

例

この例では、Avroコンテナ・ファイルにSerDeを指定します。

com.oracle.bigdata.rowformat:
SERDE'org.apache.hadoop.hive.serde2.avro.AvroSerDe'

次の例では、正規表現を含むファイルのSerDeを指定します。

com.oracle.bigdata.rowformat=\
SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' \
WITH SERDEPROPERTIES \
("input.regex" = "(\\\\d{6}) (\\\\d{5}) (.{29}) .*")

7.2.13 com.oracle.bigdata.tablename

ソース・データを含むHive表を識別します。

デフォルト値

DEFAULT.external_table_name

構文

[hive_database_name.]table_name

セマンティクス

hive_database_nameおよびtable_nameの最大長は128 UTF-8文字(512バイト)です。

hive_database_name

ソース・データが存在するHiveデータベース。DEFAULTはHive初期データベースの名前です。

table_name

データを含むHive表。table_nameを省略した場合、ORACLE_HIVEは外部表と同じ名前のHive表を検索します。表名は大/小文字を区別します。

例

この設定は、ソース・データがHiveのORDER_DBデータベース内のORDER_SUMMARYという表にあることを示します。

com.oracle.bigdata.tablename ORDER_DB.ORDER_SUMMARY

7.3 Hiveの静的データ・ディクショナリ・ビュー

Oracle Databaseカタログには、Hive表の複数の静的データ・ディクショナリ・ビューが含まれています。これらのデータ・ディクショナリ・ビューを問い合せて、アクセスできるHive表に関する情報を検出できます。

Oracle DatabaseからHiveデータベースにアクセスする場合、ORACLE_BIGDATA_CONFIGディレクトリ・オブジェクトの読取りアクセス権が必要です。

- ALL_HIVE_DATABASES

- ALL_HIVE_TABLES

- ALL_HIVE_COLUMNS

- DBA_HIVE_DATABASES

- DBA_HIVE_TABLES

- DBA_HIVE_COLUMNS

- USER_HIVE_DATABASES

- USER_HIVE_TABLES

- USER_HIVE_COLUMNS

7.3.1 ALL_HIVE_DATABASES

ALL_HIVE_DATABASESは、現在のユーザーにアクセスできるHiveメタストア内のすべてのデータベースを示します。

関連ビュー

- DBA_HIVE_DATABASESは、Hiveメタストア内のすべてのデータベースを示します。

- USER_HIVE_DATABASESは、現在のユーザーが所有するHiveメタストア内のデータベースを示します。

列

データ型

NULL

説明

CLUSTER_ID

VARCHAR2(4000)

NOT NULL

HiveメタストアがあるHadoopクラスタ

DATABASE_NAME

VARCHAR2(4000)

NOT NULL

Hiveデータベース名

DESCRIPTION

VARCHAR2(4000)

Hiveデータベースの説明

DB_LOCATION

VARCHAR2(4000)

NOT NULL

HIVE_URI

VARCHAR2(4000)

HiveデータベースのURI

関連項目:

- 「DBA_HIVE_DATABASES」

- 「USER_HIVE_DATABASES」

7.3.2 ALL_HIVE_TABLES

ALL_HIVE_TABLESは、現在のユーザーにアクセスできるHiveメタストア内のすべての表を示します。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIGデータベース・ディレクトリのREAD権限も必要です。「共通ディレクトリについて」を参照してください。

関連ビュー

- DBA_HIVE_TABLESは、Hiveメタストア内のすべての表を示します。

- USER_HIVE_TABLESは、Hiveメタストア内の現在のユーザーが所有するデータベースの表を示します。

列

データ型

NULL

説明

CLUSTER_ID

VARCHAR2(4000)

NOT NULL

HiveメタストアがあるHadoopクラスタ

DATABASE_NAME

VARCHAR2(4000)

NOT NULL

Hiveデータベースの名前

TABLE_NAME

VARCHAR2(4000)

NOT NULL

Hive表の名前

LOCATION

VARCHAR2(4000)

NO_OF_COLS

NUMBER

Hive表内の列の数

CREATION_TIME

DATE

表が作成された時刻

LAST_ACCESSED_TIME

DATE

最新のアクセス時刻

OWNER

VARCHAR2(4000)

Hive表の所有者

TABLE_TYPE

VARCHAR2(4000)

NOT NULL

Hive表のタイプ(外部、管理対象など)

PARTITIONED

VARCHAR2(4000)

表がパーティション化されている(YES)かされていない(NO)か

NO_OF_PART_KEYS

NUMBER

パーティションの数

INPUT_FORMAT

VARCHAR2(4000)

入力形式

OUTPUT_FORMAT

VARCHAR2(4000)

出力形式

SERIALIZATION

VARCHAR2(4000)

SerDeシリアル化情報

COMPRESSED

NUMBER

表が圧縮されている(YES)かされていない(NO)か

HIVE_URI

VARCHAR2(4000)

HiveデータベースのURI

関連項目:

- 「DBA_HIVE_TABLES」

- 「USER_HIVE_TABLES」

7.3.3 ALL_HIVE_COLUMNS

ALL_HIVE_COLUMNSは、現在のユーザーにアクセスできるすべてのHive表の列を示します。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIGデータベース・ディレクトリのREAD権限も必要です。「共通ディレクトリについて」を参照してください。

関連ビュー

- DBA_HIVE_COLUMNSは、Hiveメタストア内のすべての表の列を示します。

- USER_HIVE_COLUMNSは、現在のユーザーが所有するHiveデータベースの表の列を示します。

列

データ型

NULL

説明

CLUSTER_ID

VARCHAR2(4000)

NOT NULL

HiveメタストアがあるHadoopクラスタ

DATABASE_NAME

VARCHAR2(4000)

NOT NULL

Hiveデータベースの名前。空白の場合は、デフォルト・データベース

TABLE_NAME

VARCHAR2(4000)

NOT NULL

Hive表の名前

COLUMN_NAME

VARCHAR2(4000)

NOT NULL

Hive列の名前

HIVE_COLUMN_TYPE

VARCHAR2(4000)

NOT NULL

Hive列のデータ型

ORACLE_COLUMN_TYPE

VARCHAR2(4000)

NOT NULL

Hiveデータ型と同等のOracleデータ型

LOCATION

VARCHAR2(4000)

OWNER

VARCHAR2(4000)

Hive表の所有者

CREATION_TIME

DATE

表が作成された時刻

HIVE_URI

VARCHAR2(4000)

HiveデータベースのURI

関連項目:

- 「DBA_HIVE_COLUMNS」

- 「USER_HIVE_COLUMNS」

7.3.4 DBA_HIVE_DATABASES

DBA_HIVE_DATABASESは、Hiveメタストア内のすべてのデータベースを示します。列はALL_HIVE_DATABASESの列と同じです。

関連項目:

「ALL_HIVE_DATABASES」

7.3.5 DBA_HIVE_TABLES

DBA_HIVE_TABLESは、Hiveメタストア内のすべての表を示します。列はALL_HIVE_TABLESの列と同じです。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。「共通ディレクトリについて」を参照してください。

関連項目:

「ALL_HIVE_TABLES」

7.3.6 DBA_HIVE_COLUMNS

DBA_HIVE_COLUMNSは、Hiveメタストア内のすべての表の列を示します。列はALL_HIVE_COLUMNSの列と同じです。

関連項目:

「ALL_HIVE_COLUMNS」

7.3.7 USER_HIVE_DATABASES

USER_HIVE_DATABASESは、現在のユーザーが所有するHiveメタストア内のデータベースを示します。列(OWNERを除く)はALL_HIVE_DATABASESの列と同じです。

関連項目:

「ALL_HIVE_DATABASES」

7.3.8 USER_HIVE_TABLES

USER_HIVE_TABLESは、Hiveメタストア内の現在のユーザーが所有するデータベースの表を示します。列(OWNERを除く)はALL_HIVE_TABLESの列と同じです。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIGデータベース・ディレクトリのREAD権限も必要です。「共通ディレクトリについて」を参照してください。

関連項目:

「ALL_HIVE_TABLES」

7.3.9 USER_HIVE_COLUMNS

USER_HIVE_COLUMNSは、現在のユーザーが所有するHiveデータベースの表の列を示します。列(OWNERを除く)はALL_HIVE_COLUMNSの列と同じです。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIGデータベース・ディレクトリのREAD権限も必要です。「共通ディレクトリについて」を参照してください。

関連項目:

「ALL_HIVE_COLUMNS」

8 HadoopへのOracle表のコピー

この章では、Oracleデータベースの表をHadoopにコピーするためにCopy to BDAを使用する方法について説明します。内容は次のとおりです。

- Copy to BDAとは

- Copy to BDAの使用の概要

- Copy to BDAのインストール

- データ・ポンプ・ファイルの生成

- Hive表の作成

- サンプル・スキーマの使用例

8.1 Copy to BDAとは

Copy to BDAを使用すると、OracleデータベースからHadoopに表をコピーできます。表からデータ・ポンプ形式ファイルを生成してファイルをHDFSにコピーした後、Apache Hiveを使用してデータを問い合せることができます。Hiveは、Oracle Databaseにアクセスせずにローカルにデータを処理できます。Oracle表が変更されると、Hadoopのコピーをリフレッシュできます。Copy to BDAは、比較的静的であり、頻繁にリフレッシュする必要がないOracle表に主に役立ちます。

Copy to BDAは、Oracle Big Data SQLでライセンス供与されます。Copy to BDAを使用するには、Oracle Big Data SQLライセンスが必要です。

8.2 Copy to BDAの使用の概要

Copy to BDAを使用するには、次の手順を実行します。

1. システムが前提条件を満たしていることを確認し、必要なソフトウェアがOracle Big Data ApplianceおよびOracle Exadata Database Machineにインストールされていることを確認します。

「Copy to BDAのインストール」を参照してください。

2. Oracle Exadata Database Machineで、Oracle Databaseに接続し、表データおよびメタデータを含むデータ・ポンプ形式ファイルを生成します。

「データ・ポンプ・ファイルの生成」を参照してください。

3. ファイルをOracle Big Data ApplianceのHDFSにコピーします。

「HDFSへのファイルのコピー」を参照してください。

4. Apache Hiveに接続して、ファイルから外部表を作成します。

「Hive表の作成」を参照してください。

5. 他のHive表と同じように、このHive表に問い合せます。

8.3 Copy to BDAのインストール

Copy to BDAは、Oracle Big Data Applianceに接続されたOracle Exadata Database Machineでのみ使用できます。

8.3.1 Copy to BDAの前提条件

Oracle Exadata Database Machineは次の要件に準拠している必要があります。

- Oracle Big Data Applianceと同じインフィニバンドまたはクライアント・ネットワークで構成されています。Oracle Exadata Database MachineおよびOracle Big Data Appliance間のインフィニバンド接続をお薦めしますが、必須ではありません。

- Oracle Database 11.2以上を実行していること。
Copy to BDAは、Oracle Big Data SQLより前のリリースをサポートします。

8.3.2 Oracle Big Data ApplianceのCopy to BDAのインストール

Copy to BDAは、Oracle Big Data Applianceのインストール・オプションであるOracle Big Data SQLのコンポーネントです。ソフトウェアの初期インストール時またはその後で、Oracle Big Data SQLによってサービスを有効化および無効化するための標準的な方法を使用して有効化できます。「インストールの実行」を参照してください。

8.3.3 Oracle Exadata Database MachineのCopy to BDAのインストール

Copy to BDAは、Oracle Exadata Database MachineのHadoopクライアントのみ必要です。Oracle Big Data SQLで必要な追加のソフトウェアは使用しません。

Oracle Big Data SQLも使用する場合、bds-exa-install.shインストール・スクリプトを実行するとHadoopクライアントが自動的に作成されます。追加の手順を実行する必要はありません。「Oracle Big Data SQLのインストール後スクリプトの実行」を参照してください。

この時点でOracle Big Data SQLを使用しない場合、スクリプトを実行するかわりにHadoopクライアントを手動でインストールできます。たとえば、Oracle Big Data SQLは、使用しているOracle Databaseのバージョンでサポートされていない場合があります。また、現在必要としていないデータベース・パッチおよび他のソフトウェアのインストールを回避する場合があります。「CDHへのリモート・クライアント・アクセスの提供」を参照してください。

8.4 データ・ポンプ・ファイルの生成

SQL CREATE TABLE文には、ORACLE_DATAPUMPアクセス・ドライバを指定する外部表を作成するための特別な句があります。この句に指定される情報により、アクセス・ドライバがOracleデータベース表のデータおよびメタデータを含むデータ・ポンプ形式ファイルを生成できます。

この項の内容は次のとおりです。

- データ・ポンプ形式ファイルについて

- ターゲット・ディレクトリの識別

- CREATE TABLE構文について

- HDFSへのファイルのコピー

8.4.1 データ・ポンプ形式ファイルについて

データ・ポンプ・ファイルは通常、あるデータベースから別のデータベースにデータおよびメタデータを移動するために使用されます。Copy to BDAは、このファイル形式を使用して、OracleデータベースからHDFSにデータをコピーします。

データ・ポンプ形式ファイルを生成するには、既存のOracle表から外部表を作成します。Oracle Databaseの外部表は、データベース外のデータの場所を識別および記述するOracle Databaseオブジェクトです。外部表は、アクセス・ドライバを使用して、データを解析および形式設定します。Copy to BDAでは、ORACLE_DATAPUMPアクセス・ドライバを使用します。内部Oracle表からデータおよびメタデータをコピーして、外部表のデータ・ポンプ形式ファイルを移入します。

8.4.2 ターゲット・ディレクトリの識別

Oracle Databaseのデータベース・ディレクトリへの読取りおよび書込みアクセスが必要です。CREATE ANY DIRECTORYシステム権限を持つOracle Databaseユーザーのみディレクトリを作成できます。

この例は、Oracle Exadata Database Machineの/exportdirディレクトリを指すEXPORTDIRという名前のデータベース・ディレクトリを作成します。

SQL> CREATE DIRECTORY exportdir AS '/exportdir';

8.4.3 CREATE TABLE構文について

データ・ポンプ形式ファイルのCREATE TABLE文の基本的な構文は次のとおりです。

CREATE TABLE table_name
ORGANIZATION EXTERNAL (
TYPE oracle_datapump
DEFAULT DIRECTORY database_directory
LOCATION ('filename1.dmp','filename2.dmp'...)
) PARALLEL n
AS SELECT * FROM tablename;

DEFAULT DIRECTORY

この目的のために作成したデータベース・ディレクトリを識別します。「ターゲット・ディレクトリの識別」を参照してください。

LOCATION

作成するデータ・ポンプ・ファイルの名前をリストします。名前の数は、PARALLEL句で指定される並列度(DOP)と一致する必要があります。それ以外の場合、DOPはファイルの数に削減されます。

ファイルの数および並列度は、データ・ポンプ形式ファイルを生成する場合にOracle Databaseのパフォーマンスに影響します。Hiveの問合せパフォーマンスには影響しません。

PARALLEL

並列度(DOP)を設定します。Oracle DBAが使用を許可する最大数を使用します。デフォルトのDOPはシリアル処理の1です。大きい数値を使用すると並列処理が可能です。

AS SELECT

この句の完全なSQL SELECT構文を使用します。制限されていません。tablenameは、HDFSにコピーするOracle表を識別します。

関連項目:

これらのパラメータの説明:

- 『Oracle Database SQL言語リファレンス』

- 『Oracle Databaseユーティリティ』

8.4.4 HDFSへのファイルのコピー

Oracle Big Data SQLインストールは、Hadoopクライアント・ファイルをOracle Exadata Database Machineにインストールします。Hadoopクライアント・インストールでは、Hadoopコマンドを使用してデータ・ポンプ・ファイルをHDFSにコピーできます。HDFSディレクトリの書込み権限が必要です。

dmpファイルをHDFSにコピーするには、hadoop fs -putコマンドを使用します。この例では、oracleユーザーが所有するHDFS customersディレクトリにファイルをコピーします。

$ hadoop fs -put customers*.dmp /user/oracle/customers

8.5 Hive表の作成

データ・ポンプ・ファイルのデータにアクセス可能にするには、データ・ポンプ・ファイルに対するHive外部表を作成します。Copy to BDAは、Hiveによるファイルの読取りが可能なSerDesを提供します。これらのSerDesは読取り専用であるため、これらを使用してファイルに書き込めません。

関連項目:

次のApache Hive LanguageManual DDL

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Create/Drop/TruncateTable

8.5.1 Hive外部表について

外部表に対して、Hiveは表のメタデータをメタストアにロードします。データはLOCATION句で識別される元の場所に残ります。HiveQL DROP TABLE文を使用して外部表を削除すると、外部データは変更されずにメタデータのみ破棄されます。このため、Hiveは、Oracle Databaseと基本的に同じ方法で外部表を処理します。

外部表は、複数のプログラムで共有されるデータ・ソースをサポートします。この場合、Oracle Databaseを使用してデータを更新し、新しいファイルを生成します。Hiveメタデータを変更せずに古いHDFSファイルを更新されたファイルで上書きできます。

データ・ポンプ形式ファイルで使用するHive外部表を作成するためのHive CREATE TABLE文の基本的な構文は、次のとおりです。

CREATE EXTERNAL TABLE tablename
ROW FORMAT
SERDE 'oracle.hadoop.hive.datapump.DPSerDe'
STORED AS
INPUTFORMAT  'oracle.hadoop.hive.datapump.DPInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 'hdfs_directory'

8.5.2 列マッピングの概要

Hive表の列は、データ・ポンプ・ファイルに格納されたメタデータで提供されるOracle列と同じ名前が自動的に設定されます。このリリースでは、ユーザーが指定した列の定義が無視されます。

8.5.3 データ型変換について

Copy to BDAは、Oracle表のデータを適切なHiveデータ型に自動的に変換します。表8-1に、Oracleデータ型とHiveデータ型の間のデフォルトのマッピングを示します。

表8-1 Oracleデータ型からHiveデータ型への変換

Oracleデータ型

Hiveデータ型

NUMBER

スケールが0、精度が10未満の場合はINT

スケールが0、精度が19未満の場合はBIGINT

スケールが0より大きく、精度が19より大きい場合はDECIMAL

BINARY_DOUBLE

DOUBLE

BINARY_FLOAT

FLOAT

CHAR

NCHAR

CHAR

VARCHAR2

NVARCHAR2

VARCHAR

DATE

TIMESTAMP

TIMESTAMP

TIMESTAMP

TIMESTAMPTZ[1]

TIMESTAMPLTZ

サポートなし

RAW

BINARY

8.6 サンプル・スキーマの使用例

この例は、Copy to BDAを使用してOracle表からHive表を作成するプロセスのすべての手順を示します。

8.6.1 サンプル・データについて

Oracle表は、Sales History (SH)サンプル・スキーマから使用します。CUSTOMERS表は、名前、住所、電話番号、生年月日および借入限度額を含む個々の顧客に関する詳細情報を提供します。COUNTRIES表は、国のリストを提供し、地域および小地域を識別します。

この問合せは、CUSTOMERS表の一部のデータを示します。

SELECT cust_first_name first_name,
cust_last_name last_name,
cust_gender gender,
cust_year_of_birth birth
FROM customers
ORDER BY cust_city, last_name
FETCH FIRST 10 ROWS ONLY;

問合せは次の行を返します:

FIRST_NAME      LAST_NAME            GENDER      BIRTH
--------------- -------------------- ------ ----------
Lise            Abbey                F            1963
Lotus           Alden                M            1958
Emmanuel        Aubrey               M            1933
Phil            Ball                 M            1956
Valentina       Bardwell             F            1965
Lolita          Barkley              F            1966
Heloise         Barnes               M            1980
Royden          Barrett              M            1937
Gilbert         Braun                M            1984
Portia          Capp                 F            1948

この例を複製するには、Oracle Databaseのサンプル・スキーマをインストールして、SHユーザーとして接続します。

関連項目:

スキーマの表およびインストールの手順の説明は、Oracle Databaseサンプル・スキーマを参照してください。

8.6.2 EXPDIR Databaseディレクトリの作成

これらのSQL文は、EXPDIRという名前のローカル・データベース・ディレクトリを作成し、SHユーザーにアクセス権を付与します。

SQL> CREATE DIRECTORY expdir AS '/expdir';
Directory created.
SQL> GRANT READ, WRITE ON DIRECTORY expdir TO SH;
Grant succeeded.

8.6.3 顧客データのデータ・ポンプ形式ファイルの作成

次の例は、データ・ポンプ・ファイルの作成方法およびその内容の確認方法を示します。

8.6.3.1 簡単なSELECT文を使用したCREATE TABLEの例

この例は、CUSTOMERS表からデータ・ポンプ形式ファイルを作成する非常に簡単なSQLコマンドを示します。表全体を選択して、ローカル/expdirディレクトリのcustomers.dmpという名前の単一の出力ファイルを生成します。

CREATE TABLE export_customers
ORGANIZATION EXTERNAL
(
TYPE oracle_datapump
DEFAULT DIRECTORY expdir
LOCATION('customers.dmp')
)
AS SELECT * FROM customers;

8.6.3.2 さらに複雑なSQL SELECT文を使用したCREATE TABLEの例

次の例は、より複雑な構文を示しています。COUNTRY_ID列に関してCUSTOMERSおよびCOUNTRIES表を結合して、国名を示します。また、行をアメリカの顧客に制限します。コマンドは、ローカル/expdirディレクトリにamericas1.dmpおよびamericas2.dmpという名前の2つの出力ファイルをパラレルに生成します。

CREATE TABLE export_americas
ORGANIZATION EXTERNAL
(
TYPE oracle_datapump
DEFAULT DIRECTORY expdir
LOCATION('americas1.dmp', 'americas2.dmp')
)
PARALLEL 2
AS SELECT a.cust_first_name first_name,
a.cust_last_name last_name,
a.cust_gender gender,
a.cust_year_of_birth birth,
a.cust_email email,
a.cust_postal_code postal_code,
b.country_name country
FROM customers a,
countries b
WHERE a.country_id=b.country_id AND
b.country_region='Americas'
ORDER BY a.country_id, a.cust_postal_code;

8.6.4 データ・ファイルの内容の確認

Hadoopにコピーする前に出力データ・ファイルの内容を確認できます。前のCREATE TABLE文で、他の表と同じように説明および問い合せできるEXPORT_AMERICASという名前の外部表を作成しました。

DESCRIBE文は、列の選択および変更された名前を示します。

SQL> DESCRIBE export_americas;
Name                      Null?    Type
------------------------- -------- -----------------
FIRST_NAME                NOT NULL VARCHAR2(20)
LAST_NAME                 NOT NULL VARCHAR2(40)
GENDER                    NOT NULL CHAR(1)
BIRTH                     NOT NULL NUMBER(4)
EMAIL                              VARCHAR2(50)
POSTAL_CODE               NOT NULL VARCHAR2(10)
COUNTRY                   NOT NULL VARCHAR2(40)

次のようなSELECT文は、データのサンプルを示します。

SELECT first_name, last_name, gender, birth, country
FROM export_americas
WHERE birth > 1985
ORDER BY last_name
FETCH FIRST 5 ROWS ONLY;

FIRST_NAME      LAST_NAME            GENDER      BIRTH COUNTRY
--------------- -------------------- ------ ---------- ------------------------
Opal            Aaron                M            1990 United States of America
KaKit           Abeles               M            1986 United States of America
Mitchel         Alambarati           M            1987 Canada
Jade            Anderson             M            1986 United States of America
Roderica        Austin               M            1986 United States of America

8.6.5 Hadoopへのファイルのコピー

次のコマンドはローカルexpdirディレクトリのファイルをリストし、customersという名前のHadoopサブディレクトリを作成し、そこにファイルをコピーします。ユーザーは、oracleファイル・システム・ユーザーとしてOracle Big Data Applianceに接続されます。

$ cd /expdir
$ ls americas*.dmp
americas1.dmp  americas2.dmp
$ hadoop fs -mkdir customers
$ hadoop fs -put *.dmp customers
$ hadoop fs -ls customers
Found 2 items
-rw-r--r--   1 oracle oracle     798720 2014-10-13 17:04 customers/americas1.dmp
-rw-r--r--   1 oracle oracle     954368 2014-10-13 17:04 customers/americas2.dmp

8.6.6 Hive外部表の作成

このHiveQL文は、Copy to BDAのSerDesを使用して外部表を作成します。LOCATION句は、データ・ポンプ・ファイルを含むHadoopディレクトリへのフル・パスを識別します。

CREATE EXTERNAL TABLE customers
ROW FORMAT SERDE 'oracle.hadoop.hive.datapump.DPSerDe'
STORED AS
INPUTFORMAT  'oracle.hadoop.hive.datapump.DPInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION '/user/oracle/customers';

DESCRIBEコマンドは、CUSTOMERS外部表の列を示します。

hive> DESCRIBE customers;
OK
first_name               varchar(20)              from deserializer
last_name                varchar(40)              from deserializer
gender                   char(1)                  from deserializer
birth                    int                      from deserializer
email                    varchar(50)              from deserializer
postal_code              varchar(10)              from deserializer
country                  varchar(40)              from deserializer

8.6.7 Hiveのデータの問合せ

次のHiveQL SELECT文は、「データ・ファイルの内容の確認」に示されているOracle DatabaseのSQL SELECT文と同じデータを示します。2つの問合せは、同じデータ・ポンプ・ファイルのコピーにアクセスします。

SELECT first_name, last_name, gender, birth, country
FROM customers
WHERE birth > 1985
ORDER BY last_name LIMIT 5;

Total MapReduce jobs = 1
Launching Job 1 out of 1
.
.
.
OK
Opal      Aaron       M     1990     United States of America
KaKit     Abeles      M     1986     United States of America
Mitchel   Alambarati  M     1987     Canada
Jade      Anderson    M     1986     United States of America
Roderica  Austin      M     1986     United States of America

[1]
TIMESTAMPTZおよびTIMESTAMPLTZデータをHiveにコピーするには、データ・ポンプ・ファイルにエクスポートする場合に列をTIMESTAMPにキャストします。Hiveは、タイム・ゾーンまたはタイム・オフセットをサポートするデータ型を持ちません。

第IV部 Oracle Table Access for Hadoop and Spark

この部では、Oracle Databaseのための、Oracle Table Access for Hadoop and Sparkのストレージ・ハンドラについて説明します。ここには次の章が含まれます。

- Oracle Table Access for Hadoop and Spark (OTA4H)

9 Oracle Table Access for Hadoop and Spark (OTA4H)

Oracle Table Access for Hadoop and Spark (OTA4H)は、Oracle表をHadoopおよびSparkのデータ・ソースに変換する、Oracle Big Data Applianceの機能です。OTA4Hを使用すると、SerDes、HCatalog、InputFormatおよびStorageHandlerをサポートするHadoop APIとSpark APIを使用する以外に、Hive SQLやSpark SQLを使用して、Oracle Database内のマスター・データに直接、高速に、並列化して、安全に、一貫してアクセスできます。この章では、次の項で、Oracle Table Access for Hadoop and Spark (OTA4H)について説明します。

- 業務系データ、ビッグ・データおよび要件

- Oracle Table Access for Hadoop and Spark (OTA4H)の概要

- OTA4Hの動作方法

- OTA4Hの機能

- OTA4HでのHiveQLの使用方法

- OTA4HでのSpark SQLの使用方法

9.1 業務系データ、ビッグ・データおよび要件

現在、ほとんどの会社に共通のデータ・アーキテクチャは、一般的に次のコンポーネントで構成されています。

- 業務系データ、トランザクション・データおよびマスター・データ(顧客、製品、従業員などの共有ビジネス・オブジェクト)を対象としたOracle Database

- ビッグ・データ

Master Data Management (MDM)やイベント処理などのHadoopアプリケーションには、Hadoopストレージ(Webログなどのランディング・ポイントとして、HDFSやNoSQL Databaseなど)に含まれるデータと、Oracle Database (信頼できる監査可能な真のソースとして)に含まれるデータの両方に対するアクセス権が必要です。HadoopストレージとOracle Databaseの両方に存在するこのようなデータを処理するには、次の2つのアプローチがあります。

- OracleのCopy2BDAなどのツールを使用したETLコピー

- Oracle Big Data SQLやOracle Table Access for Hadoop and Spark (OTA4H)を使用した直接アクセス。

この章では、Oracle Table Access for Hadoop and Spark (OTA4H)について説明します。

9.2 Oracle Table Access for Hadoop and Spark (OTA4H)の概要

Oracle Table Access for Hadoop and Spark (OTA4H)は、HCatalogおよびInputFormatを使用するOracle Database用のストレージ・ハンドラです。

この項では、次の概念について説明します。

- Hadoop 2.xを活用できる状況

- Hadoopデータ・ソースとしてのOracle表

- 外部表

- Hiveでの外部表の作成

9.2.1 Hadoop 2.xを活用できる状況

Hadoop 2.xアーキテクチャにより、クラスタ・リソース管理およびストレージから計算エンジンが分離されます。これにより、次のものを使用できます。

- 様々なSQL問合せエンジン。たとえば、Hive SQL、Spark SQL、Big Data SQL。

- 様々なプログラム的な計算エンジン。たとえば、MapReduce、Pig、Storm、Solr、Cascading。

- YARNによる計算リソース(CPU、メモリー)の拡張可能な割当て。

- HCatalog、InputFormat、OutputFormatおよびStorageHandlerインタフェースを介したリモート・ストレージのみでなく、HDFS、NoSQLなどの様々なデータ・ストア。

OTA4Hは、HCatalogおよびInputFormatを使用するOracle Database用のストレージ・ハンドラです。

次の図に、Hadoop 2.0アーキテクチャを示します。

図9-1 Hadoop 2.0アーキテクチャ

9.2.2 Hadoopデータ・ソースとしてのOracle表

OTA4Hにより、現在およびアドホックの問合せが有効化されます。これにより、データの問合せが高速化され安全性が向上します。データを直接問い合せて、必要に応じて必要なデータのみを取得できます。

OTA4Hでは、Oracleのエンドツーエンドのセキュリティも提供されます。これには、アイデンティティ管理、列のマスキングおよびラベルと行のセキュリティも含まれます。

また、OTA4Hにより、PigやMapReduceなど、HadoopおよびSparkのAPIへの直接アクセスも可能になります。

9.2.3 外部表

外部表により、Oracle表はHadoopやSparkのデータ・ソースに変換されます。外部表を宣言するためのDDLは、次のとおりです。

CREATE[TEMPORARY] EXTERNAL TABLE [IF NOT EXISTS]  [db_name.]table_name
[(col_name data_type [COMMENTcol_comment],...)]
[COMMENT table_comment]
STORED BY 'oracle.hcat.osh.OracleStorageHandler' [WITHSERDEPROPERTIES(...)]
[TBLPROPERTIES (property_name=property_value,...)]

data_type
|SMALLINT
|INT
|BIGINT
|BOOLEAN
|FLOAT
|DOUBLE
|STRING
|BINARY
|TIMESTAMP
|DECIMAL
|DECIMAL(precision,scale)
|VARCHAR
|CHAR

関連項目:
Hive外部表の構文は、リンクhttps://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-CreateTableを参照してください

注意:

Oracleでは、プリミティブ型のみがサポートされます。

次に、外部表のプロパティについて説明します。

9.2.3.1 TBLPROPERTIES

プロパティ

使用

oracle.hcat.osh.columns.mapping

Hive列とOracle表の列との間のマッピングを指定するカンマ区切りリスト。OracleStorageHandlerを使用するすべての外部表では、これを定義する必要があります。

mapreduce.jdbc.url

データベースに接続するための接続URL

mapreduce.jdbc.username

データベースに接続するための接続ユーザー名

mapreduce.jdbc.password

データベースに接続するための接続パスワード

mapreduce.jdbc.input.table.name

Oracle表名

mapreduce.jdbc.input conditions

データベースの問合せに使用されます。問合せプッシュダウンに使用する必要があります。

mapreduce.jdbc.input.query

データベースの問合せに使用されます。問合せは、列のサブセットが選択されている場合にのみ使用する必要があります。

mapreduce.jdbc.input.orderby

データベースに順序をプッシュするために使用されるORDER BY句。

oracle.hcat.osh.splitterKind

分割がOracle Database内のターゲット表の物理的構造と一致するよう、OracleStorageHandlerで分割をどのように作成する必要があるかを指定するために使用されます。適用可能なスプリッタの種類には、SINGLE_SPLITTER、PARTITION_SPLITTER、ROW_SPLITTER、BLOCK_SPLITTERがあります。

oracle.hcat.osh.rowsPerSplit

ROW_SPLITTER splitterKindが表に適用されている場合にのみ、使用されます。LIMIT_RANGEスプリッタの分割ごとの行数を表します。デフォルトは1000です

oracle.hcat.osh.authentication

Oracle Databaseへの接続に使用される認証方式。SIMPLE (デフォルト)、ORACLE_WALLET、KERBEROSにすることができます

sun.security.krb5.principal

Kerberosプリンシパル。KERBEROS認証が適用されている場合にのみ使用されます。

oracle.hcat.osh.kerb.callback

Kerberos認証のコールバック。Kerberos認証が適用されている場合にのみ使用されます。

oracle.hcat.osh.maxSplits

あらゆる種類のスプリッタについての分割の最大数

注意:

前述に加えて、任意のJDBC接続プロパティ(oracle.jdbc.*およびoracle.net.*)をTBLPROPERTIESとして指定できます。これらは、JDBCドライバを使用してOracle Databaseへの接続を確立する場合に使用されます。

9.2.3.2 SERDE PROPERTIES

プロパティ

使用

oracle.hcat.osh.columns.mapping

OracleStorageHandlerを使用するすべての外部表では、これを定義する必要があります。これは、Hive列(表の作成で指定)とOracle表の列との間のマッピングを指定するカンマ区切りリストです。また、WITHSERDEPROPERTIESを使用すると、外部表定義で、実際のOracle表内の選択された列のみを参照することもできます。つまり、Oracle表のすべての列をHive外部表に含める必要はありません。マッピングにおけるOracle列の順序は、表の作成で指定したHive列の順序と同じです。

9.2.4 OTA4Hパッケージ内のjarのリスト

OTA4Hは、jarの次のリストで構成されています。すべてのjarは、BDAの/opt/oracle/ota4h/jlibにあります。

OTA4H内のjarのリスト

jarの名前

使用

osh.jar

OracleStorageHandler実装が含まれています

ojdbc7.jar

SparkタスクやHadoopタスクによってデータベースへの接続に使用される、OTA4H固有のJDBCドライバ(内部コールで最適化されます)。

ucp.jar

OracleStorageHandler内の接続プールの作成用

oraclepki103.jar、osdt_core.jar、osdt_cert.jar、osdt_jce.jar

Oracle Wallet認証用

orai18n.jar

Oracleグローバリゼーション・サポート

9.2.5 Hiveでの外部表の作成

Hiveでの外部表の作成は、次の方法で実行できます。

DROP TABLE employees;

CREATE EXTERNAL TABLE employees (
EMPLOYEE_ID INT,
FIRST_NAME  STRING,
LAST_NAME   STRING,
SALARY      DOUBLE,
HIRE_DATE   TIMESTAMP,
JOB_ID      STRING
)

STORED BY 'oracle.hcat.osh.OracleStorageHandler'

WITH SERDEPROPERTIES (
'oracle.hcat.osh.columns.mapping' = 'employee_id,first_name,last_name,salary,hire_date,job_id')

TBLPROPERTIES (
'mapreduce.jdbc.url' = 'jdbc:oracle:thin:@localhost:1521:orcl',
'mapreduce.jdbc.username' = 'hr',
'mapreduce.jdbc.password' = 'hr',
'mapreduce.jdbc.input.table.name' = 'EMPLOYEES'
);

注意:
HIVE_AUX_JARS_PATH環境変数(hive-env.sh、hive.aux.jars.path構成プロパティまたはHive起動時の--auxpathオプションにあります)によって制御されるHive auxpathに、ucp.jar、ojdbc7.jarおよびosh.jarを含めます。BDAでは、Cloudera Managerインタフェースを使用してこれらを構成できます。また、Hiveコマンドラインでadd jarを使用して、これらのjarをHadoopタスクのクラスパスに追加する必要もあります。
様々なHiveコマンドライン・オプションおよび構成プロパティは、次のソースを参照してください。

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Cli

https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties

9.3 OTA4Hの動作方法

Oracle Table Access for Hadoop and Spark (OTA4H)を使用するために、新しい表を作成する必要はありません。OTA4Hの使用を開始するには、次の手順を実行します。

1. Oracle表を参照する外部表を作成するためのHive DDLを作成します。

2. HiveSQL、SparkSQLまたはその他のSpark/Hadoop問合せおよびAPIコールを発行します。

次の項では、新しいOracle Database表およびHive DDLの作成方法について説明します。

新しいOracle Database表の作成

Hive DDL

9.3.1 新しいOracle Database表の作成

次に、パーティション化されたOracle表の例を示します。これは、この後でパーティション・プルーニングの動作を示すデモに使用します。

1. CREATE TABLE EmployeeData ( Emp_ID NUMBER,
First_Name VARCHAR2(20),
Last_Name VARCHAR2(20),
Job_Title VARCHAR2(40),
Salary NUMBER)
PARTITION BY RANGE (Salary)
( PARTITION salary_1 VALUES LESS THAN (60000)
TABLESPACE tsa
, PARTITION salary_2 VALUES LESS THAN (70000)
TABLESPACE tsb
, PARTITION salary_3 VALUES LESS THAN (80000)
TABLESPACE tsc
, PARTITION salary_4 VALUES LESS THAN (90000)
TABLESPACE tsd
, PARTITION salary_5 VALUES LESS THAN (100000)
TABLESPACE tse
);

注意:

このマニュアルの後続の例で示すように、この構文は表の作成に使用できます。

2. Hive、Sparkまたはその他のHadoopモデル(ローカルHive表との結合など)から、問合せを発行します。

9.3.2 Hive DDL

この例では、2つの異なる分割パターンを使用して、2つのHive外部表を同じOracle表に関連付けます。

- SIMPLE_SPLITTER

- PARTITION_SPLITTER

注意:
外部表の列は、ベースとなるOracle表の列より少なくすることができます。
列には異なる名前を付けることができるため、ベース表でのマッピングにTBLPROPERTYを使用します。

後続の例では、次の変数を使用します。

connection_string = jdbc:oracle:thin:@localhost:1521/<servicename>

oracle_user=ota4h

oracle_pwd=ota4h

次のコマンドにより、デフォルトの分割パターンSIMPLE_SPLITTERを使用して、Hive外部表が作成されます。

CREATE EXTERNAL TABLE EmployeeDataSimple (
Emp_ID int,
First_Name string,
Last_Name string,
Job_Title string,
Salary int
)
STORED BY 'oracle.hcat.osh.OracleStorageHandler'
WITH SERDEPROPERTIES (
'oracle.hcat.osh.columns.mapping' = 'Emp_ID,First_Name,Last_Name,Job_Title,Salary')
TBLPROPERTIES (
'mapreduce.jdbc.url' = '${hiveconf:jdbc:oracle:thin:@localhost:1521/<servicename>}',
'mapreduce.jdbc.username' = '${hiveconf:ota4h}',
'mapreduce.jdbc.password' = '${hiveconf:ota4h}',
'mapreduce.jdbc.input.table.name' = 'EmployeeData'
);

次の例では、PARTITION_SPLITTERを使用して、Hive外部表が作成されます。

DROP TABLE EmployeeDataPartitioned;
CREATE EXTERNAL TABLE EmployeeDataPartitioned (
Emp_ID int,
First_Name string,
Last_Name string,
Job_Title string,
Salary int
)
STORED BY 'oracle.hcat.osh.OracleStorageHandler'
WITH SERDEPROPERTIES (
'oracle.hcat.osh.columns.mapping' = 'Emp_ID,First_Name,Last_Name,Job_Title,Salary')
TBLPROPERTIES (
'mapreduce.jdbc.url' = '${hiveconf:jdbc:oracle:thin:@localhost:1521/<servicename>}',
'mapreduce.jdbc.username' = '${hiveconf:ota4h}',
'mapreduce.jdbc.password' = '${hiveconf:ota4h}',
'mapreduce.jdbc.input.table.name' = 'EmployeeData',
'oracle.hcat.osh.splitterKind' = 'PARTITIONED_TABLE'
);

関連項目:
デモ・コード・サンプルは、Big Data Applianceに関するページを参照

9.4 OTA4Hの機能

次のトピックでは、OTA4Hの機能について説明します。

- パフォーマンスおよびスケーラビリティ機能

- セキュリティ機能

- OTA4HでのHiveQLの使用方法

- OTA4HでのSpark SQLの使用方法

9.4.1 パフォーマンスおよびスケーラビリティ機能

次の項では、OTA4Hのパフォーマンスおよびスケーラビリティ機能について説明します。

- スプリッタ

- 述語のプッシュダウン

- パーティション・プルーニング

- スマート接続管理

HCatalogには、Hive DDL、HiveSQL、Spark SQLなどからの表のメタデータが格納され、その後、このメタデータは、問合せの発行中に使用されます。

Oracle表は、splitterKindプロパティで決定されるグラニュルに分割されます。次に、これらのグラニュルは、生成された問合せを発行することにより、OracleStorageHandlerによって分割に読み込まれます。

スキャンが必要な分割を問合せ計画で決定する場合、OracleStorageHandlerにより、すべての使用可能な問合せタイプをテストする必要はありません。

図9-2 OTA4Hの要約

9.4.1.1 スプリッタ

Hive外部表でOTA4Hを使用して問合せを実行する場合、基礎となるOracle表は、Hadoop側での分割に対応するグラニュルに動的に分割されます。各分割は、単一のマップ・タスクによって処理されます。ORACLE_SPLITTER_KINDプロパティを使用すると、分割の作成方法を指定できます。これにより、分割をOracle Database内のターゲット表の物理的構造と一致させることができます。

使用できる他の種類のスプリッタは、次のとおりです。

SINGLE_SPLITTER

表につき1つの分割を作成します。SINGLE_SPLITTERを使用すると、表全体に対する問合せを単一タスクで処理できます。

ROW_SPLITTER

分割当たりの行数を制限します。デフォルトの行数は1000です。行数を指定するには、oracle.hcat.osh.rowsPerSplitプロパティを設定します。ROW_SPLITTERを使用する場合、oracle.hcat.osh.maxSplitsのデフォルト値は1です。この値を増加して、並列読取りを有効化できます。

OTA4Hでは、rowsPerSplitプロパティで指定されている値に基づいて、表を分割します。これにより得られる分割数がmaxSplitsと超える場合は、maxSplitsプロパティが使用されます。分割当たりの行は、これに従って分割されます。

注意:
oracle.hcat.osh.rowsPerSplitは、ROW_SPLITTERでのみ使用され、その他の種類のスプリッタでは使用されません。

BLOCK_SPLITTER

データ・ブロックの基礎となるストレージに基づいて、分割を作成します。ブロック・スプリッタを使用すると、生成される分割の最大数を指定できます。BLOCK_SPLITTERを使用する場合、oracle.hcat.osh.maxSplitsのデフォルト値は1です。この値を増加して、並列読取りを有効化できます。BLOCK_SPLITTERには、Oracleターゲット表を含むスキーマに付与される、SYS.DBA.EXTENTS表に対するSELECT権限が必要です。この権限が存在しない場合、OTA4HではSINGLE_SPLITTERを使用します。

注意:
BLOCK_SPLITTERでの実際の分割数は、oracle.hcat.osh.maxSplitsプロパティで指定されている値より小さくなる場合があります。
パーティション化された表または索引構成表には、BLOCK_SPLITTERを使用しないでください。

PARTITION_SPLITTER

パーティション当たり1つの分割を作成します。PARTITION_SPLITTERは、表がパーティション化されている場合にデフォルトで使用されます。この設定を上書きするには、表プロパティでROW_SPLITTERを指定します。PARTITION_SPLITTERを使用する場合、oracle.hcat.osh.maxSplits表プロパティのデフォルト値は64です。

次に、ROW_SPLITTERの例を示します。

DROP TABLE employees;

CREATE EXTERNAL TABLE employees (
EMPLOYEE_ID INT,
FIRST_NAME  STRING,
LAST_NAME   STRING,
SALARY      DOUBLE,
HIRE_DATE   TIMESTAMP,
JOB_ID      STRING
)
STORED BY 'oracle.hcat.osh.OracleStorageHandler'

WITH SERDEPROPERTIES (
'oracle.hcat.osh.columns.mapping' = 'employee_id,first_name,last_name,salary,hire_date,job_id')

TBLPROPERTIES (
'mapreduce.jdbc.url' = 'jdbc:oracle:thin:@localhost:1521:orcl',
'mapreduce.jdbc.username' = 'hr',
'mapreduce.jdbc.password' = 'hr',
'mapreduce.jdbc.input.table.name' = 'EMPLOYEES',
'oracle.hcat.osh.splitterKind' = 'ROW_SPLITTER',
'oracle.hcat.osh.rowsPerSplit' = '1500'
);

9.4.1.2 スプリッタの選択

SINGLE_SPLITTERは、Hive外部表の表プロパティにスプリッタが指定されておらず、かつターゲットOracle表がパーティション化されていない場合に、デフォルトで使用されます。

パーティション化されていない表の場合、oracle.hcat.osh.maxSplitsのデフォルト値は1になります。パーティション化されている表の場合、同じもののデフォルト値は64であり、デフォルトのスプリッタはPARTITION_SPLITTERになります。Oracleサーバーへの接続数を制限するために、maxSplitsのデフォルトが設定されます。この制限を大きくするには、Hive表プロパティでoracle.hcat.osh.maxSplitsの値を明示的に増やす必要があります。

Hive外部表にスプリッタの種類を選択する場合は、次のガイドラインを使用します。

スプリッタの種類

使用

SINGLE_SPLITTER

並列度が不要な場合。

PARTITION_SPLITTER

ターゲット表がパーティション化されている場合に、デフォルトで使用されます

BLOCK_SPLITTER

OracleユーザーにSYS.DBA_EXTENTSに対するSELECT権限があり、ターゲット表がパーティション化されていない場合。

ROW_SPLITTER

OracleユーザーにSYS.DBA_EXTENTSに対するSELECT権限がない場合。

9.4.1.3 述語のプッシュダウン

述語のプッシュダウンは最適化の手法であり、問合せのときにOracle Databaseによって評価されるよう、述語(WHERE条件)をプッシュダウンします。これにより、問合せの実行時に、Oracle DatabaseからHiveにフェッチされるデータ量が最小化されます。

述語のプッシュダウンを有効化するには、構成プロパティhive.optimize.ppdをtrueまたはfalseのいずれかに設定します。hive-1.1.0のデフォルト値は、trueに設定されています。このため、述語のプッシュダウンは、無効化しないかぎり常に実行されます。

注意:

OTA4Hでは、使用可能なすべての述語をプッシュダウンするわけではありません。実行計画のうち、外部表として宣言されたOracle表に関連する部分のみが考慮されます。また、OTA4Hでは、Oracle SQLエンジンおよび各分割タスクについての副問合せがリライトされます。1つの列に対する単一条件内に演算子>、=、<を含む現在の条件(たとえば、key > 10)、またはANDで区切られた複数条件の組合せ(たとえば、key > 10 AND key < 20 AND key !=17)がプッシュダウンされます。

Oracle Databaseからフェッチされるデータの量を削減するための別のオプションとして、表を作成するとき、TBLPROPERTY mapreduce.jdbc.input.conditionsを使用して条件を指定できます。次に例を示します。

mapreduce.jdbc.input.conditions = 'key > 10 OR key = 0'。

これにより、指定された条件に基づいて実行されるすべての問合せについて、Oracle Databaseからフェッチされる行が制限されます。作成される外部表は、Oracle Databaseでのビューに類似しています。このアプローチは、分析できないためにOTA4Hによって自動的にプッシュダウンできない複合述語をプッシュダウンする場合にのみ、役立ちます。

表レベルの述語のプッシュダウン

表レベルの述語のプッシュダウンを有効化するには、TBLPROPERTY mapreduce.jdbc.input.conditionsを使用して、表を作成するときに条件を指定する必要があります。

次に例を示します。

mapreduce.jdbc.input.conditions = 'key > 10 OR key = 0'。

これにより、指定された条件に基づいて実行されるすべての問合せについて、Oracle Databaseからフェッチされる行が制限されます。作成される表は、Oracleデータベースのビューと類似したものになります。

ただし、表レベルの述語のプッシュダウンは、述語(WHERE句)が問合せで指定されている場合、無視されます。

9.4.1.4 予測のプッシュダウン

予測のプッシュダウンは、問合せの実行時に、Oracle Databaseから必要な列のみをフェッチする最適化の手法です。問合せ時にすべての列をフェッチする必要がある場合は(非推奨)、hive.io.file.read.all.columns接続プロパティをtrueに設定して無効化できます。Hive-1.1.0では、このプロパティはデフォルトでfalseに設定されています。

9.4.1.5 パーティション・プルーニング

従業員データ・パーティション表を参照すると、問合せに関係のないパーティションは、パーティション・リストから削除されます。EXPLAIN PLANを問合せに対して実行し、問合せに関連するパーティションとサブパーティションのリストを取得することによって、このことが行われます。

表レベルのパーティション・プルーニングでは、表レベルの述語のプッシュダウンを使用する一方で、問合せレベルでのパーティション・プルーニングでは、問合せレベルの述語のプッシュダウンを使用します。

パーティション・プルーニングは、WHERE句でパーティション化キーを使用するSELECT問合せが実行されるとアクティブになります。次に、パーティション・プルーニングの例を示します。

給与が前述の範囲内であるパーティションを問い合せて、その他のパーティションをプルーニングするには、次の手順を実行します。

Hive外部表:

CREATE EXTERNAL TABLE EmployeeDataPartitioned (
Emp_ID int,
First_Name string,
Last_Name string,
Job_Title string,
Salary int
)
STORED BY 'oracle.hcat.osh.OracleStorageHandler'
WITH SERDEPROPERTIES (
'oracle.hcat.osh.columns.mapping' = 'Emp_ID,First_Name,Last_Name,Job_Title,Salary')
TBLPROPERTIES (
'mapreduce.jdbc.url' = '${hiveconf:connection_string}',
'mapreduce.jdbc.username' = '${hiveconf:oracle_user}',
'mapreduce.jdbc.password' = '${hiveconf:oracle_pwd}',
'mapreduce.jdbc.input.table.name' = 'EmployeeData',
'oracle.hcat.osh.oosKind' = 'PARTITIONED_TABLE'
);

次のSELECT文では、給与が72000から78000の範囲内のパーティションを問い合せ、その他のパーティションをプルーニングする方法を示しています。

select * from EmployeeDataPartitioned where salary > 72000 and salary < 78000;

9.4.2 スマート接続管理

接続キャッシュ

各マップ・タスクは、独自のJVMで実行されます。これに対応して、各JVMでは、同じ問合せ内で再利用可能なOracle Databaseへの単一の接続をキャッシュします。マッパーでは新しい接続を確立する前にキャッシュをチェックし、問合せの実行が完了すると、キャッシュは実行されません。

Oracle RAC認識

JDBCおよびUCPでは、様々なOracle RACインスタンスが認識されます。このことは、JDBCに送信される問合せを分割するために使用できます。StorageHandlerは、ロード・バランシングについてリスナーに依存します。

レプリケーション

レプリケートされたデータベース内の複数インスタンスにわたって問合せを分散し、並列化を実現できます。

ログオン・ストームの処理

Hadoopを使用すると、データベースに接続を試行するマッパーの数を制限できます。Hadoopにより、データベースへの接続を試行するマッパーの数を制限するには、oracle.hcat.osh.maxSplitsを使用します。このパラメータは、並行性の程度を制御します。ただし、同じ問合せの後続タスクでは、問合せのシステム・コミット番号(SCN)当たりの表のグラニュルを問い合せることが保証されます。これにより、結果セットの一貫性が保証されます。

データベース常駐接続プーリング(DRCP)

OTA4HにDRCPを構成し、専用にする接続の最大数を制限することをお薦めします。

データベース常駐接続プーリングの構成
DRCPを構成するには、次の手順を実行します。

1. SYSDBAとしてログインします。

2. デフォルト設定でDBMS_CONNECTION_POOL.START_POOLを使用し、デフォルト・プールSYS_DEFAULT_CONNECTION_POOLを開始します。
デフォルト設定でDBMS_CONNECTION_POOL.MINSIZEおよびDBMS_CONNECTION_POOL.MAXSIZEを使用できます。

注意:
DRCPの構成の詳細は、『Oracle Database管理者ガイド』を参照してください。

9.4.3 セキュリティ機能

OTA4Hのセキュリティ機能は、次のとおりです。

9.4.3.1 認証の改善

OTA4Hでは、Oracle Databaseへの接続にOracle JDBCドライバを使用します。これにより、Oracle JDBCでサポートされているすべての認証方式が提供されます。OTA4Hでは、Basic認証(ユーザー名とパスワード)、Oracle WalletおよびKerberosを使用した認証がサポートされています。oracle.hcat.osh.authentication表プロパティを使用して、Hiveで作成された表に使用する認証を指定できます。このことは、厳密認証の場合にのみ役立ちます。

- Kerberos

- Oracle Wallet

- Basic認証

注意:
Kerberosなどの厳密認証を使用することをお薦めします。

次に、様々な認証プロセスについて例をあげて説明します。

1. Kerberos
Hadoopエンジン・プロセスのKerberos資格証明を使用します。このプリンシパルには、表へのアクセス権が必要です。

関連項目:

Kerberos用のデータベースの構成およびクライアント・パラメータの詳細は、『Oracle Database JDBC開発者ガイド』を参照してください

Hive上でKerberos構成を有効化するには、hive-env.shに次を追加します。

export HADOOP_OPTS="$HADOOP_OPTS -Djava.security.krb5.conf=<path to kerberos configuration>

子JVMを有効化してKerberos構成を使用するには、mapred-site.xmlを編集して、クラスタのすべてのノードについて次のプロパティを組み込みます。

<property><name>mapred.child.java.opts</name>  <value>-Djava.security.krb5.conf=<path to kerberos configuration>></value></property>

BDAでは、Cloudera Managerを使用してこれらの構成を有効化します。

次に、Kerberos認証の例を示します。

CREATE EXTERNAL TABLE kerb_example (
id DECIMAL,
name STRING,
salary DECIMAL
)
STORED BY 'oracle.hcat.osh.OracleStorageHandler'
WITH SERDEPROPERTIES (
'oracle.hcat.osh.columns.mapping' = 'id,name,salary')
TBLPROPERTIES (
'mapreduce.jdbc.url' = 'jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)
(HOST=adc*******.xxxxxx.com)(PORT=5521))(CONNECT_DATA=
(SERVICE_NAME=project_name.xxx.rdbms.xxxx.com)))',
'mapreduce.jdbc.input.table.name' = 'kerb_example',
'mapreduce.jdbc.username' = 'CLIENT@xxxxxx.COM',
'oracle.hcat.osh.authentication' = 'KERBEROS',
'oracle.net.kerberos5_cc_name' = '/tmp/krb5cc_xxxxx',
'java.security.krb5.conf' = '/home/user/kerberos/krb5.conf',
'oracle.hcat.osh.kerb.callback' = 'KrbCallbackHandler',
'sun.security.krb5.principal' = 'CLIENT@xxxxx.COM'
);

oracle.security.krb5.confで指定されているパスは、クラスタのすべてのノードからアクセス可能である必要があります。また、これらのパスは、Oracle Databaseのsqlnet.ora内の対応するプロパティのパスと一致する必要もあります。sqlnet.oraで指定されているkeytabパスも、クラスタのすべてのノードからアクセス可能である必要があります。

sun.security.krb5.principalが指定されていない場合、OTA4Hでは、oracle.net.kerberos5_cc_nameプロパティで指定されている資格証明キャッシュ内のデフォルト・プリンシパルを使用して、認証が試行されます。

注意:

callbackは、oracle.net.kerberos5_cc_namepropertyで指定されている資格証明キャッシュから取得されるチケットを使用して、principalを認証できない場合にのみ、呼び出されます。

次に、単純なコールバック・ハンドラ・クラスを示します(コールバック・クラスは、Hiveクラスパスに使用可能である必要があります)。

class KrbCallbackHandler
implements CallbackHandler{

@Override
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException{
for (int i = 0; i < callbacks.length; i++){
if (callbacks[i] instanceof PasswordCallback){
PasswordCallback pc = (PasswordCallback)callbacks[i];
System.out.println("set password to 'welcome'");
pc.setPassword((new String("welcome")).toCharArray());
} else if (callbacks[i] instanceof NameCallback) {
((NameCallback)callbacks[i]).setName("client@xxxxx.COM");
}else{
throw new UnsupportedCallbackException(callbacks[i],
"Unrecognized Callback");
}
}
}

2. Oracle Wallet
ウォレットは、各エンジン・プロセスのOS環境で使用可能である必要があります。次に、ウォレット認証の追加方法の例を示します。

CREATE EXTERNAL TABLE wallet_example (
id DECIMAL,
name STRING,
salary DECIMAL
)
STORED BY 'oracle.hcat.osh.OracleStorageHandler'
WITH SERDEPROPERTIES (
'oracle.hcat.osh.columns.mapping' = 'id,name,salary')
TBLPROPERTIES (
'mapreduce.jdbc.url' = 'jdbc:oracle:thin:/@inst1',
'mapreduce.jdbc.input.table.name' = 'wallet_example',
'oracle.hcat.osh.authentication' = 'ORACLE_WALLET',
'oracle.net.tns_admin' = '/scratch/user/view_storage/user_project6/work',
'oracle.net.wallet_location' = '/scratch/user/view_storage/user_project6/work'
);

注意:
oracle.net.tns_adminおよびoracle.net.wallet_locationで指定されているパスは、クラスタのすべてのノードからアクセス可能である必要があります。

関連項目:

『Oracle Databaseセキュリティ・ガイド』のパスワード資格証明のためのSecure External Password Storeの管理に関する項。

3. Basic認証(デモ専用)
これは、HCatalog TBLPROPERTIESに格納されているか、またはHiveQL SELECT文で指定されます。

Basic認証を使用する場合、Oracleスキーマのユーザー名とパスワードは、Hive外部表プロパティで指定されます。

注意:

これは、パスワードがHCatalog内にクリア・テキストで格納されるため、本番環境ではお薦めしません。

9.5 OTA4HでのHiveQLの使用方法

HiveQLは、Hiveで提供されるSQLに類似した言語です。これは、OTA4Hを使用して作成されたHive外部表を問い合せるために使用できます。

リソース・マネージャのWebインタフェースをブラウザ(http://bigdatalite.localdomain:8088/cluster)で実行して、BDAで実行中の問合せのステータスを追跡できます。

問合せのログは、Cloudera Managerで確認することもでき、この場合、HiveQLでの問合せに対応してOracle Databaseに送信された実際の問合せも示されます。HiveおよびOTA4Hでは、ロギング用のslf4jフレームワークが使用されます。Hiveのロギング構成の手法を使用して、OTA4H関連クラスのロギング・レベルを制御できます。

9.6 OTA4HでのSpark SQLの使用方法

Sparkは、高速化するために設計された汎用のクラスタ・プログラミング・プラットフォームです。Sparkを使用すると、ユーザーはメモリーからデータをロードしたり、問合せを実行できます。Sparkでは、同じエンジンで、対話型問合せやバッチ・アプリケーションなど、様々なワークロードを処理できます。

Spark SQLを使用すると、Sparkを使用して、SQLおよびHiveSQLで表されたリレーショナル問合せを実行できるようになります。Spark SQLを使用すると、Java、PythonおよびScalaの単一のアプリケーションで、SQL問合せと、Resilient Distributed Datasets (RDD)によってサポートされているプログラム的なデータ操作を組み合せることができます。

Spark SQLを使用すると、SQLまたはHiveQLを使用してリレーショナル問合せを実行できます。これは、OTA4Hを使用して作成された外部表を問い合せるためにも使用できます。

問合せを実行する前に、BigDataLite-4.2 VM上でSpark-SQLを構成するには、次の手順を実行します。

1. /usr/lib/spark/bin/compute-classpath.sh内のCLASSPATHに、ojdbc7.jarおよびosh.jarを追加します

CLASSPATH="$CLASSPATH:/opt/oracle/ota4h/lib/osh.jar"
CLASSPATH="$CLASSPATH:/opt/oracle/ota4h/lib/ojdbc7.jar"

2. /usr/lib/spark/conf/spark-env.shでSPARK_HOMEを編集します

export SPARK_HOME=/usr/lib/spark:/etc/hive/conf

3. /usr/lib/spark/conf/spark-env.shで追加の環境変数を指定する必要があります。
追加する必要のあるHive関連変数が、太字で示されています。ファイルには、Hadoop関連環境変数がすでに含まれています。

export DEFAULT_HADOOP=/usr/lib/hadoop
export DEFAULT_HIVE=/usr/lib/hive
export DEFAULT_HADOOP_CONF=/etc/hadoop/conf
export DEFAULT_HIVE_CONF=/etc/hive/conf
export HADOOP_HOME=${HADOOP_HOME:-$DEFAULT_HADOOP}
export HADOOP_HDFS_HOME=${HADOOP_HDFS_HOME:-${HADOOP_HOME}/../hadoop-hdfs}
export HADOOP_MAPRED_HOME=${HADOOP_MAPRED_HOME:-${HADOOP_HOME}/../hadoop-mapreduce}
export HADOOP_YARN_HOME=${HADOOP_YARN_HOME:-${HADOOP_HOME}/../hadoop-yarn}
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-$DEFAULT_HADOOP_CONF}
export HIVE_CONF_DIR=${HIVE_CONF_DIR:-$DEFAULT_HIVE_CONF}

CLASSPATH="$CLASSPATH:$HIVE_CONF_DIR"
CLASSPATH="$CLASSPATH:$HADOOP_CONF_DIR"

if [ "x" != "x$YARN_CONF_DIR" ]; then
CLASSPATH="$CLASSPATH:$YARN_CONF_DIR"
fi

# Let's make sure that all needed hadoop libs are added properly
CLASSPATH="$CLASSPATH:$HADOOP_HOME/client/*"
CLASSPATH="$CLASSPATH:$HIVE_HOME/lib/*"
CLASSPATH="$CLASSPATH:$($HADOOP_HOME/bin/hadoop classpath)"

構成後、デモの/shell/*QuerySpark.shに含まれているスクリプトを使用して、Spark SQLに対していくつかのサンプル問合せを実行できます。デフォルトでは、Sparkにより、問合せがコンソール上に出力されます。この動作を変更するには、Sparkロギング構成ファイル/usr/lib/spark/conf/log4j.propertiesを編集できます。

OracleRecordReaderによって出力されるログには、次のようにOracle Databaseに送信される実際の問合せが示されます。

15/03/18 10:36:08 INFO OracleRecordReader: Reading records from Oracle Table using Query: SELECT FIRST_NAME, LAST_NAME, EMP_ID FROM EmployeeData

用語集

Apache Flume

ほぼあらゆるソースからHDFSやHBaseなどのデータ・ストアにデータを収集して集計するための分散サービス。

「Apache HBase」、「HDFS」も参照してください。

Apache HBase

CDHクラスタ内に格納されている大量の疎データに対して、ランダムな読取り/書込みアクセス権を提供するオープンソースの列指向データベース。キーによる値の高速ルックアップを備え、1秒当たり何千件もの挿入、更新、削除操作を実行できます。

Apache Hive

CDHのオープンソース・データ・ウェアハウスで、HDFS内に格納されているデータのデータ要約、アドホック問合せおよびデータ分析をサポートします。HiveQLと呼ばれるSQLライクな言語を使用します。インタプリタによって、HiveQL問合せからMapReduceコードが生成されます。

Hiveを使用することにより、MapReduceプログラムをJavaで記述しないですみます。

「Hive Thrift」、「MapReduce」も参照してください。

Apache Sentry

HiveおよびImpala SQL問合せエンジンと統合され、Hadoopに格納されているデータおよびメタデータに対するファイングレイン認証の機能を備えています。

Apache Solr

全文検索、ファセット検索、地理空間検索およびヒットの強調表示を含むエンタープライズ検索プラットフォームを提供します。

Apache Spark

大規模なデータを処理するための高速エンジン。Java、ScalaおよびPythonアプリケーションをサポートします。インメモリー・クラスタ・コンピューティングにプリミティブを提供するため、特に機械学習アルゴリズムに適しています。MapReduceと比べて、最大で100倍速いパフォーマンスが約束されます。

Apache Sqoop

HDFSまたはHiveと構造化データベースとの間でデータのインポートとエクスポートを行うコマンドライン・ツール。Sqoopという名前は、"SQL to Hadoop"に由来します。Oracle R Advanced Analytics for Hadoopでは、Sqoopの実行可能ファイルを使用して、HDFSとOracle Databaseの間のデータ移行を行います。

Apache YARN

MapReduceの更新バージョン。MapReduce 2とも呼ばれます。この略語は、Yet Another Resource Negotiatorを表します。

ASR

Oracle Auto Service Requestは、ハードウェアの状態を監視し、問題を検出すると自動的にサービス・リクエストを生成するソフトウェア・ツールです。

「OASM」も参照してください。

バランサ

クラスタ内のすべてのノードに、設定範囲内でほぼ同量のデータが格納されるようにするサービス。データは、ノード内のディスク間ではなく、クラスタ内のノード間で分散されます。

CDH

Cloudera's Distribution including Apache Hadoopは、Oracle Big Data ApplianceにインストールされるApache Hadoopおよび関連コンポーネントです。

Cloudera Hue

Hadoop User Experienceは、複数のアプリケーション(HDFSファイル・ブラウザ、ジョブ・ブラウザ、アカウント管理ツール、MapReduceジョブ・デザイナ、Hiveウィザードなど)を含むCDHのWebユーザー・インタフェースです。Cloudera ManagerでHueを実行します。

「HDFS」、「Apache Hive」も参照してください。

Cloudera Impala

大規模並列処理が可能な問合せエンジン。データを移動または変換することなく、HDFSとHBaseのデータに対するSQL問合せのパフォーマンスが向上します。

Cloudera Manager

Cloudera Managerを使用すると、クラスタ内のCDHサービスを監視、診断および管理できます。

Oracle Big Data Appliance上のCloudera ManagerエージェントはOracle Enterprise Managerに情報も提供するため、この情報を使用してソフトウェアとハードウェアの両方を監視できます。

Cloudera Navigator

Hiveメタデータや、HDFS、HiveまたはHBaseを介してアクセスされるHDFSデータなど、Hadoopに格納されているデータへのアクセス権と監査アクセス権を検証します。

Cloudera Search

Hadoopに格納されているデータに対する検索およびナビゲーション・ツールとして機能します。Apache Solrに基づきます。

Cloudera's Distribution including Apache Hadoop (CDH)

「CDH」を参照してください。

クラスタ

連携して機能するように構成された、ネットワーク上のサーバーのグループ。サーバーは、マスター・ノードまたはワーカー・ノードのいずれかです。

Oracle Big Data Applianceのラック内にあるすべてのサーバーがクラスタを構成します。サーバー1、2および3はマスター・ノードです。サーバー4から18はワーカー・ノードです。

「Hadoop」を参照してください。

DataNode

HDFSにデータを格納する、CDHクラスタ内のサーバー。DataNodeは、NameNodeによって割り当てられたファイル・システム操作を実行します。

HDFS、NameNodeも参照してください。

Flume

「Apache Flume」を参照してください。

Hadoop

ファイルを格納し、サーバーのグループ全体でワークロードを分散するバッチ処理インフラストラクチャ。Oracle Big Data Applianceでは、Cloudera's Distribution including Apache Hadoop (CDH)を使用します。

Hadoop Distributed File System (HDFS)

「HDFS」を参照してください。

Hadoop User Experience (Hue)

「Cloudera Hue」を参照してください。

HBase

「Apache HBase」を参照してください。

HDFS

Hadoop Distributed File Systemは、ストリーミング型のデータ・アクセス・パターンによって、非常に大きなデータ・ファイル(メガバイトからペタバイト)を格納するために設計された、オープンソース・ファイル・システムです。HDFSは、これらのファイルを複数のデータ・ブロックに分割し、そのブロックをCDHクラスタ全体に分散します。

1つのデータ・セットが1台のコンピュータのストレージ容量よりも大きい場合は、複数のコンピュータにまたがって分割する必要があります。分散ファイル・システムでは、コンピュータのネットワーク全体にわたって、データ・セットのストレージを管理できます。

「クラスタ」も参照してください。

Hive

「Apache Hive」を参照してください。

Hive Thrift

Hive問合せで使用するCDHへのリモート・アクセス用のリモート・プロシージャ・コール(RPC)インタフェースです。

「CDH」、「Apache Hive」も参照してください。

HiveQL

Hiveで使用されるSQLライクな問合せ言語です。

「Apache Hive」も参照してください。

HotSpot

Oracleが保守および配布するJava仮想マシン(JVM)。頻繁に実行されるコードを自動的に最適化して、優れたパフォーマンスを実現します。HotSpotは、Oracle Big Data Applianceスタックのその他のコンポーネントの標準JVMです。

Hue

「Cloudera Hue」を参照してください。

Impala

「Cloudera Impala」を参照してください。

Java HotSpot仮想マシン

「HotSpot」を参照してください。

JobTracker

タスクをCDHクラスタ内の特定のノード(データを格納するノードが望ましい)に割り当てるサービスです。MRv1のみ。

Hadoop、MapReduceも参照してください。

Kerberos

悪質な偽装の防止に効果的なネットワーク認証プロトコル。Massachusetts Institute of Technology (MIT)で開発されました。

Mahout

Apache Mahoutは、クラスタリング、分類、およびバッチベースの共同フィルタに必要なコア・アルゴリズムを含むマシン・ラーニング・ライブラリです。

MapReduce

分散システム上でデータを処理する並列プログラミング・モデル。MapReduce 1とYARN (MapReduce 2)の2つのバージョンのMapReduceを使用できます。Oracle Big Data Appliance 3.0以上のデフォルトのバージョンはYARNです。

MapReduceプログラムには、次の機能が含まれています。

- マッパー: データ・セットのレコードを処理します。

- リデューサ: 複数のマッパーからの出力をマージします。

- コンバイナ: リデューサに送信する前に、マッパーからの結果セットを最適化します(オプションであり、すべてのアプリケーションでサポートされているわけではありません)。

「Apache YARN」も参照してください。

MySQLデータベース

SQLベースのリレーショナル・データベース管理システム。Cloudera Manager、Oracle Data Integrator、HiveおよびOozieは、Oracle Big Data Appliance上で、MySQL Databaseをメタデータ・リポジトリとして使用します。

NameNode

HDFS内のすべてのファイルのディレクトリを保持し、CDHクラスタ内でのデータの格納場所を追跡するサービスです。

「HDFS」も参照してください。

Navigator

「Cloudera Navigator」を参照してください。

ノード

CDHクラスタ内のサーバーです。

「クラスタ」も参照してください。

NodeManager

各ノード上で実行され、ResourceManagerによって割り当てられたタスクを実行するサービスです。YARNのみ。

「ResourceManager」、「YARN」も参照してください。

NoSQL Database

Oracle NoSQL Databaseを参照してください。

OASM

Oracle Automated Service Managerは、Oracle Sunハードウェア・システムの状態を監視するサービスです。以前は、Sun Automatic Service Manager (SASM)と呼ばれていました。

Oozie

CDHにおけるデータ処理のジョブを管理するための、オープンソースのワークフローおよびコーディネーション・サービスです。

Oracle Database Instant Client

標準のOracle DatabaseクライアントなしでOracleアプリケーションを実行できるようにするスモール・フットプリント・クライアントです。

Oracle Linux

オープンソース・オペレーティング・システム。Oracle Linux 5.6は、Exalogic 1.1.で使用されているバージョンと同じです。Oracle Unbreakable Enterprise Kernelを備えています。

Oracle NoSQL Database

高速なデータ問合せ(通常はキー検索による)をサポートする、分散型のキー値データベースです。

Oracle R Distribution

統計分析とグラフ作成に対応したオープンソースの言語および環境Rの、Oracle対応ディストリビューションです。

Oracle R Enterprise

Oracle Advanced Analytics Optionのコンポーネント。これを使用すると、RユーザーはRコマンドおよびスクリプトを実行して、Oracleデータベースに格納されているデータの統計分析やグラフ分析ができます。

Pig

大規模なデータ・セットを分析するためのオープンソース・プラットフォームで、次のものから構成されます。

- Pig Latinスクリプト言語

- Pig LatinスクリプトをMapReduceジョブに変換するPigインタプリタ

Pigは、クライアント・アプリケーションとして動作します。

「MapReduce」も参照してください。

Puppet

クラスタ全体にソフトウェア・コンポーネントをデプロイおよび構成するための構成管理ツール。Oracle Big Data Applianceの初期ソフトウェア・インストールでは、Puppetを使用します。

Puppetツールは、Puppetエージェント(通常は単にPuppetと呼ばれる)、Puppetマスター・サーバー、コンソールおよびクラウド・プロビジョナの各コンポーネントで構成されます。

Puppetエージェント、Puppetマスターも参照してください。

Puppetエージェント

主にPuppetマスターから構成を取得して、それを適用するサービスです。Puppetエージェントは、Oracle Big Data Appliance内の各サーバー上で動作します。

Puppet、Puppetマスターも参照してください。

Puppetマスター

主に、Puppetエージェントに構成を提供するサービスです。

Puppet、Puppetエージェントも参照してください。

ResourceManager

タスクをCDHクラスタ内の特定のノード(データを格納するノードが望ましい)に割り当てるサービスです。YARNのみ。

「Hadoop」、「YARN」も参照してください。

検索

「Cloudera Search」を参照してください。

Sentry

「Apache Sentry」を参照してください。

Solr

「Apache Solr」を参照してください。

Spark

「Apache Spark」を参照してください。

Sqoop

「Apache Sqoop」を参照してください。

表

Hiveでは、HDFS内に格納されているディレクトリ内のすべてのファイルです。

「HDFS」も参照してください。

TaskTracker

各ノード上で実行され、JobTrackerサービスによって割り当てられたタスクを実行するサービスです。MRv1のみ。

「JobTracker」も参照してください。

Whirr

Apache Whirrは、クラウド・サービスを実行するための一連のライブラリです。

YARN

「Apache YARN」を参照してください。

ZooKeeper

CDHの分散プロセス向けのMapReduce 1の一元的なコーディネーション・サービスで、構成情報とネーミングを保持し、分散同期サービスとグループ・サービスを提供します。

索引

A B C D E F G H I J K L M N O P R S T U W X Y Z

A

- アクセス・ドライバ [1]

- ACCESS PARAMETERS句

- 特殊文字 [1]

- 構文ルール [1]

- ACCESS PARAMETERS句

- 構文 [1]

- アクティビティ・レポート [1]

- ALL_HIVE_COLUMNSビュー[1]

- ALL_HIVE_DATABASESビュー [1]

- ALL_HIVE_TABLESビュー [1] , [2]

- Apache Sentry [1]

- アプリケーション・アダプタ [1]

- アプリケーション

- データのプル [1] , [2]

- データのプッシュ [1]

- 配列オーバーフロー [1]

- サービスから収集されたデータの監査 [1]

- Audit Vault

- プラグイン構成 [1]

- Audit Vaultプラグイン [1]

- 認証 [1]

- 認可 [1]

- autoAnalyze構成プロパティ [1]

- autoAnalyzeプロパティ [1]

- autoBalance構成プロパティ [1]

- Automated Service Manager [1]

B

- bdadiagユーティリティ [1]

- Berkeley DB [1]

- ベスト・プラクティス [1]

- ビッグ・データの説明 [1]

- バイナリ・オーバーフロー [1]

- ビジネス・インテリジェンス [1] , [2] , [3]

- byteWeight構成プロパティ [1]

C

- カタログ・ビュー [1]

- CDH

- 概要 [1]

- 診断情報 [1]

- ファイル・システム [1]

- リモート・クライアント・アクセス [1]

- セキュリティ [1]

- version [1]

- 文字オーバーフロー [1]

- 分割されたキー [1]

- ファイルのチャンク化 [1]

- クライアント・アクセス

- HDFSクラスタ [1]

- HDFSの保護されたクラスタ [1]

- Hive [1]

- クライアント構成 [1]

- Cloudera Manager

- 概要 [1]

- 管理ツールへのアクセス [1]

- 接続 [1]

- ハードウェア障害の影響 [1]

- ソフトウェアの依存性 [1]

- 起動 [1]

- UIの概要 [1]

- version [1]

- Cloudera's Distribution including Apache Hadoop [1]

- クラスタ, 定義 [1]

- 列マッピング [1]

- com.oracle.bigdata.colmap [1]

- com.oracle.bigdata.datamode [1]

- com.oracle.bigdata.erroropt [1]

- com.oracle.bigdata.fields [1]

- com.oracle.bigdata.fileformat [1]

- com.oracle.bigdata.log.exec [1]

- com.oracle.bigdata.log.qc [1]

- com.oracle.bigdata.overflow [1]

- com.oracle.bigdata.rowformat [1]

- com.oracle.bigdata.tablename [1]

- 共通ディレクトリ [1]

- confidence構成プロパティ [1]

- カウンティング・リデューサ [1]

- CREATE_EXTDDL_FOR_HIVE関数

- 構文 [1]

- CREATE TABLE ORGANIZATION EXTERNAL構文 [1] , [2]

- CREATE TABLE文

- Hive用の自動生成 [1]

D

- データ・ディクショナリ・ビュー [1]

- データ・モード [1]

- DataNode [1]

- データ・レプリケーション [1]

- データ・スキュー [1]

- データ・ソース名 [1]

- データ型変換(Big Data SQL) [1]

- データ型(HDFS) [1]

- DBA_HIVE_COLUMNSビュー [1]

- DBA_HIVE_DATABASESビュー [1]

- DBA_HIVE_TABLESビュー [1]

- DBMS_HADOOPパッケージ [1]

- DBMS_OUTPUTパッケージ [1]

- DEFAULT DIRECTORY句 [1]

- デリミタ付きテキスト・ファイル [1]

- 診断情報, 収集 [1]

- ディスク [1]

- dnsmasqサービス [1]

- データの複製 [1]

E

- emcliユーティリティ [1]

- enableSorting構成プロパティ [1]

- 暗号化 [1] , [2]

- エンジアド・システム [1]

- エラー処理 [1]

- エラー処理(Big Data SQL) [1]

- Exadata Database Machine [1]

- Exadataのインフィニバンド接続 [1]

- Exalytics In-Memory Machine [1]

- 外部表

- 概要 [1]

F

- フェイルオーバー

- JobTracker [1]

- NameNode [1]

- feedbackDir構成プロパティ [1]

- フィールド抽出 [1]

- フィールド名 [1]

- ファイル, HDFSのリカバリ [1]

- 第1 NameNode [1]

- Flume [1]

- ftp.oracle.com [1]

G

- グループ [1] , [2]

H

- HADOOP_CLASSPATH環境変数 [1]

- Hadoop Distributed File System [1]

- hadoopグループ [1]

- Hadoopログ・ファイル [1]

- Hadoopのバージョン [1]

- HBase [1]

- HDFS

- 概要 [1] , [2]

- 監査 [1]

- HDFSでの透過的暗号化 [1] , [2]

- Oracleサポートからのヘルプ [1]

- Hive

- 概要 [1]

- 監査 [1]

- クライアント・アクセス [1]

- ノードの場所 [1]

- ソフトウェアの依存性 [1]

- 表 [1]

- ユーザーID [1]

- Hive列 [1]

- Hiveデータ

- Oracle Databaseからのアクセス [1]

- Hiveデータベース [1]

- hiveグループ [1]

- HiveQL [1]

- Hive表 [1]

- Hive表ソース [1]

- Hiveビュー [1]

- HotSpot [1]

- HTTPS/ネットワーク暗号化 [1]

- Hue

- ユーザー [1]

I

- Impala [1]

- Exadataへのインフィニバンド接続 [1]

- インフィニバンド・ネットワーク構成 [1]

- inputFormat.mapred.*構成プロパティ [1]

- CDHクライアントのインストール [1]

J

- Java HotSpot仮想マシン [1]

- Job Analyzer [1] , [2]

- jobconfPathプロパティ [1]

- ジョブ間隔 [1]

- jobHistoryPath構成プロパティ [1]

- JobTracker

- フェイルオーバー [1]

- セキュリティ [1]

- JobTrackerノード [1]

K

- Kerberos認証 [1]

- Kerberosのコマンド [1]

- Kerberosユーザー設定 [1]

- キー分割 [1]

- keyLoad.minChopBytes構成プロパティ [1]

- キー, リデュースへの割当て [1]

- キー/値データベース [1]

- keyWeight構成プロパティ [1]

- ナレッジ・モジュール [1]

L

- linearKeyLoad.*構成プロパティ [1]

- Linux

- ディスクの場所 [1]

- インストール [1]

- ロード [1]

- Load Balancer [1]

- データのロード [1] , [2]

- LOCATION句 [1]

- ログ・ファイル [1]

- ログイン権限 [1]

M

- map.tasksプロパティ [1]

- マッパー・ワークロード [1]

- mapred.map.tasks構成プロパティ [1]

- mapred構成プロパティ [1]

- MapReduce [1] , [2] , [3] , [4] , [5]

- mapreduce構成プロパティ [1]

- max.split.size構成プロパティ [1]

- maxLoadFactor構成プロパティ [1]

- maxSamplesPct構成プロパティ [1]

- minChopBytes構成プロパティ [1]

- minSplits構成プロパティ [1]

- アクティビティの監視 [1]

- マルチラック・クラスタ

- サービス・ロケーション [1]

- MySQLデータベース

- 概要 [1]

- ポート番号 [1]

- ユーザーID [1]

- version [1]

N

- NameNode

- 第1 [1]

- NameNodeフェイルオーバー [1]

- Navigator [1]

- NoSQLデータベース [1]

- numThreads構成プロパティ [1]

O

- OASM, ポート番号 [1]

- ODI [1]

- oinstallグループ [1]

- Oozie

- 監査 [1]

- ソフトウェアの依存性 [1]

- オペレーティング・システム・ユーザー [1]

- ORACLE_HDFSアクセス・ドライバ [1]

- ORACLE_HIVE

- アクセス・パラメータ [1]

- ORACLE_HIVEの例 [1]

- oracle.hadoop.balancer.*構成プロパティ [1]

- oracle.hadoop.balancer.autoAnalyzeプロパティ [1]

- oracle.hadoop.balancer.Balancerクラス [1]

- oracle.hadoop.balancer.KeyLoadLinearクラス [1]

- Oracle Audit Vault and Database Firewall

- プラグイン構成 [1]

- Oracle Automated Service Manager [1]

- Oracle Big Data SQL

- アクセス・ドライバ [1]

- データ型の変換 [1]

- 概要 [1] , [2]

- Oracle Exadata Machineでのインストールの変更 [1]

- セキュリティ [1]

- Oracle Database

- Hiveデータへのアクセス [1]

- Oracle Database Instant Client [1]

- Oracle Data Integrator

- 概要 [1] , [2]

- ノードの場所 [1]

- ソフトウェアの依存性 [1]

- version [1]

- Oracle Data Integratorエージェント [1]

- Oracle Exadata Database Machine [1] , [2]

- Oracle Exadata Machine

- Big Data SQLインストールの変更 [1]

- Oracle Exalytics In-Memory Machine [1]

- Oracle Linux

- 概要 [1]

- HDFSとの関係 [1]

- version [1]

- Oracle Loader for Hadoop [1] , [2]

- Oracle NoSQL Database

- 概要 [1] , [2]

- ポート番号 [1]

- version [1]

- Oracle R Advanced Analytics for Hadoop [1] , [2]

- Oracle R Enterprise [1]

- Oracle SQL Connector for HDFS [1]

- Oracleサポート, サービス・リクエストの作成 [1]

- oracleユーザー [1]

- Oracle XQuery for Hadoop [1] , [2]

- ORCファイル [1]

- out of heap spaceエラー [1]

- オーバーフロー処理 [1]

P

- Parquetファイル [1]

- HDFSファイルの解析 [1]

- パーティショニング [1] , [2]

- Perfect Balance

- アプリケーション要件 [1]

- 基本的な手順 [1]

- 説明 [1]

- PL/SQLパッケージ [1]

- プランニング・アプリケーション [1]

- ポート・マップ [1]

- ポート番号 [1]

- Exadataへのデータのプル [1] , [2]

- Puppet

- ポート番号 [1]

- セキュリティ [1]

- Puppetマスター

- ノードの場所 [1]

- Exadataへのデータのプッシュ [1]

- PUT_LINE関数 [1]

R

- レンジ・パーティション化 [1]

- RCファイル [1]

- R Connector [1]

- Rディストリビューション [1]

- HDFSファイルのリカバリ [1]

- リデューサ・ロード [1]

- REJECT LIMIT句 [1]

- リモート・クライアント・アクセス [1] , [2]

- データのレプリケート [1]

- report.overwrite構成プロパティ [1]

- reportPath構成プロパティ [1]

- リソース管理 [1] , [2]

- R言語のサポート [1]

- 行形式の説明 [1]

- 行形式 [1]

- rowWeight構成プロパティ [1]

- rpc.statdサービス [1]

S

- SDP, Exadataでの有効化 [1]

- SDPリスナー構成 [1]

- SDP overインフィニバンド [1]

- Search [1]

- セキュリティ [1]

- Sentry [1]

- 順序ファイル [1]

- SerDe解析 [1]

- サービス・リクエスト, CDH用に作成 [1]

- サービス

- 監査 [1]

- ノードの場所 [1]

- サービス・タグ [1]

- スキュー [1]

- SmartScan [1]

- SmartScanモード [1]

- Sockets Direct Protocol [1]

- ソフトウェア・コンポーネント [1]

- ソフトウェア・フレームワーク [1]

- ソフトウェア・サービス

- ノードの場所 [1]

- ポート番号 [1]

- ソース名 [1]

- Spark [1]

- Sqoop [1]

- sshサービス [1]

- 静的データ・ディクショナリ・ビュー [1]

- structオーバーフロー [1]

T

- 表 [1] , [2] , [3]

- テキスト・ファイル [1]

- テキスト・オーバーフロー [1]

- tmpDir構成プロパティ [1]

- tools.*構成プロパティ [1]

- ごみ箱機能 [1]

- ごみ箱機能, 無効化 [1]

- ごみ箱を空にする間隔 [1]

- CDHのトラブルシューティング [1]

- TYPE句 [1]

U

- unionオーバーフロー [1]

- 診断情報のアップロード [1]

- useClusterStats構成プロパティ [1]

- useMapreduceApi構成プロパティ [1]

- USER_HIVE_COLUMNSビュー [1]

- USER_HIVE_DATABASESビュー [1]

- USER_HIVE_TABLESビュー [1]

- Oracle Databaseからのユーザー・アクセス [1]

- ユーザー・アカウント [1]

- ユーザー・グループ [1]

- ユーザー

- Cloudera Manager [1]

- オペレーティング・システム [1]

W

- writeKeyBytes構成プロパティ [1]

X

- xinetdサービス [1]

- XQueryコネクタ [1]

Y

- YARNサポート [1]

Z

- ゾーン [1]

オラクルの法律上の注意点について

コピーライトについて

Copyright © 1994-2016, Oracle and/or its affiliates.All rights reserved.

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクルまでご連絡ください。

制限付権利について

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、Oracle Corporationおよびその関連会社は一切の責任を負いかねます。

商標と登録商標について

OracleおよびJavaはオラクルおよびその関連会社の登録商標です。その他の社名、商品名等は各社の商標または登録商標である場合があります。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

アルファ版およびベータ版ドラフト・ドキュメントについて

このドキュメントが試作版の場合:

このドキュメントは試作版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。Oracle Corporationおよびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

非公開のアルファ版およびベータ版ドラフト・ドキュメントについて

このドキュメントが非公開の試作版の場合:

このドキュメントに含まれる情報は、情報の共有のみを目的としたものであって、顧客諮問委員会(Customer Advisory Board)のメンバーとしてのお客様の立場でのみ、またはお客様のベータ・トライアル契約のみに従って検討されるべきものとします。マテリアル、コード、または機能の提供をお約束するものではなく、購入決定を行う際の判断材料とすべきではありません。このドキュメントに記載されている特徴または機能の開発、リリースおよび時期については、オラクルの裁量により決定されます。

このドキュメントには、ソフトウェアまたは印刷物などの形式を問わず、オラクルが独占的な権利を有する財産的情報が含まれています。この機密資料へのアクセスと使用は、お客様とオラクルとの間で締結され、お客様が遵守に同意した、Oracle Master Agreement、Oracle License and Oracle Services Agreement (オラクル・ライセンスおよびサービスに関する契約書)、Oracle PartnerNetwork Agreement、Oracle Distribution Agreementまたはその他のライセンス契約の条件に従うものとします。このドキュメントとその内容の開示、コピー、複製および配布には、オラクルによる事前の承諾を必要とします。このドキュメントはライセンス契約の一部となるものではなく、オラクルおよびその子会社や関連会社との契約を構成するものではありません。

ドキュメントのアクセシビリティについて

オラクルのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc を参照してください。

Oracle Supportへのアクセス

サポートをご契約のお客様には、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoか、聴覚に障害のあるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。