Oracle® Big Data Appliance

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

リリース4 (4.0)

E57728-01(原本部品番号:E55814-01)

2014年9月

Oracle Big Data Applianceのソフトウェア、ツールおよび管理手順に関する概要を説明します。

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

E57728-01

Copyright © 2011, 2014, 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および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の登録商標です。

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

Cloudera、Cloudera CDHおよびCloudera Managerは、Cloudera, Incの登録商標および商標です。

目次

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

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

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

第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 Connectors

- 1.5.2.1 Oracle SQL Connector for Hadoop Distributed File System

- 1.5.2.2 Oracle Loader for Hadoop

- 1.5.2.3 Oracle Data Integrator Application Adapter for Hadoop

- 1.5.2.4 Oracle XQuery for Hadoop

- 1.5.2.5 Oracle R Advanced Analytics for Hadoop

- 1.5.3 ビッグ・データに対する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 シングルラック・クラスタ上でサービスが実行される場所

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

- 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 クリティカル・ノードと非クリティカル・ノード

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

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

- 2.7.3 第1NameNode

- 2.7.4 第2NameNode

- 2.7.5 第1ResourceManager

- 2.7.6 第2ResourceManager

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

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

- 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 YARNからMapReduce 1への切替え

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

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

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

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

- 2.12.4 オンディスク暗号化について

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

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

- 2.13 Oracle Big Data Applianceの監査

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

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

- 2.13.3 Oracle Big Data Applianceの監視

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

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

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

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

- 3.2.1 前提条件

- 3.2.2 Oracle Exadata Database MachineでのCDHのインストール

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

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

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

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

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

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

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

- 3.4.1.1 保護されていないクラスタでのユーザーの作成

- 3.4.1.2 保護されたクラスタでのユーザーの作成

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

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

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

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

- 3.5.3 ごみ箱機能の無効化

- 3.5.3.1 ごみ箱機能の完全な無効化

- 3.5.3.2 ローカルのHDFSクライアントのごみ箱機能の無効化

- 3.5.3.3 リモートのHDFSクライアントのごみ箱機能の無効化

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を使用するためのJDBCクライアントの構成

- 4.7 インフィニバンド・ネットワーク上での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.1.1 Job Analyzerの実行方法

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

- 5.4.2.1 Job Analyzerユーティリティの例

- 5.4.2.2 Job Analyzerユーティリティの構文

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

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

- 5.4.3.2 追加メトリックの収集

- 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 Oracle Big Data SQLを使用したデータ・セキュリティについて

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

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

- 6.2.2 Oracle Big Data Applianceへのソフトウェアのインストール

- 6.2.3 Oracle Exadata Database Machineへのソフトウェアのインストール

- 6.2.3.1 bds-exa-installスクリプトの実行

- 6.2.3.2 bds-ex-installの構文

- 6.3 ビッグ・データにアクセスするための外部表の作成

- 6.3.1 基本的なCREATE TABLE構文について

- 6.3.2 Hive表の外部表の作成

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

- 6.3.2.2 CREATE_EXTDDL_FOR_HIVE関数の使用

- 6.3.2.3 ORACLE_HIVEのCREATE TABLE文の作成

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

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

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

- 6.4 外部表の句について

- 6.4.1 TYPE句

- 6.4.2 DEFAULT DIRECTORY句

- 6.4.3 LOCATION句

- 6.4.3.1 ORACLE_HDFS LOCATION句

- 6.4.3.2 ORACLE_HIVE LOCATION句

- 6.4.4 REJECT LIMIT句

- 6.4.5 ACCESS PARAMETERS句

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

- 6.6 外部表の問合せ

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

- 6.6.2 エラー処理の概要

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

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

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

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

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

- 6.7.3.1 bigdata.properties

- 6.7.3.2 bigdata-log4j.properties

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

- 6.7.5 権限について

7 Oracle Big Data SQLリファレンス

- DBMS_HADOOP PL/SQLパッケージ

- CREATE_EXTDDL_FOR_HIVE

- 例

- CREATE TABLE ACCESS PARAMETERS句

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

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

- ORACLE_HDFSのデフォルトのパラメータ設定

- ORACLE_HDFSのオプションのパラメータ設定

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

- ORACLE_HIVEのデフォルトのパラメータ設定

- ORACLE_HIVEのオプションのパラメータ値

- com.oracle.bigdata.colmap

- com.oracle.bigdata.datamode

- 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

- com.oracle.bigdata.tablename

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

- 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

用語集

索引

はじめに

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

対象読者

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

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

- データ・アナリスト

- データ科学者

- データベース管理者

- システム管理者

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

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWeb サイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

Oracleサポート・サービスでは、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)を参照してください。

関連ドキュメント

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

- 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について説明し、ルーチン管理タスクの手順を示します。ここには次の章が含まれます。

- 第1章「Oracle Big Data Applianceの概要」

- 第2章「Oracle Big Data Applianceの管理」

- 第3章「Oracle Big Data Applianceへのユーザー・アクセスのサポート」

- 第4章「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 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)実装を使用します。従来のMapReduce (MRv1)を使用することもできます。同じクラスタ内で両方の実装を使用することはできません。MapReduceとYARNサービスのいずれかをアクティブ化できます。

1.5.2 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 Application Adapter for Hadoop

関連項目:
『Oracle Big Data Connectorsユーザーズ・ガイド』

1.5.2.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.2.2 Oracle Loader for Hadoop

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

1.5.2.3 Oracle Data Integrator Application Adapter for Hadoop

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

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

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

1.5.2.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.2.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.3 ビッグ・データに対する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/welcome.html

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

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

関連項目:

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

- 次のOracle Databaseドキュメント・ライブラリのData WarehousingおよびBusiness Intelligenceに関するドキュメントを参照してください
http://www.oracle.com/pls/db112/portal.portal_db?selected=6&frame=

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の管理

- YARNからMapReduce 1への切替え

- 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を入力します。

http://bda1node03.example.com:7180

この例で、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に自動的にインストールおよび構成されます。Hueは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ユーザー・ガイドのURL
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.4 (アップグレードは5.8のまま)

- Java HotSpot Virtual Machine 7バージョン25 (JDK 7u25)

- Oracle R Distribution 3.0.1-2

- MySQL Database 5.5.35 Advanced Edition

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

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

Mammothインストール:

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

- Apache Hive 0.12

- Apache HBase

- Apache Sentry

- Apache Spark

- Cloudera Impala

- Cloudera Search 1.2.0

- Cloudera Manager Release 5 (5.1.1) 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.0.5 (オプション)

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

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

- Oracle Loader for Hadoop

- Oracle Data Integratorエージェント12.1.3.0

- Oracle XQuery for Hadoop

- Oracle R Advanced Analytics for Hadoop

関連項目:
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サイトからはダウンロードしないでください。

関連項目:
CDHコンポーネントの完全なリストについては、次を参照してください。
http://www.cloudera.com/content/cloudera/en/products-and-services/product-comparison.html

ただし、次のサービスは、使用前に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. ウィザードのステップに従います。

各クラスタの最初のサーバー上のRPMファイルは、/opt/oracle/BDAMammoth/bdarepo/RPMS/noarchにあります。

関連項目:
構成の手順の詳細は、次のサイトで『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構成のサービスについて説明します。

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

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

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

- MapReduceについて

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

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

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

表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

NodeManager脚注 1

NodeManager脚注 1

NodeManager

NodeManager

NodeManager

Oracle Data Integratorエージェント

Puppet

Puppet

Puppet

Puppet

Puppet

Puppet Master

ResourceManager

ResourceManager

ZooKeeper

ZooKeeper

ZooKeeper

脚注 1 スタータ・ラックおよび6ノード・クラスタのみ、割当て済リソースを減らした状態

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

複数のラックが単一のCDHクラスタとして構成される場合、いくつかの重要なサービスが第2ラックにインストールされます。第2ラックには少なくとも2つのノードが必要です。

表2-2は、マルチラック・クラスタの最初のラックで実行されるサービスの場所を示したものです。

表2-2 マルチラックCDHクラスタの最初のラックでのサービス・ロケーション

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

NodeManager

NodeManager

Puppet

Puppet

Puppet

Puppet

Puppet

Puppet Master

ResourceManager

ZooKeeper

ZooKeeper

脚注 1 nnには追加ラック内のサーバーが含まれます。

表2-3は、マルチラック・クラスタの第2ラックで実行されるサービス・ロケーションを示したものです。

表2-3 マルチラックCDHクラスタの第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脚注 1

NodeManager脚注 1

NodeManager

NodeManager

NodeManager

Oracle Data Integratorエージェント

Puppet

Puppet

Puppet

Puppet

Puppet

Puppet Master

ResourceManager

ZooKeeper

脚注 1 スタータ・ラックおよび6ノード・クラスタのみ、割当て済リソースを減らした状態

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

2.6.3 MapReduceについて

Yet Another Resource Negotiator (YARN)は、Oracle Big Data Appliance 3.0から始まるMapReduceのデフォルト・バージョンです。本番システムにはYARNを使用することをお薦めします。MapReduce 1 (MRv1)は下位互換性のためにサポートされていますが、手動でインストールする必要があります。同じクラスタ上で両方のバージョンのMapReduce (YARNとMRv1)を実行しないでください。

MapReduce 1を使用して開発されたMapReduceアプリケーションをYARNで実行するには、再コンパイルが必要な場合があります。

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

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

MRv1はMapReduceジョブを排他的に管理します。JobTrackerはResourceManagerとMRAppMasterの機能を結合します。TaskTrackerはNodeManagerの機能を実行します。

関連項目:
次のサイトで「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 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 マップとリデュースのリソース構成

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

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

アプライアンス・モデル

メモリー

VCore

Oracle Big Data Appliance X4-2

40GB

32V

Oracle Big Data Appliance X3-2

40GB

32V

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

30GB

24V

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

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

ノード

6ノード・クラスタ

より大規模なクラスタ脚注 1

Node01とNode02

14マップ

8リデュース

なし(NodeManagerなし)

Node03とNode04

10マップ

6リデュース

10マップ

6リデュース

Node05～Nodenn

20マップ

13リデュース

20マップ

13リデュース

脚注 1 9ノード以上

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

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

ノード

6ノード・クラスタ

より大規模なクラスタ脚注 1

Node01とNode02

10マップ

6リデュース

なし

Node03とNode04

7マップ

4リデュース

7マップ

4リデュース

Node05～Nodenn

15マップ

10リデュース

15マップ

10リデュース

脚注 1 9ノード以上

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

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

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

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

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

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

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

ディスク

説明

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 クリティカル・ノードと非クリティカル・ノード

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

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

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

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-8に、重要なサービスが実行される場所を示します。これらの4つのノードの詳細は、この後のトピックで説明します。

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

ノード名

重要な機能

第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つの重要なノードが作成されます。「シングルラック・クラスタ上でサービスが実行される場所」を参照してください。

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

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がすでにアクティブな場合は、バックアップなしで動作し続けます。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 Data Integrator Application Adapter for Hadoopをサポートしています。ResourceManagerノードが停止している場合、このコネクタは使用できません。

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

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

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

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

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

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

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

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

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

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

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

前提条件

障害が発生しているサーバーを管理する前に、次のことを実行します。

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

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

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

1. 障害が発生しているノードと同じラックで非クリティカル・ノードを選択します。

2. Mammothバンドルをそのノードにアップロードしてインストールします。インストールの完了後、このノードからすべてのMammoth操作を実行する必要があります。
詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

3. 障害が発生しているクリティカル・ノードを管理するためのこの項の手順に従います。

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

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

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を使用してそれらを新しいノードで再構成します。

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

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エージェント

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

タスク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   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コンソールを使用してアクセスすることはできません。

タスク3   Oracle Data Integratorエージェントの停止

クラスタにOracle Data Integrator Application Adapter for Hadoopがインストールされている場合は、エージェントを停止します。

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

タスク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ディレクトリをディスマウントします。

タスク5   サーバーの停止

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

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

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

# dcli -g filename shutdown -h now

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

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

# shutdown -h now

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

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

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

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

2.9.3 Oracle Big Data Applianceの起動

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

タスク1   Oracle Big Data Applianceの電源投入

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

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

3. パスワードベースのオンディスク暗号化が有効になっている場合は、ログインしてそれらのサーバーのHadoopディレクトリをマウントします。

$ mount-hadoop-dirs
Enter password to mount Hadoop directories: password

サーバーが自動的に起動しない場合は、サーバーの前面にある電源ボタンを押してローカルで起動するか、または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   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からログアウトします(オプション)。

タスク3   Oracle Data Integratorエージェントの起動

このクラスタでOracle Data Integrator Application Adapter for Hadoopが使用されている場合は、エージェントを起動します。

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 YARNからMapReduce 1への切替え

Oracle Big Data Applianceは、デフォルトではMapReduceのYet Another Resource Negotiator (YARN)実装を使用します。従来のMapReduce (MRv1)を使用することもできます。同じクラスタ内で両方の実装を使用することはできません。MapReduceとYARNサービスのいずれかをアクティブ化できます。

クラスタをMRv1に切り替えるには、次の手順を実行します。

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

2. YARNサービスを停止します。

1. 「Home」ページの「Status」タブのサービスのリストでYARNを探します。

2. 「YARN」メニューを展開し、「Stop」をクリックします。

3. 「cluster」メニューで、「Add a Service」をクリックして「Add Service」ウィザードを開始します。

1. 追加するサービスのタイプとして「MapReduce」を選択します。

2. 依存関係(デフォルト)としてhdfs/zookeeperを選択します。

3. ロール割当てをカスタマイズします。
JobTracker: フィールドをクリックすると、クラスタ内のノードのリストが表示されます。第3ノードを選択します。

TaskTracker: 6ノード・クラスタの場合は、すべてのノードのTaskTrackerを保持します(デフォルト)。より大きいクラスタの場合は、最初の2つのノードからTaskTrackerを削除します。

4. 「Review Changes」ページで、パラメータ値を変更します。
TaskTracker Local Data Directory List: デフォルト・グループおよびグループ1を"/u12/hadoop/mapred".."/u01/hadoop/mapred"に変更します。

JobTracker Local Data Directory List: デフォルト・グループを"/u12/hadoop/mapred".."/u01/hadoop/mapred"に変更します。

5. それ以上の変更は加えずにウィザードの手順を完了します。「Finish」をクリックし、構成を保存して終了します。

4. Hiveサービス構成を更新します。

1. 「Home」ページの「Status」タブで、hiveをクリックしてhiveページを表示します。

2. 「Configuration」サブメニューを展開し、「View and Edit」をクリックします。

3. MapReduce Serviceプロパティの値としてmapreduceを選択します。

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

5. 手順4を繰り返して、mapreduceを使用するようにOozieサービス構成を更新します。

6. 「Home」ページの「Status」タブで、hiveおよびoozieメニューを展開し、「Restart」を選択します。

7. オプション: yarnサービス・メニューを展開し、「Delete」を選択します。
yarnサービスを保持する場合は、クラスタを再起動するたびに、「Memory overcommit validation」という警告が表示され、yarnサービスを手動で停止する必要があります。

8. MapReduceサービス構成を更新します。

1. 「Home」ページの「Status」タブで、mapreduceをクリックしてmapreduceページを表示します。

2. 「Configuration」サブメニューを展開し、「View and Edit」をクリックします。

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

4. 次のプロパティを設定します。
Java Heap Size of TaskTracker in Bytes: デフォルト値(1 GiB)にリセットします。

Maximum Number of Simultaneous Map Tasks: 15 (Sun Fire X4270 M2ラック)または20 (他のすべてのラック)に設定します。

Maximum Number of Simultaneous Reduce Tasks: 10 (Sun Fire X4270 M2ラック)または13 (他のすべてのラック)に設定します。

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

9. ノード3および4 (6ノード・クラスタの場合はノード1および2)のオーバーライドを追加します。「マップとリデュースのリソース構成」を参照してください。

10. mapreduce1サービスをクリックしてmapreduceページを表示します。

11. 「Actions」メニューを展開し、「Enable High Availability」を選択して「Enable JobTracker High Availability」ウィザードを開始します。

1. 「Assign Roles」ページで、Standby JobTrackerの第4ノード(node04)を選択します。

2. それ以上の変更は加えずにウィザードの手順を完了します。「Finish」をクリックし、構成を保存して終了します。

12. クラスタ内のすべてのサービスが正常に機能している(構成の問題がない)ことを確認します。

13. MRv1クラスタのPerfect Balanceを再構成します。

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

2. クラスタのすべてのノード上でPerfect Balanceを構成します。

$ dcli –C /opt/oracle/orabalancer-[version]/bin/configure.sh

dcliコマンドについては、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

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

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

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

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

- ユーザー認証について

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

- オンディスク暗号化について

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

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

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

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

ユーザー名

グループ

使用者

ログイン権限

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.12.2 ユーザー認証について

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

2.12.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.12.4 オンディスク暗号化について

オンディスク暗号化は、ディスクにあるデータを保護します。オンディスク暗号化が有効になっている場合、Oracle Big Data Applianceはディスクに格納されているデータを自動的に暗号化および復号化します。オンディスク暗号化は、パフォーマンスに若干影響する可能性はありますが、Hadoopデータへのユーザー・アクセスには影響しません。

Password-based encryption: パスワードに基づいてHadoopデータを暗号化します。パスワードは、1つのクラスタ内のすべてのサーバーで同じです。mammoth-reconfig updateコマンドを使用すると、いつでもパスワードを変更できます。詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

サーバーからディスクを削除した場合、サーバー(同じサーバーまたは異なるサーバー)にディスクをインストールし、サーバーを起動してパスワードを指定するまで暗号化されたデータは引き続き保護されます。サーバーの電源が切断され、Oracle Big Data Applianceラックから取り外された場合、サーバーを再起動してパスワードを指定するまで暗号化されたデータは引き続き保護されます。すべてのサーバーが起動された後、パスワードを入力してデータへのアクセスを有効にする必要があります。「Oracle Big Data Applianceの起動」を参照してください。

オンディスク暗号化は、Mammothユーティリティによる初期インストール時に選択できるオプションです。mammoth-reconfigまたはbdacliユーティリティを使用して、いつでもオンディスク暗号化を有効または無効にすることもできます。

関連項目:
『Oracle Big Data Applianceオーナーズ・ガイド』

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

表2-10に、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-10 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.12.6 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.13 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.13.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.13.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またはmammoth-reconfigを使用して、後でプラグインを追加することもできます。詳細は、『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.13.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.14 オラクル社カスタマ・サポートに提供する診断情報の収集

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により指定されたフォルダ名です)。
コマンドラインSFTPクライアントを使用している場合は、例2-1を参照してください。

2. Oracle Single Sign-Onのアカウントとパスワードでログインします。

3. 診断ファイルを新しいディレクトリにアップロードします。

4. このフル・パスおよびファイル名でSRを更新します。

例2-1は、SFTPコマンド・インタフェースを使用して、診断情報をアップロードするコマンドを示しています。

例2-1 FTPを使用した診断情報のアップロード

$ sftp -o port=2021 my.user.name@oracle.com@sftp.oracle.com
Connecting to sftp.oracle.com...
.
.
.
Enter password for my.user.name@oracle.com
Password: password
sftp> cd support/incoming/SR123456
sftp> put /tmp/bdadiag_bda1node01_1216FM5497_2013_07_18_07_33.tar.bz2
Uploading bdadiag_bda1node01_1216FM5497_2013_07_18_07_33.tar.bz2 to //support/incoming/create_table.sql
bdadiag_bda1node01_1216FM5497_2013_07_18_07_33.tar.bz2 to support/incoming/create_table.sql                  100%  311     0.3KB/s   00:00
sftp> exit
$

関連項目:
My Oracle Support Note 549180.1
http://support.oracle.com

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は、悪質な偽装の防止に効果的なネットワーク認証プロトコルです。

Kerberosを使用するように構成された場合、CDHは次のセキュリティを提供します。

- CDHマスター・ノード、NameNodeおよびJournalNodeでグループ名を解決し、ユーザーがグループのメンバーシップを操作できないようにします。

- マップ・タスクはジョブを発行したユーザーのアイデンティティの下で実行されます。

- HDFSの認可メカニズムおよびMapReduceを使用して、ユーザーのデータ・アクセスを制御します。

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

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/cloudera-content/cloudera-docs/CDH5/latest/CDH5-Requirements-and-Supported-Versions/cdhrsv_os.html

- クライアント・システムが、Oracle JDK 1.7.0_25以上を実行している必要があります。
バージョンを確認するには、次のコマンドを使用します。

$ java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

3.2.2 Oracle Exadata Database MachineでのCDHのインストール

どちらのエンジニアド・システムでも同じオペレーティング・システム(Linux 5.xまたは6.x)が使用される場合には、Oracle Exadata Database Machineをクライアントとして使用するときにOracle Big Data Appliance上のRPMファイルを使用できます。ローカル・ネットワーク内でファイルをコピーするほうが、Cloudera Webサイトからダウンロードするよりも高速です。

注意:
以下のステップでは、version_numberを、ファイル名の欠けた部分(cdh5.0.0+28-1.cdh5.0.0.p0.36.el6など)と置き換えてください。

Oracle Exadata Database Machine上にCDHクライアントをインストールするには、次の手順に従います。

1. Exadataデータベース・サーバーにログインします。

2. ExadataシステムにHadoopがインストールされていないことを確認します。

rpm -qa | grep hadoop

3. rpmコマンドが値を返した場合は、次のように既存のHadoopソフトウェアを削除します。

rpm -e hadoop_rpm

4. 次のLinux RPMを、Oracle Big Data Applianceの第1サーバーからデータベース・サーバーにコピーします。RPMは、/opt/oracle/BDAMammoth/bdarepo/RPMS/x86_64ディレクトリに置かれています。

- ed-version_number.x86_64.rpm

- m4-version_number.x86_64.rpm

- nc-version_number.x86_64.rpm

- redhat-lsb-version_number.x86_64.rpm

5. ステップ4でコピーしたOracle Linux RPMを、すべてのデータベース・ノードにインストールします。次に例を示します。

sudo yum --nogpgcheck localinstall ed-1.1-3.3.el6.x86_64.rpm
sudo yum --nogpgcheck localinstall m4-1.4.13-5.el6.x86_64.rpm
sudo yum --nogpgcheck localinstall nc-1.84-22.el6.x86_64.rpm
sudo yum --nogpgcheck localinstall redhat-lsb-4.0-7.0.1.el6.x86_64.rpm

CDH RPMをインストールする前に、必ずOracle Linux RPMをインストールしてください。

6. 次のCDH RPMを、/opt/oracle/BDAMammoth/bdarepo/RPMS/noarchディレクトリからコピーします。

- bigtop-utils-version_number.noarch.rpm

7. 次のCDH RPMを、/opt/oracle/BDAMammoth/bdarepo/RPMS/x86_64ディレクトリからコピーします。

- zookeeper-version_number.noarch.rpm

- hadoop-version_number.x86_64.rpm

- bigtop-jsvc-version_number.x86_64.rpm

- hadoop-hdfs-version_number.x86_64.rpm

- hadoop-0.20-mapreduce-version_number.x86_64.rpm

- hadoop-yarn-version_number.x86_64.rpm

- hadoop-mapreduce-version_number.x86_64.rpm

- hadoop-client-version_number.x86_64.rpm

8. CDH RPMを、ステップ6と7で示したのとまったく同じ順序で、すべてのサーバーにインストールします。次に例を示します。

rpm -ihv bigtop-utils-0.7.0+cdh5.0.0+0-1.cdh5.0.0.p0.36.el6.noarch.rpm
rpm -ihv zookeeper-3.4.5+cdh5.0.0+28-1.cdh5.0.0.p0.36.el6.x86_64.rpm
rpm -ihv hadoop-2.3.0+cdh5.0.0+548-1.cdh5.0.0.p0.69.el6.x86_64.rpm
rpm -ihv bigtop-jsvc-0.6.0+cdh5.0.0+427-1.cdh5.0.0.p0.34.el6.x86_64.rpm
rpm -ihv hadoop-hdfs-2.3.0+cdh5.0.0+548-1.cdh5.0.0.p0.69.el6.x86_64.rpm
rpm -ihv hadoop-0.20-mapreduce-2.3.0+cdh5.0.0+548-1.cdh5.0.0.p0.69.el6.x86_64.rpm
rpm -ihv hadoop-yarn-2.3.0+cdh5.0.0+548-1.cdh5.0.0.p0.69.el6.x86_64.rpm
rpm -ihv hadoop-mapreduce-2.3.0+cdh5.0.0+548-1.cdh5.0.0.p0.69.el6.x86_64.rpm
rpm -ihv hadoop-client-2.3.0+cdh5.0.0+548-1.cdh5.0.0.p0.69.el6.x86_64.rpm

9. CDHクライアントを構成します。「保護されていないクラスタ用のCDHクライアントの構成」を参照してください。

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

CDHクライアントを、Clouderaでのサポート対象として識別されたすべてのオペレーティング・システムにインストールするには、次の指示に従います。

CDHクライアント・ソフトウェアをインストールするには、次の手順を実行します。

1. クライアント・システムにログインします。

2. 以前のバージョンのHadoopがすでにインストールされている場合には、削除します。
CDH4の削除については、次の場所にある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. ClouderaのWebサイトからCDH5ソフトウェアをダウンロードします。

$ wget http://archive-primary.cloudera.com/cdh5/cdh/5/hadoop-2.3.0-cdh5.0.0.tar.gz

4. ファイルを常設の場所に解凍します。これがHadoopのホーム・ディレクトリになります。次のコマンドは、現在のディレクトリでhadoop-2.3.0-cdh5.0.0にファイルを解凍します。

tar -xvzf hadoop-2.3.0-cdh5.0.0.tar.gz

5. CDHクライアントを構成します。「保護されていないクラスタ用のCDHクライアントの構成」を参照してください。

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

CDHをインストールしたら、Oracle Big Data Applianceを操作できるように構成する必要があります。

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. 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
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
alias hadoop=$HADOOP_HOME/bin/hadoop
alias hdfs=$HADOOP_HOME/../../../bin/hdfs

4. Hadoop構成ファイルのバックアップ・コピーを作成します。

# cp /full_path/yarn-conf /full_path/yarn-conf-bak

5. ステップ2でダウンロードした構成ファイルで既存の構成ファイルを上書きします。

# cd /full_path/yarn-conf
# cp * /usr/lib/hadoop/conf

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

CDHクライアントをセキュアなCDHクラスタで動作できるようにするには、次の手順に従います。

Kerberos用にCDHクライアントを構成するには、次の手順を実行します。

1. CDHクライアントを作成するシステムにログインします。

2. Java Cryptography Extension Unlimited Strength Jurisdiction Policy Filesをインストールします。

1. 使用している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

2. ダウンロードしたファイルを解凍します。この例では、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という名前のディレクトリに解凍されます。

3. 解凍されたファイルを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.6 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.3.0-cdh5.0.0.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をプライマリ・グループとし、hiveを追加グループとしてjdoeという名前のユーザーを作成します。

例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.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を使用するためのJDBCクライアントの構成

- インフィニバンド・ネットワーク上での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の有効化

次の手順では、Oracle Linuxを実行しているOracle Exadata Database Machine内のデータベース・ノード上でSDPを有効化する方法について説明します。SDPによって、Oracle Big Data Appliance上で動作してデータをOracle Exadata Database Machineにプッシュするクライアント・アプリケーションのパフォーマンスが向上します。

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ラックが複数ある場合は、すべてのラックでこれらの手順を繰り返します。

4.6 SDPを使用するためのJDBCクライアントの構成

この手順では、SDPを使用するためにJDBCクライアントを構成する方法について説明します。

JDBCに対するSDPサポートを有効化するには、次の手順に従います。

1. 『Oracle Database Net Services管理者ガイド』の説明に従って、インフィニバンドをサポートするようにデータベースを構成します。プロトコルは必ずSDPに設定してください。

2. Java仮想マシンを起動する前に、LD_PRELOAD環境変数をlibsdp.soに設定します。この例ではBashシェルを使用します。

export LD_PRELOAD="libsdp.so"

4.7 InfiniBandネットワーク上での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でのみ使用できるソフトウェアについて説明します。ここには次の章が含まれます。

- 第5章「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はこれら両方をサポートしています。

Perfect BalanceはMapReduce 1 (MRv1)およびYARNクラスタ上でテストされました。YARNは、Oracle Big Data Appliance 3.0以上のリリース上のデフォルトのインストールです。Oracle Big Data ApplianceをYARNからMRv1に切り替える場合のPerfect Balanceの構成設定については、「YARNからMapReduce 1への切替え」を参照してください。

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.0.0-h2)に設定します(オプション)。この章の例ではこの変数を使用しますが、変数を自分で定義することもできます。Perfect BalanceではBALANCER_HOMEは不要です。

- HADOOP_CLASSPATH: ${BALANCER_HOME}/jlib/orabalancer-2.0.0.jarと${BALANCER_HOME}/jlib/commons-math-2.2.jarを既存の値に追加します。アプリケーションのJARファイルも追加します。
Perfect Balanceを有効にするには、${BALANCER_HOME}/jlib/orabalancerclient-2.0.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. 分析するジョブからの出力ファイルを探します。

- YARNクラスタ: oracle.hadoop.balancer.application_idを、分析するジョブのジョブIDに設定します。YARNは、Oracle Big Data Appliance上のデフォルトです。
YARN Resource ManagerのWebインタフェースからジョブIDを取得できます。ジョブのアプリケーションIDをクリックし、「Tracking URL」をクリックします。通常、ジョブIDは"job_"で始まります。

このジョブでPerfect BalanceまたはJob Analyzerをすでに実行した場合は、レポート・ディレクトリ(デフォルトではoutdir/_balancer)のPerfect Balanceによって生成されたapplication_idファイルからジョブIDを読み取ることもできます。

- MRv1クラスタ: mapred.output.dirを、分析するジョブの出力ディレクトリに設定します。

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のようになります。

YARNのかわりにMRv1を使用する場合は、oracle.hadoop.balancer.application_idではなくmapred.output.dirを設定します。

例5-1 Job Analyzerユーティリティの実行

$ cat runja.sh

BALANCER_HOME=/opt/oracle/orabalancer-2.0.0-h2
export HADOOP_CLASSPATH=${BALANCER_HOME}/jlib/orabalancer-2.0.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.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ユーティリティを実行するための構文を次に示します。

YARNの場合:

hadoop jar orabalancer.jar oracle.hadoop.balancer.tools.JobAnalyzer \
-D oracle.hadoop.balancer.application_id=job_number \
[ja_report_path]

MRv1の場合:

hadoop jar ${BALANCER_HOME}/jlib/orabalancer-2.0.0 oracle.hadoop.balancer.tools.JobAnalyzer \
-D mapred.output.dir=job_output_dir \
[ja_report_path]

job_number

ジョブに以前に割り当てられたアプリケーションID。YARNのみ。

job_output_dir

以前のアプリケーション実行時にジョブ・ファイルが保存されたHDFSディレクトリ。MRv1のみ。

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でジョブを実行し、デフォルトの場所にレポートを作成します。その後、HTMLバージョンのレポートがHDFSから/home/jdoeローカル・ディレクトリにコピーされ、ブラウザでレポートが開かれます。出力には警告が含まれますが、これは無視できます。

例5-2 Perfect Balanceを使用したJob Analyzerの実行

$ cat ja_nobalance.sh

# set up perfect balance
BALANCER_HOME=/opt/oracle/orabalancer-2.0.0-h2
export HADOOP_CLASSPATH=${BALANCER_HOME}/jlib/orabalancerclient-2.0.0.jar:${BALANCER_HOME}/jlib/orabalancer-2.0.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.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.jobConfPath

- oracle.hadoop.balancer.tools.jobHistoryPath

- 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.0.0-h2
export HADOOP_CLASSPATH=${BALANCER_HOME}/jlib/orabalancerclient-2.0.0.jar:${BALANCER_HOME}/jlib/orabalancer.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で使用するためのXML形式で保存されます。ユーザーが使用するための情報は含まれません。このレポートには、${job_output_dir}/_balancer/orabalancer_report.xmlという名前が付けられます。均衡化されたジョブのためにのみ生成されます。

- リデュース・キー・メトリック・レポート: 適切な構成プロパティが設定されている場合、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.xml
/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.0.0-h2/examples/invindx/README.txtを参照してください。

変更されたJavaコードを探すには、orabalancer-2.0.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コードの一部を示したものです。

例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) //////////////////////
.
.
.
}

関連項目:
Oracle Big Data Appliance Perfect Balance Java APIリファレンス

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.0.0-h2
APP_JAR_FILE=/opt/oracle/orabalancer-2.0.0-h2/jlib/orabalancer-2.0.0.jar
export HADOOP_CLASSPATH=${BALANCER_HOME}/jlib/orabalancer-2.0.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.autoAnalyze=true \
-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.0.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.0.0-h2/examples/invindx

3. データを解凍して、HDFS invindx/inputディレクトリにコピーします。

./invindx -setup

InvertedIndex例を実行する手順の詳細は、/opt/oracle/orabalancer-2.0.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.jobConfPath

型: String

デフォルト値: ${mapreduce.output.fileoutputformat.outputdir}/_logs/history

説明: MRv1のHadoopジョブ構成ファイルへのパス(YARNには適用できません)。Job Analyzerは、この設定を使用してファイル場所を特定します。

oracle.hadoop.balancer.tools.jobHistoryPath

型: String

デフォルト値: ${mapreduce.output.fileoutputformat.outputdir}/_logs/history

説明: MRv1のHadoopジョブ履歴ファイルへのパス(YARNには適用できません)。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: マップ出力キーのソーティング・コンパレータをトータルオーダー・パーティショニング関数として使用します。バランサは、分割されたキーの値に対するトータル・オーダーを保存します。

ジョブで2番目のソートが構成されていない場合、Perfect Balanceが次のプロパティを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.xml (HDFS用のディレクトリは、ジョブを送信するユーザーのホーム・ディレクトリ)。ローカル・ファイル・システム用のディレクトリは、ジョブが送信されるディレクトリです。

説明: Hadoopジョブ出力ディレクトリが使用可能になる前(つまり、MapReduceジョブが実行を完了する前)に、Perfect Balanceがパーティション・レポートを書き込む場所のパス。ジョブの最後に、Perfect Balanceはファイルをjob_output_dir/_balancer/orabalancer_report.xmlに移動します。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の使用について説明します。ここには次の章が含まれます。

- 第6章「データ・アクセスのためのOracle Big Data SQLの使用」

- 第7章「Oracle Big Data SQLリファレンス」

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

この章では、Oracle Big Data SQLについて説明します。この項の内容は次のとおりです。

- Oracle Big Data SQLとは

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

- ビッグ・データにアクセスするための外部表の作成

- 外部表の句について

- データ型変換について

- 外部表の問合せ

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

6.1 Oracle Big Data SQLとは

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

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

次の項に詳細を示します。

- 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 Big Data Applianceには、Oracle Big Data Appliance上のCDHクラスタに格納されているデータを保護するための多数のセキュリティ機能がすでに用意されています。

- Kerberos認証: ユーザーおよびクライアント・ソフトウェアは、クラスタにアクセスする前に資格証明を提供する必要があります。

- Apacheセキュリティ認証: データおよびメタデータにファイングレインのロールベース認証を提供します。

- オンディスク暗号化: ディスクにあるデータを保護します。通常のユーザー・アクセスでは、データは自動的に復号化されます。

- 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ソフトウェアを両方のシステムにインストールする必要があります。

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

Oracle Exadata Database Machineは次の要件に準拠している必要があります。

- Oracle Database 12.1.0.2以上を実行していること

- Oracle Big Data Applianceと同じインフィニバンド・サブネット上で構成されていること

- インフィニバンド・ネットワークで接続された、プル・アプリケーション用に構成されていること(第4章を参照)

6.2.2 Oracle Big Data Applianceへのソフトウェアのインストール

Oracle Big Data SQLはOracle Big Data Appliance上のインストール・オプションです。ソフトウェアの初期インストール時またはその後で、サービスを有効化および無効化するための標準的な方法を使用して有効化できます。

ソフトウェアのインストールまたはアップグレード時にOracle Big Data SQLをインストールするには、次の手順を実行します。

- Oracle Big Data Appliance構成生成ユーティリティの「Cluster」ページでオプションを選択します。Mammothによって、他のソフトウェアコンポーネントとともにOracle Big Data SQLが有効化されます。
詳細は、『Oracle Big Data Applianceオーナーズ・ガイド』を参照してください。

後でOracle Big Data SQLをインストールするには、次の手順を実行します。

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

2. bdacliユーティリティを使用します。

# bdacli enable big_data_sql

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

Cloudera Managerを使用すると、Oracle Big Data SQLが稼働していることを確認できます。「Oracle Big Data SQLの管理」を参照してください。

6.2.3 Oracle Exadata Database Machineへのソフトウェアのインストール

Oracle Exadata Database MachineにOracle Big Data SQLをインストールするには、次の手順を実行します。

1. My Oracle SupportからOracle Big Data SQL用のデータベース・パッチをダウンロードしてインストールします。

2. Oracleインストールの所有者の名前を確認します。通常は、oracleユーザーがインストールを所有します。

3. Oracle Big Data Appliance上に同じユーザー名(oracleなど)が存在することを確認します。

4. Mammothがインストールされているノード(通常はクラスタ上の第1ノード)からbds-exa-install.shインストール・スクリプトをダウンロードします。wget、curlなどのコマンドを使用できます。この例では、bda1node7からスクリプトをコピーします。

wget http://bda1node07/bda/bds-exa-install.sh

5. rootとしてスクリプトを実行し、システム識別子(SID)を渡します。この例では、SIDはorclです。

./bds-exa-install.sh oracle_sid=orcl

注意: Oracleインストールの所有者がoracleではない場合は、--install-userオプションを使用します。「bds-exa-installスクリプトの実行」

スクリプトが完了すると、Oracle Big Data SQLがデータベース・システムで稼働します。ただし、イベントによってOracle Big Data SQLが停止した場合、再起動する必要があります。「Big Data SQLエージェントの起動および停止」を参照してください。

6.2.3.1 bds-exa-installスクリプトの実行

bds-exa-installスクリプトは、Oracleホーム・ディレクトリの所有者によって実行されるカスタム・インストール・スクリプトを生成します。そのセカンダリ・スクリプトは、Oracle Big Data SQLで必要なすべてのファイルを$ORACLE_HOME/bigdatasqlディレクトリにインストールします。また、データベース・ディレクトリ・オブジェクト、およびマルチスレッドのOracle Big Data SQLエージェントのデータベース・リンクも作成します。

Oracleホームを所有するオペレーティング・システム・ユーザーがoracleという名前ではない場合は、--install-userオプションを使用して所有者を指定します。

--generate-onlyオプションを使用してセカンダリ・スクリプトを作成し、$ORACLE_HOMEの所有者として実行することもできます。

6.2.3.2 bds-ex-installの構文

次にbds-exa-installの構文を示します。

./bds-exa-install.sh oracle_sid=name [option]

オプション名の前には2つのハイフン(--)が付いています。

--generate-only={true | false}

セカンダリ・スクリプトを生成するだけで実行しない場合は、trueに設定します。1つのステップでスクリプトを生成して実行する場合は、falseに設定します(デフォルト)。

--install-user=user_name

Oracle Databaseインストールを所有するオペレーティング・システム・ユーザー。デフォルト値はoracleです。

6.3 ビッグ・データにアクセスするための外部表の作成

SQLのCREATE TABLE文には、外部表の作成に特化した句があります。この句に指定する情報により、アクセス・ドライバは外部ソースからデータを読み取り、そのデータを外部表用に準備できます。

- 基本的なCREATE TABLE構文について

- Hive表の外部表の作成

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

6.3.1 基本的なCREATE TABLE構文について

次に外部表のCREATE TABLE文の基本的な構文を示します。

CREATE TABLE table_name (column_name datatype,
column_name datatype[,...])
ORGANIZATION EXTERNAL (external_table_clause);

他の表と同様に、列名およびデータ型を指定します。ORGANIZATION EXTERNALは、表を外部表として識別します。

external_table_clauseはアクセス・ドライバを識別し、データのロードに必要な情報を提供します。「外部表の句について」を参照してください。

6.3.2 Hive表の外部表の作成

Apache Hive内のデータのOracle外部表を簡単に作成できます。Oracle Databaseはメタデータを使用できるため、Hive表に関する情報をデータ・ディクショナリに問い合せることができます。その後、PL/SQL関数を使用して基本的なSQLを生成できます。CREATE TABLE EXTERNAL ORGANIZATION文。実行前に文を変更して、外部表をカスタマイズできます。

6.3.2.1 Hive表に関する情報の取得

DBMS_HADOOP PL/SQLパッケージには、CREATE_EXTDDL_FOR_HIVEという名前の関数が含まれています。CREATE_EXTDDL_FOR_HIVE関数は、外部表のデータ・ディクショナリ言語(DDL)を返します。この関数では、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.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.2.3 ORACLE_HIVEのCREATE TABLE文の作成

DBMS_HADOOPを使用するか、CREATE TABLE文を最初から作成するかを選択できます。どちらの場合にも、ORACLE_HIVEのデフォルトの動作を変更するように一部のアクセス・パラメータを設定する必要があります。

6.3.2.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.2.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.3.3 HDFSファイルの外部表の作成

ORACLE_HDFSアクセス・ドライバを使用すると、HDFSに格納されている様々なタイプのデータにアクセスできますが、HDFSにはHiveメタデータはありません。テキスト・データのレコード形式を定義することも、特定のデータ形式のSerDeを指定することもできます。

HDFSファイルの外部表を手動で作成し、データを特定するためにアクセス・ドライバが必要とするすべての情報を提供して、レコードおよびフィールドを解析する必要があります。CREATE TABLE ORGANIZATION EXTERNAL文のいくつかの例を次に示します。

6.3.3.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.3.3.2 ORACLE_HDFSのデフォルト設定の上書き

ORACLE_HDFSでも、ORACLE_HIVEと同じアクセス・パラメータの多くを使用できます。

6.3.3.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.3.3.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.4 外部表の句について

CREATE TABLE ORGANIZATION EXTERNALは、引数としてexternal_table_clauseを取ります。次の従属句があります。

- TYPE句

- DEFAULT DIRECTORY句

- LOCATION句

- REJECT LIMIT句

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

関連項目:
external_table_clauseの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

6.4.1 TYPE句

TYPE句はアクセス・ドライバを識別します。アクセス・ドライバのタイプによって、外部表定義の他の部分がどのように解釈されるかが決まります。

Oracle Big Data SQLに次の値のいずれかを指定します。

- ORACLE_HDFS: HDFSディレクトリ内のファイルにアクセスします。

- ORACLE_HIVE: Hive表にアクセスします。

注意:
ORACLE_DATAPUMPおよびORACLE_LOADERアクセス・ドライバは、Oracle Big Data SQLには関連付けられません。

6.4.2 DEFAULT DIRECTORY句

DEFAULT DIRECTORY句はOracle Databaseディレクトリ・オブジェクトを識別します。ディレクトリ・オブジェクトは、外部表が読取りおよび書込みを行うファイルを含むオペレーティング・システム・ディレクトリを識別します。

ORACLE_HDFSおよびORACLE_HIVEはデフォルト・ディレクトリのみを使用して、Oracle Databaseシステムにログ・ファイルを書き込みます。

6.4.3 LOCATION句

LOCATION句はデータ・ソースを識別します。

6.4.3.1 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-1に説明されているパターン一致文字を含めることができます。

表6-1 パターン一致文字

文字

説明

?

任意の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.4.3.2 ORACLE_HIVE LOCATION句

ORACLE_HIVEにLOCATION句を指定しないでください。指定すると、エラーが発生します。データはHiveに格納され、アクセス・パラメータおよびメタデータ・ストアは必要な情報を提供します。

6.4.4 REJECT LIMIT句

Oracle Databaseが問合せを停止し、エラーを返すまで、外部表の問合せ中に許可される変換エラーの数を制限します。

行が拒否される処理エラーは、制限に対してカウントされます。拒否制限は、各並列問合せ(PQ)プロセスに個別に適用されます。すべてのPQプロセスについて、拒否されたすべての行の合計ではありません。

6.4.5 ACCESS PARAMETERS句

ACCESS PARAMETERS句は、アクセス・ドライバがデータを外部表に正しくロードするために必要な情報を提供します。「CREATE TABLE ACCESS PARAMETERS句」を参照してください。

6.5 データ型変換について

アクセス・ドライバは、データを外部表にロードする際に、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-2は、データを外部表にロードするときにORACLE_HIVEが実行できるデータ型変換を示します。

表6-2 サポートされている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

はい脚注 1

はい脚注 2

はい脚注 2

はい

いいえ

いいえ

BINARY

はい

いいえ

はい

はい

いいえ

いいえ

STRING

はい

はい

はい

はい

はい

はい

TIMESTAMP

はい

いいえ

いいえ

いいえ

はい

いいえ

STRUCT

ARRAY

UNIONTYPE

MAP

はい

いいえ

いいえ

いいえ

いいえ

いいえ

脚注 1 FALSEは文字列FALSEにマップされ、TRUEは文字列TRUEにマップされます。

脚注 2 FALSEは0にマップされ、TRUEは1にマップされます。

6.6 外部表の問合せ

ユーザーは、他の表を問い合せる場合と同じように、SQL SELECT文を使用して外部表を問い合せることができます。

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

Hadoopクラスタ上のデータを問い合せるユーザーには、外部表、およびクラスタ・ディレクトリを指すデータベース・ディレクトリ・オブジェクトへのOracle Database内のREADアクセス権が必要です。「クラスタ・ディレクトリについて」を参照してください。

6.6.2 エラー処理の概要

デフォルトでは、列の値を計算しているときにエラーが発生した場合、問合せはデータを返しません。ほとんどのエラー(特に、列の値を計算中にスローされたエラー)の後も処理は続行します。

エラーの処理方法を決定するには、com.oracle.bigdata.erroroptパラメータを使用します。

6.6.3 ログ・ファイルについて

次のアクセス・パラメータを使用すると、ログ・ファイルをカスタマイズできます。

- com.oracle.bigdata.log.exec

- com.oracle.bigdata.log.qc

6.7 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.7.1 Big Data SQLエージェントの起動および停止

agtctlユーティリティは、マルチスレッドBig Data SQLエージェントを起動および停止します。次の構文があります。

agtctl {startup | shutdown} bds_clustername

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

共通ディレクトリには、すべてのHadoopクラスタに共通の構成情報が含まれています。このディレクトリは、Oracle DatabaseシステムのOracleホーム・ディレクトリの下にあります。oracleファイル・システムのユーザー(またはOracle Databaseインスタンスを所有するユーザー)は、共通ディレクトリを所有します。ORACLE_BIGDATA_CONFIGという名前のデータベース・ディレクトリは共通ディレクトリを指します。

6.7.3 一般的な構成プロパティ

Mammothインストール・プロセスでは、次のファイルが作成され、共通ディレクトリに格納されます。

- bigdata.properties

- bigdata-log4j.properties

Oracle DBAは、必要に応じてこれらの構成ファイルを編集できます。

6.7.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-1は、サンプルのbigdata.propertiesファイルを示します。

例6-1 サンプルの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.7.3.2 bigdata-log4j.properties

共通ディレクトリのbigdata-log4j.propertiesファイルは、外部表に対する問合せのロギング動作をJavaコードで定義します。このファイルでは、すべてのlog4jプロパティを使用できます。

例6-2は、サンプルのbigdata-log4j.propertiesファイルと関連するlog4jプロパティを示します。

例6-2 サンプルの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.7.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.7.5 権限について

oracleオペレーティング・システム・ユーザー(またはOracle Databaseインストール・ディレクトリを所有するユーザー)には次の設定が必要です。

- ログ・ディレクトリを指すデータベース・ディレクトリへの読取り/書込みアクセス権。これらの権限を使用すると、アクセス・ドライバはログ・ファイルを作成し、ユーザーはそれを読み取ることができます。

- Oracle Big Data Applianceで定義されている、該当するoracleオペレーティング・システム・ユーザー。ソース・データが格納されているHDFSディレクトリへのオペレーティング・システム内の読取りアクセス権を持ちます。

7 Oracle Big Data SQLリファレンス

この章には、Oracle Big Data SQLのリファレンス情報が含まれています。

- DBMS_HADOOP PL/SQLパッケージ

- CREATE TABLE ACCESS PARAMETERS句

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

DBMS_HADOOP PL/SQLパッケージ

DBMS_HADOOPパッケージには、Hive表のCREATE EXTERNAL TABLE DDLを生成するための関数が含まれています。

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データ型の間のデフォルトのマッピングに基づいています。「データ型変換について」を参照してください。

例

次の問合せは、デフォルトの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

CREATE TABLE ACCESS PARAMETERS句

この項では、ORACLE_HDFSまたはORACLE_HIVEアクセス・ドライバを使用する外部表を作成するときに使用するプロパティについて説明します。CREATE TABLE ORGANIZATION EXTERNAL文で、ACCESS PARAMETERSのopaque_format_spec句にパラメータを指定します。

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

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

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

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

- プロパティのアルファベット順リスト

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

プロパティは、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

Backspace (\u0008)

\t

水平タブ(\u0009)

\n

行フィード(\u000a)

\f

フォーム・フィード(\u000c)

\r

キャリッジ・リターン(\u000d)

\"

二重引用符(\u0022)

\'

一重引用符(\u0027)

\\

バックスラッシュ(\u005c)

複数のバックスラッシュが行末にある場合、パーサーは奇数のバックスラッシュに対してのみ値を次の行に継続します。

\uxxxx

2バイト、ビッグ・エンディアン、Unicodeコード・ポイント。

1文字に2コード・ポイント(4バイト)が必要な場合、パーサーは2番目のコード・ポイントに\uを要求します。

ORACLE_HDFSアクセス・パラメータ

ORACLE_HDFSアクセス・ドライバのアクセス・パラメータは、HDFS内のデータを特定するのに必要なメタデータを提供し、Hive表を作成します。

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"}

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/*"));

ORACLE_HIVEアクセス・パラメータ

ORACLE_HIVEは、Hiveカタログから外部データ・ソースに関するメタデータを取得します。通常、外部データ表の列へのHiveデータのデフォルト・マッピングは適切です。ただし、状況によっては、特殊なパラメータ設定が必要です。独自の理由でデフォルト値を上書きする場合もあります。

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"}

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}]
));

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"}

com.oracle.bigdata.datamode

SmartScanがデリミタ付きテキスト・ファイルで構成されるデータ・ソースをスキャンするために使用する方法を指定します。方法によって、パフォーマンスに大きな違いが生じる可能性があります。

デフォルト値

java

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

datamode ::=

セマンティクス

automatic

可能な場合はcモードを選択します。データにcモードでサポートされていない形式が含まれる場合は、javaモードを選択します。

c

ファイル・バッファを読み取る場合はJavaを使用しますが、データを処理してOracle形式に変換する場合はCコードを使用します。データにCコードでサポートされていない形式が含まれる場合は、エラーが返されます。

java

データを処理してOracle形式に変換する場合は、Java SerDesおよびInputFormatsを使用します。

com.oracle.bigdata.erroropt

列の値の計算中に発生するエラーを処理する方法を示します。

デフォルト値

{"action":"setnull"}

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

erroropt ::=

error_element ::=

セマンティクス

"action"、"reject"、"setnull"、"replace"、"value"および"col"キーワードは小文字を使用して、引用符で囲む必要があります。「プロパティを指定するための構文ルール」を参照してください。

"action":value

value: One of these keywords:

- "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"]

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プロパティ)。

com.oracle.bigdata.fileformat

ORACLE_HDFSによって生成されたHive表のROW FORMAT句に基づいて、データ・ソースの行形式を説明します。

デフォルト値

TEXTFILE

構文

キーワード/値のペアを持つJSONドキュメントを次の図に示します。

fileformat ::=

セマンティクス

ORC

最適化された行カラムナ・ファイル形式

PARQUET

このリリースのOracle Big Data Applianceではサポートされていません。

RCFILE

レコード・カラムナ・ファイル形式

SEQUENCEFILE

圧縮ファイル形式

TEXTFILE

プレーン・テキスト・ファイル形式

INPUTFORMAT

データ・ファイルからレコードを抽出できるJavaクラスを識別します。

OUTPUTFORMAT

出力レコードを目的の形式に設定できるJavaクラスを識別します。

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

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_%%

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"}

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}) .*")

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

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

Oracle Databaseカタログには、アクセス可能な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

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"

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"

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"

DBA_HIVE_DATABASES

DBA_HIVE_DATABASESは、Hiveメタストア内のすべてのデータベースを示します。列はALL_HIVE_DATABASESの列と同じです。

関連項目:
"ALL_HIVE_DATABASES"

DBA_HIVE_TABLES

DBA_HIVE_TABLESは、Hiveメタストア内のすべての表を示します。列はALL_HIVE_TABLESの列と同じです。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。「共通ディレクトリについて」を参照してください。

関連項目:
"ALL_HIVE_TABLES"

DBA_HIVE_COLUMNS

DBA_HIVE_COLUMNSは、Hiveメタストア内のすべての表の列を示します。列はALL_HIVE_COLUMNSの列と同じです。

関連項目:
"ALL_HIVE_COLUMNS"

USER_HIVE_DATABASES

USER_HIVE_DATABASESは、現在のユーザーが所有するHiveメタストア内のデータベースを示します。列(OWNERを除く)はALL_HIVE_DATABASESの列と同じです。

関連項目:
"ALL_HIVE_DATABASES"

USER_HIVE_TABLES

USER_HIVE_TABLESは、Hiveメタストア内の現在のユーザーが所有するデータベースの表を示します。列(OWNERを除く)はALL_HIVE_TABLESの列と同じです。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIGデータベース・ディレクトリのREAD権限も必要です。「共通ディレクトリについて」を参照してください。

関連項目:
"ALL_HIVE_TABLES"

USER_HIVE_COLUMNS

USER_HIVE_COLUMNSは、現在のユーザーが所有するHiveデータベースの表の列を示します。列(OWNERを除く)はALL_HIVE_COLUMNSの列と同じです。

Oracle Big Data SQL構成は、現在のユーザーのデフォルトのHiveデータベースを識別する必要があります。現在のユーザーには、ORA_BIGSQL_CONFIGデータベース・ディレクトリのREAD権限も必要です。「共通ディレクトリについて」を参照してください。

関連項目:
"ALL_HIVE_COLUMNS"

用語集

Apache Flume

ほぼあらゆるソースからHDFSやHBaseなどのデータ・ストアにデータを収集して集計するための分散サービス。

「Apache HBase」、「HDFS」も参照してください。

Apache HBase

CDHクラスタ内に格納されている大量の疎データに対して、ランダムな読取り/書込みアクセス権を提供するオープンソースの列指向データベース。キーによる値の高速ルックアップを備え、1秒当たり何千件もの挿入、更新、削除操作を実行できます。

Apache Hive

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

Hiveを使用することにより、MapReduceプログラムをJavaで記述しないですみます。

Hive Thrift、HiveQL、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」も参照してください。

Search

「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

アクセス・ドライバ, 6.1.1

ACCESS PARAMETERS句, 6.4.5

特殊文字, 7

構文ルール, 7

ACCESS PARAMETERS句

構文, 7

アクティビティ・レポート, 2.13.3 ALL_HIVE_COLUMNSビュー, 6.3.2.2, 7 ALL_HIVE_DATABASESビュー, 7 ALL_HIVE_TABLESビュー, 6.3.2.1, 7 Apache Sentry, 2.12.3 アプリケーション・アダプタ, 1.5.2.3 アプリケーション

データのプル, 4.1, 4.1.1

データのプッシュ, 4.1.2

配列オーバーフロー, 7 Audit Vault

プラグイン構成, 6.1.4

Audit Vaultプラグイン, 2.13.2 サービスから収集されたデータの監査, 2.13.1 認証, 3.1 認証, 2.12.3 autoAnalyze構成プロパティ, 5.6, 5.12 autoAnalyzeプロパティ, 5.4.3.2 autoBalance構成プロパティ, 5.6, 5.12 Automated Service Manager

「OASM」を参照

B

BALANCER_HOME環境変数, 5.3, 5.3

bdadiagユーティリティ, 2.14

Berkeley DB, 1.4.3

ベスト・プラクティス, 5.1

ビッグ・データの説明, 1.1

バイナリ・オーバーフロー, 7

ビジネス・インテリジェンス, 1.2, 1.4, 1.6

byteWeight構成プロパティ, 5.12

C

カタログ・ビュー, 7

CDH

説明, 1.3

診断情報, 2.14

ファイル・システム, 1.4.1

リモート・クライアント・アクセス, 3.2

セキュリティ, 3.1

バージョン, 2.5.1

文字オーバーフロー, 7 分割されたキー, 5.12 ファイルのチャンク化, 1.4.1 クライアント・アクセス

HDFSクラスタ, 3.2.4

HDFSの保護されたクラスタ, 3.2.5

Hive, 3.3

クライアント構成, 3.2 Cloudera's Distribution including Apache Hadoop

「CDH」を参照

Cloudera Manager

説明, 2.2

管理ツールへのアクセス, 2.2.2

接続, 2.2

ハードウェア障害の影響, 2.7.5

ソフトウェア依存関係, 2.7.5

起動, 2.2

UIの概要, 2.2.1

バージョン, 2.5.1

クラスタ, 定義, 1.3 列マッピング, 7 共通ディレクトリ, 6.7.2 com.oracle.bigdata.colmap, 7 com.oracle.bigdata.datamode, 7 com.oracle.bigdata.erroropt, 7 com.oracle.bigdata.fields, 7 com.oracle.bigdata.fileformat, 7 com.oracle.bigdata.log.exec, 7 com.oracle.bigdata.log.qc, 7 com.oracle.bigdata.overflow, 7 com.oracle.bigdata.rowformat, 7 com.oracle.bigdata.tablename, 7 confidence構成プロパティ, 5.12 カウンティング・リデューサ, 5.1.3 CREATE TABLE ORGANIZATION EXTERNAL構文, 6.3.1, 6.4 CREATE TABLE文

Hive用の自動生成, 7

CREATE_EXTDDL_FOR_HIVE関数, 6.3.2.2

構文, 7

D

データ・ディクショナリ・ビュー, 7

データ・モード, 7

データ・レプリケーション, 1.4.1

データ・スキュー, 5.1

データ・ソース名, 7

データ型変換(Big Data SQL), 6.5

データ型(HDFS), 7

DataNode, 2.7.2

dbaグループ, 2.12.1

DBA_HIVE_COLUMNSビュー, 7

DBA_HIVE_DATABASESビュー, 7

DBA_HIVE_TABLESビュー, 7

DBMS_HADOOPパッケージ, 6.3.2.2, 7

DBMS_OUTPUTパッケージ, 6.3.2.2

DEFAULT DIRECTORY句, 6.4.2

デリミタ付きテキスト・ファイル, 7

診断情報, 収集, 2.14

ディスク, 2.7.1

dnsmasqサービス, 4.4

データの複製, 1.4.1

E

emcliユーティリティ, 2.1.2

enableSorting構成プロパティ, 5.12

暗号化, 2.12.4

エンジアド・システム, 1.2

エラー処理, 7

エラー処理(Big Data SQL), 6.6.2

Exadata Database Machine, 1.2

Exadataのインフィニバンド接続, 4.3

Exalytics In-Memory Machine, 1.2

外部表の句, 6.4

外部表, 1.5.2.1

概要, 6.1.1

F

フェイルオーバー

JobTracker, 2.6.5

NameNode, 2.6.4

feedbackDir構成プロパティ, 5.12 フィールド抽出, 7 フィールド名, 7 ファイル, HDFSのリカバリ, 3.5 第1NameNode, 2.7.3 Flume, 2.5.2, 2.12.1 ftp.oracle.com, 2.14

G

グループ, 2.12.1, 3.4

H

Hadoop Distributed File System

「HDFS」を参照

hadoopグループ, 3.4 Hadoopログ・ファイル, 7 Hadoopのバージョン, 1.3 HADOOP_CLASSPATH環境変数, 5.3, 5.11.1 HADOOP_USER_CLASSPATH_FIRST環境変数, 5.3 HBase, 2.5.2, 2.12.1 HDFS

説明, 1.3, 1.4.1

監査, 2.13.1

ユーザー・アイデンティティ, 2.12.1

HDFSファイル, 6.3.3 Oracleサポートからのヘルプ, 2.14 Hive, 2.12.1

説明, 1.4.2

監査, 2.13.1

クライアント・アクセス, 3.3

ノードの場所, 2.7.6

ソフトウェア依存関係, 2.7.5

表, 3.4.1

ユーザー・アイデンティティ, 2.12.1, 2.12.1, 2.12.1

Hive列, 7 Hiveデータ

Oracle Databaseからのアクセス, 6.3.2

Hiveデータベース, 7 hiveグループ, 3.4 Hive表ソース, 7 Hive表, 7 Hiveビュー, 7 HiveQL, 1.4.2 HotSpot

「Java HotSpot仮想マシン」を参照

Hue, 2.7.6

ユーザー・アイデンティティ, 2.12.1

ユーザー, 3.4.1

I

Impala, 2.5.2

Exadataへのインフィニバンド接続, 4.3

インフィニバンド・ネットワーク構成, 4

inputFormat.mapred.*構成プロパティ, 5.12

CDHクライアントのインストール, 3.2

J

Java HotSpot仮想マシン, 2.5.1

JDBCクライアント, SDP用の構成, 4.6

Job Analyzer, 5.1.3, 5.4.1

ジョブ間隔, 5.1

jobconfPathプロパティ, 5.12

jobHistoryPath構成プロパティ, 5.12

JobTracker

フェイルオーバー, 2.6.5

セキュリティ, 3.1

ユーザー・アイデンティティ, 2.12.1

JobTrackerノード, 2.7.5

K

Kerberos認証, 3.1

Kerberosのコマンド, 3.1

Kerberosユーザー設定, 3.4.1.2

キー分割, 5.1.1

keyLoad.minChopBytes構成プロパティ, 5.12

キー, リデュースへの割当て, 5.1.1

キー/値データベース, 1.4.3

keyWeight構成プロパティ, 5.12

ナレッジ・モジュール, 1.5.2.3

L

linearKeyLoadプロパティ, 5.4.3.2

linearKeyLoad.*構成プロパティ, 5.12

Linux

ディスクの場所, 2.7.1

インストール, 2.5.1

ロード, 5.1 ロード・バランサ, 5.1.3 データのロード, 1.5.2.1, 1.5.2.2 LOCATION句, 6.4.3 ログ・ファイル, 7 ログイン権限, 3.4.2

M

マッパー・ワークロード, 5.1.1

mapred構成プロパティ, 5.12

mapredユーザー, 2.12.1

mapred.map.tasks構成プロパティ, 5.12

MapReduce, 1.3, 1.5.1, 2.13.1, 3.1, 3.4.1

mapreduce構成プロパティ, 5.12

map.tasksプロパティ, 5.12

maxLoadFactor構成プロパティ, 5.12

maxSamplesPct構成プロパティ, 5.12

max.split.size構成プロパティ, 5.12

minChopBytes構成プロパティ, 5.12

minSplits構成プロパティ, 5.12

アクティビティの監視, 2.13.3

マルチラック・クラスタ

サービス・ロケーション, 2.6.2

MySQLデータベース

概要, 2.7.5

ポート番号, 2.12.5

ユーザー・アイデンティティ, 2.12.1

バージョン, 2.5.1

N

NameNode, 3.1

第1, 2.7.3

NameNodeフェイルオーバー, 2.6.4 Navigator, 2.5.2 NoSQLデータベース

「Oracle NoSQL Database」を参照

numThreads構成プロパティ, 5.12

O

OASM, ポート番号, 2.12.5

ODI

「Oracle Data Integrator」を参照

oinstallグループ, 2.12.1, 3.4 オンディスク暗号化, 2.12.4 Oozie, 2.7.6

監査, 2.13.1

ソフトウェア依存関係, 2.7.5, 2.7.5

ソフトウェア・サービス, 2.12.1

ユーザー・アイデンティティ, 2.12.1

openib.confファイル, 4.5 オペレーティング・システム・ユーザー, 2.12.1 Oracle Audit Vault and Database Firewall, 2.13

プラグイン構成, 6.1.4

Oracle Automated Service Manager

「OASM」を参照

Oracle Big Data SQL

アクセス・ドライバ, 6.1.1

データ型の変換, 6.5

概要, 6.1

Oracle Exadata Machineでのインストールの変更, 6.7

セキュリティ, 6.1.4

Oracle Data Integrator

概要, 1.5.2.1, 1.5.2.3

ノードの場所, 2.7.6

ソフトウェア依存関係, 2.7.5

バージョン, 2.5.1

Oracle Data Integratorエージェント, 2.12.5 Oracle Database

Hiveデータへのアクセス, 6.3.2

HDFSファイル・アクセス, 6.3.3

Oracle Database Instant Client, 2.5.1 Oracle Exadata Database Machine, 1.2, 4

CDHクライアントとしての使用, 3.2.2

Oracle Exadata Machine

Big Data SQLインストールの変更, 6.7

Oracle Exalytics In-Memory Machine, 1.2 Oracle Linux

説明, 1.3

HDFSとの関係, 1.3

バージョン, 2.5.1

Oracle Loader for Hadoop, 1.5.2.2, 2.5.1 Oracle NoSQL Database

概要, 1.4.3, 1.5.2.4

ポート番号, 2.12.5

バージョン, 2.5.1

Oracle R Advanced Analytics for Hadoop, 1.5.2.5, 2.5.1 Oracle R Enterprise, 1.5.3 Oracle SQL Connector for HDFS, 1.5.2.1 Oracleサポート, サービス・リクエストの作成, 2.14 oracleユーザー, 2.12.1, 3.4 Oracle XQuery for Hadoop, 1.5.2.4, 2.5.1 ORACLE_HDFSアクセス・ドライバ, 6.3.3, 6.3.3.1 ORACLE_HIVE

アクセス・パラメータ, 7

ORACLE_HIVEアクセス・ドライバ, 6.3.2.3 ORACLE_HIVEの例, 6.3.2.3 oracle.hadoop.balancer.*構成プロパティ, 5.12 oracle.hadoop.balancer.autoAnalyze構成プロパティ, 5.6 oracle.hadoop.balancer.autoAnalyzeプロパティ, 5.4.3.2 oracle.hadoop.balancer.autoBalance構成プロパティ, 5.6 oracle.hadoop.balancer.Balancerクラス, 5.10 oracle.hadoop.balancer.KeyLoadLinearクラス, 5.12, 5.12 oracle.hadoop.balancer.linearKeyLoad.*プロパティ, 5.4.3.2 ORCファイル, 7 out of heap spaceエラー, 5.9 オーバーフロー処理, 7

P

Parquetファイル, 7

HDFSファイルの解析, 7

パーティショニング, 2.7.1, 5.1.1

パスフレーズベースの暗号化, 2.12.4

Perfect Balance

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

基本的な手順, 5.3

説明, 5.1

プランニング・アプリケーション, 1.2 PL/SQLパッケージ, 7 ポート・マップ, 2.12.5 ポート番号, 2.12.5, 2.12.5 Exadataへのデータのプル, 4.1, 4.1.1 Puppet

ポート番号, 2.12.5

セキュリティ, 2.12.6

ユーザー・アイデンティティ, 2.12.1

Puppetマスター

ノードの場所, 2.7.3

Exadataへのデータのプッシュ, 4.1.2 PUT_LINE関数, 6.3.2.2

R

R Connector

「Oracle R Advanced Analytics for Hadoop」を参照

R distribution, 2.5.1 R言語のサポート, 1.5.3 レンジ・パーティション化, 5.1.1 RCファイル, 7 HDFSファイルのリカバリ, 3.5 リデューサ・ロード, 5.1 REJECT LIMIT句, 6.4.4 リモート・クライアント・アクセス, 3.2, 3.3 データのレプリケート, 1.4.1 report.overwrite構成プロパティ, 5.12 reportPath構成プロパティ, 5.12 リソース管理, 2.5.3, 2.10.2 行形式の説明, 7 行形式, 7 rowWeight構成プロパティ, 5.12 rpc.statdサービス, 2.12.5

S

SDPリスナー構成, 4.7

SDP overインフィニバンド, 4

SDP, Exadataでの有効化, 4.5

検索, 2.5.2

セキュリティ, 2.12

Sentry, 2.12.3

順次ファイル, 7

SerDe解析, 7

サービス・リクエスト, CDH用に作成, 2.14

サービス・タグ, 2.12.5

サービス

監査, 2.13.1

ノードの場所, 2.6.1

スキュー, 5.1 SmartScan, 6.1.3 SmartScanモード, 7 Sockets Direct Protocol, 4.1 ソフトウェア・コンポーネント, 2.5.1 ソフトウェア・フレームワーク, 1.3 ソフトウェア・サービス

ノードの場所, 2.6.1

ポート番号, 2.12.5

ソース名, 7 Spark, 2.5.2 Sqoop, 2.5.2, 2.12.1 sshサービス, 2.12.5 静的データ・ディクショナリ・ビュー, 7 structオーバーフロー, 7 svctag user, 2.12.1

T

表, 1.5.2.1, 1.5.2.2, 3.4.1

TaskTracker

ユーザー・アイデンティティ, 2.12.1

テキスト・ファイル, 7 テキスト・オーバーフロー, 7 tmpDir構成プロパティ, 5.12 tools.*構成プロパティ, 5.12 TPM暗号化, 2.12.4 ごみ箱機能, 3.5 ごみ箱機能, 無効化, 3.5.3.1 ごみ箱を空にする間隔, 3.5.2 CDHのトラブルシューティング, 2.14 TYPE句, 6.4.1

U

unionオーバーフロー, 7

診断情報のアップロード, 2.14

useClusterStats構成プロパティ, 5.12

useMapreduceApi構成プロパティ, 5.12

Oracle Databaseからのユーザー・アクセス, 6.6

ユーザー・アカウント, 3.4.1

ユーザー・グループ, 3.4

USER_HIVE_COLUMNSビュー, 7

USER_HIVE_DATABASESビュー, 7

USER_HIVE_TABLESビュー, 7

ユーザー

Cloudera Manager, 2.2.2

オペレーティング・システム, 2.12.1

W

writeKeyBytes構成プロパティ, 5.12

X

xinetdサービス, 2.12.5

XQueryコネクタ

「Oracle XQuery for Hadoop」を参照

Y

YARNのサポート, 1.5.1, 2.11

Z

ZooKeeper, 2.12.1

オラクル社の法律上の注意点について

コピーライトについて

Copyright © 1994-2014, Oracle and/or its affiliates.All rights reserved.

商標と登録商標について

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の登録商標です。

ライセンス制約の保証と結果的に生じる損害の免責

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

保証免責

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

制限付権利

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

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）、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

第三者のコンテンツ、製品、サービスに対する免責事項

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

ドラフトのアルファ版およびベータ版ドキュメントについて

このドキュメントが試作版の場合:

このドキュメントは試作版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。オラクル社およびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。