9 インストールされる追加ツール

9.1 Copy to HadoopおよびOHSH

Copy to Hadoop

Copy to Hadoopを使用すると、データを特定してOracle Database表からApache Hadoop Distributed File System (HDFS)にデータをコピーし、そのデータでApache Hive外部表を作成することが簡単になります。HDFSでは、データはOracleデータ・ポンプ・ファイル内に保存されます(データをOracleデータ型として格納)。これにより、データ型の変換エラーが発生することなく、データベース内にデータの正確なコピーを持つことができます。その後、Hive (およびHiveを通してデータにアクセスするHadoopテクノロジ)とOracle Big Data SQLによって問い合せることができます。Oracleデータ・ポンプ・データは、Hiveを使用してParquetまたはORCに変換できます

Oracle Shell for Hadoop Loaders (OHSH)

OHSHは、HadoopとOracle Database間でデータを移動するための直感的なコマンドライン・ツールです。Oracle Database表からHive表への内容のコピーに使用できる一連の宣言型コマンドを提供します。

OHSHは、Oracle Big Data SQLとOracle Big Data Connectorsの両方にバンドルされています。Oracle Big Data SQLでは、OHSHはCopy to Hadoopと連携します。Oracle Big Data Connectorsでは、OHSHは、Oracle Loader for Hadoop (OLH)およびOracle SQL Connector for Hadoop Distributed File System (OSCH)を使用してHadoopおよびHiveからOracle表に内容をコピーするためのインタフェースを提供します。

OHSHは、OLH、OSCH、およびCopy to Hadoopのフロント・エンドとして機能しますが、OLHおよびOSCHはOracle Big Data Connectors製品の一部であり、Oracle Big Data SQLによってはインストールされません。

Copy to HadoopおよびOHSHのインストールと構成

Copy to HadoopおよびOHSHは、次のいずれの環境からでも使用できます。

  • Hadoopクラスタ・ノード

  • Oracle Databaseノード

  • エッジ・ノード。

Oracle Big Data SQLでは、Hadoopクラスタ管理サーバーと、Oracle Big Data SQLがインストールされている任意のOracle Databaseサーバー・ノードの両方にCopy to HadoopおよびOracle Shell for Hadoop Loaders用のキットがインストールされます。

また、両方のツールのキットをHadoopクラスタ管理サーバーからエッジ・ノードに手動でコピーし、エッジ・ノードからこれらを使用するために構成することもできます。キットは/opt/oracle/orahivedp-<version>に格納されます。手順については、Hadoopクラスタ管理サーバー上の/opt/oracle/ohsh-<version>/doc/OHSH_EDGE_NODE_README.txtを参照してください。

ノート:

Oracle Big Data SQLのインストールでは、次の表に示すCP2HADOOP_HOMEの設定以外、Copy to Hadoopは完全に自動化されています。これは手動で設定する必要があります。

Oracle Shell for Hadoop Loadersの構成は、この項で説明するとおり手動で完了する必要があります。

OHSHの環境変数

Hadoopクラスタ管理サーバーでは、OHSH構成ファイルは/opt/oracle/ohsh-<version>/bin/ohsh_config.shです。Oracle Databaseノードでは、$ORACLE_HOME/ohsh/bin/ohsh_config.shです。このファイルには、OHSHで必要な環境が含まれます。Hadoopクラスタ、Oracle Databaseノードまたはエッジ・ノード上のインストールで必要な変数セットは異なります。次の表は、各環境に設定する必要がある変数を示しています。必要な変数のいくつかは、Oracle Big Data SQLインストーラで自動的に設定されます。

9.1.1 Oracle DatabaseノードでのOHSH構成の完了

Oracle Big Data SQLのインストールでは、自動的にOHSHインストール・キットがOracle Big Data SQLがインストールされている各ノードにコピーされます。インストールを完了するには、手動でいくつかのステップを実行する必要があります。

ノート:

Oracle Big Data SQLがインストールされているHadoopクラスタ管理サーバー上にある$ORACLE_HOME/ohsh/doc/OHSH_DB_NODE_README.txtのREADMEファイルに、Oracle DatabaseノードでOHSHを有効にするために必要な一連の完全なステップが記述されています。ただし、Oracle Big Data SQLによってOHSHがインストールされる際、一部の設定はインストーラによって実行されます。このコンテキストで構成を完了するには、READMEに記載されている完全な手順のかわりに、この省略版の手順を使用します。

  1. Oracle Databaseサーバーにoracleユーザーとしてログオンします。

  2. Copy to Hadoopと連携するようにOHSHを設定します。

    1. Oracle Databaseノード上のファイル・システム内にステージング・ディレクトリを作成します。

      $ mkdir <OS_STAGE_DIR>
    2. このステージング・ディレクトリ上にOracleディレクトリを作成し、Oracle Databaseユーザー(oracleなど)に読取り/書込み権限を付与します。この例では、ORACLE_STAGE_DIRはOracle Database内のディレクトリ・オブジェクトの名前を指します。OS_STAGE_DIRはサーバー上のパスを指します。

      SQL> CREATE DIRECTORY <ORACLE_STAGE_DIR> AS '<OS_STAGE_DIR>';
      SQL> GRANT READ,WRITE ON DIRECTORY <ORACLE_STAGE_DIR> TO <ORACLE_USER>;

      ノート:

      後で"stage"メソッドを使用してOracle表をコピーする場合は、OHSHのset locationdirectoryコマンドを使用してOracleディレクトリ・オブジェクト名(このステップの前に作成したディレクトリの名前)を指定します。
    3. CDHベースのHadoopシステム(Oracle Big Data Applianceなど)に接続する場合は、次のサブステップを実行して、HDFSマウント可能FUSEディレクトリを介してHive表にファイルをコピーするOHSH "FUSE"メソッドを有効にします。HDPはFuseをサポートしないため、これらのステップを使用してHDP上のHDFSへのマウント・ポイントを作成することはできない点に注意してください。

      1. Oracle Databaseホスト上で、Hadoopクラスタ上のHDFSシステムのrootへのFUSEマウントを作成します。FUSEのインストールについては、Clouderaのドキュメントを参照してください。最新の手順は、ClouderaのWebサイトの「Configuring Mountable HDFS」で見つかる可能性があります。

      2. FUSEマウント上にOracleディレクトリを作成し、権限を付与します。この例では、ORACLE_FUSE_DIRはOracle Database内のディレクトリ・オブジェクトの名前を指します。OS_FUSE_MOUNTは、サーバー上のマウント・ポイントへのパスを指します。

              SQL> CREATE DIRECTORY <ORACLE_FUSE_DIR> AS '<OS_FUSE_MOUNT>';
              SQL> GRANT READ,WRITE ON DIRECTORY <ORACLE_FUSE_DIR> TO <ORACLE_USER>;

      後でOHSHで、"FUSE"メソッドを使用してOracle表をHiveにコピーする場合は、OHSHのset locationdirectoryコマンドを使用して同じ<ORACLE_FUSE_DIR>を指すようにしてください

  3. 依存関係のホーム・ディレクトリを構成するには、$ORACLE_HOME/ohsh/bin/ohsh_config.shを編集します。OHSHがOracle Big Data SQLによってインストールされた場合は、必要な変数の大部分はすでに設定されています。次のように、HS2_HOST_PORTおよび(必要であれば)HIVE_SESS_VAR_LISTを設定します。

    export HS2_HOST_PORT=<HS2_HOST>:<HS2_PORT>
    

    また、HIVE_SESS_VAR_LISTを任意の必要なHiveセッション変数に設定します。次に例を示します。

    • Kerberos認証を使用してHiveServer2に接続する場合: export HIVE_SESS_VAR_LIST="principal=<The server principal of HiveServer2>"

      Hiveプリンシパルは構成プロパティhive-site.xml内のhive.server2.authentication.kerberos.principalで指定されます。

    • HTTPモードで稼働しているHiveServer2に接続する場合: export HIVE_SESS_VAR_LIST="transportMode=http;httpPath=<The HTTP endpoint>"

    • SSLが有効なときにHiveServer2に接続する場合: export HIVE_SESS_VAR_LIST="ssl=true;sslTrustStore=<Trust Store path>;trustStorePassword=<Trust Store password>"

  4. Oracle Walletを使用するようにOHSH構成する場合は、環境変数TNS_ADMINおよびWALLET_LOCATIONをTNSおよびOracle Walletが格納されているディレクトリ・パスに設定します。

    export WALLET_LOCATION="<wallet_location>"
    export TNS_ADMIN="<tns_admin_location>"

    ノート:

    OHSHセッションを開始する際、TNS_ADMINおよびWALLET_LOCATIONがHadoopクラスタ上で異なる場合は、次のようにhadooptnsadminおよびhadoopwalletlocationを設定します。

    set hadooptnsadmin <tns_admin_hadoop_node>
    set hadoopwalletlocation <wallet_location_hadoop_node>
  5. OHSHセッションを開始し、リソースをチェックします。このチェックにより、構成が正しいかどうか示されます。

    $ ohsh
    ohsh> show resources

    リソースhadoop0hive0、およびbash0であることを確認してください。

9.1.2 Hadoopクラスタ上のOHSH構成の完了

Hadoopクラスタ管理サーバー上では、Oracle Big Data SQLはRPMから/opt/oracle/ohshにOHSHをインストールします。Hadoop側の構成を完了するには、rootとして次のステップを実行します。

ノート:

Hadoopクラスタ管理サーバー上にある$ORACLE_HOME/ohsh/doc/OHSH_HADOOP_NODE_README.txtのインストール手順には、Oracle Big Data SQLインストールのコンテキストでのCopy to HadoopおよびOHSHのインストールには関係がない余分な情報が含まれています。そのかわりに次の手順を使用してください。
  1. HadoopシステムがOracle Big Data Applianceでない場合は、SQL*Plus Instant ClientとOracle Instant Client for LinuxをOracle Technology Networkからダウンロードします。Oracle Databaseのバージョンと一致するクライアント・バージョンを選択してください。

    両方のパッケージを同じディレクトリ内に抽出します。

    ディレクトリをPATHおよびLD_LIBRARY_PATHに追加します。

  2. TNS用のローカル・ディレクトリを作成し、Oracle Databaseホスト上のTNS_ADMINから、tnsnames.oraおよびsqlnet.oraファイルをこのディレクトリ内にコピーします。

    Oracle Databaseホスト用のOracle Walletを作成する場合は、データ・サーバーからOracle Walletファイルもコピーします。また、sqlnet.oraが正しいOracle Walletの場所を指していることを確認します。
    WALLET_LOCATION= 
          (SOURCE=(METHOD=FILE)(METHOD_DATA= 
            (DIRECTORY=<your wallet directory>))) 
       sqlnet.wallet_override=true
  3. rootとして、/opt/oracle/ohsh/bin/ohsh_config.shを編集します。次の環境変数を設定します。
    export CP2HADOOP_HOME=/opt/oracle/orahivedp-<version 
    export HS2_HOST_PORT=<HiveServer2 hostname>:<Port number>
    

    また、HIVE_SESS_VAR_LISTを任意の必要なHiveセッション変数に設定します。次に例を示します。

    • Kerberos認証を使用してHiveServer2に接続する場合: export HIVE_SESS_VAR_LIST="principal=<The server principal of HiveServer2>"

    • HTTPモードで稼働しているHiveServer2に接続する場合: export HIVE_SESS_VAR_LIST="transportMode=http;httpPath=<The HTTP endpoint>"

    • SSLが有効なときにHiveServer2に接続する場合: export HIVE_SESS_VAR_LIST="ssl=true;sslTrustStore=<Trust Store path>;trustStorePassword=<Trust Store password>"

  4. さらに、TNSおよびOracle Walletが有効な場合は、次の変数をファイルに追加してエクスポートします。

    export WALLET_LOCATION="<your wallet directory>"
    export TNS_ADMIN="<your TNS directory>"
  5. PATH変数に/opt/oracle/ohshおよび$HADOOP_HOME/binを追加します

    PATH=/opt/oracle/ohsh-<version>/bin:$PATH
    PATH=$HADOOP_HOME/bin:$PATH 
  6. OHSHセッションを開始し、リソースをチェックします。このチェックにより、構成が正しいかどうか示されます。

    $ ohsh
    ohsh> show resources

    リソースhadoop0hive0、およびbash0であることを確認してください。

9.1.3 Copy to HadoopおよびOHSHの使用の概要

OHSHロード・メソッドの実行例は、$ORACLE_HOME/ohsh/docおよび$ORACLE_HOME/ohsh/examplesを参照してください。

Copy to HadoopおよびOracle Shell for Hadoop Loadersの詳細は、「Oracle Big Data SQLユーザーズ・ガイド」を参照してください。

9.1.4 ジョブ監視を有効にするOHSHの構成

OHSHのジョブが実行されると、そのジョブに関するステータスとその他の情報がバックエンド・データベースに記録されます。OHSHのコマンドラインから情報にアクセスするには、まずデータベースへの接続を構成する必要があります。

構成ステップ

ジョブ履歴を格納するデータベース・インスタンスを有効にするには、conf/smartloader-conf.xml内の次のプロパティを構成します。

  • oracle.hadoop.smartloader.diagnostics.jobhistory.jdbc.driver

    サポートされているバックエンド・データベース・タイプに対応するJDBCドライバを指定します。現在は、MYSQLORACLEが有効な値です。このプロパティが指定されていない場合、ジョブ履歴のコマンドは失敗します。

追加でプロパティを設定する必要があります。これらは、サポートされるバックエンド・データベースとして定義されているデータベース・タイプによって異なります。

  • jdc.driver = ORACLEの場合:

    • oracle.hadoop.smartloader.diagnostics.jobhistory.jdbc.oracleConnectId

      tnsnames.oraファイルで定義されているTNSエントリ名。
    • oracle.hadoop.smartloader.diagnostics.jobhistory.jdbc.oracleWalletDir

      JDBCを介してOracle Databaseスキーマに接続するために使用するOracle Walletを含むOSディレクトリ。

    • oracle.hadoop.smartloader.diagnostics.jobhistory.jdbc.oracleTnsDir

      OHSHを実行しているノード上のディレクトリへのファイル・パス。このディレクトリには、sqlnet.oratnsnames.oraなどのSQL*Net構成ファイルが含まれています。通常、これは${ORACLE_HOME}/network/adminです。

      ノート:

      HadoopクライアントからOHSHを実行しており、Oracle Walletを使用する場合は、Hadoopクライアント上の任意のディレクトリにtnsnames.oraおよびウォレット・ファイルをコピーします。
  • jdbc.driver = MYSQLの場合:

    • oracle.hadoop.smartloader.diagnostics.jobhistory.jdbc.mysqlConnectUrl

      MySQLデータベースへのJDBC接続の確立に使用するURL

    • oracle.hadoop.smartloader.diagnostics.jobhistory.jdbc.mysqlUser

      ジョブ履歴スキーマのMySQLユーザー

    • oracle.hadoop.smartloader.diagnostics.jobhistory.jdbc.mysqlPW

      MySQLユーザー・アカウントのパスワード

OHSHジョブの監視のためのコマンド

この構成が完了すると、次のOHSHコマンドを実行できるようになります。

  • ohsh> show job <job_id>

    IDで指定されたジョブの詳細が示されます。

  • ohsh> show job summary <job_id>

    IDで指定された、完了したジョブのパフォーマンスが示されます。

  • ohsh> show job abstract <job_id>

    ジョブの機能の説明が示されます。

  • ohsh>  show jobs [failed|running|completed|finished] [extended] [<integer>]

    特定のジョブ・ステータスの最後n個のジョブが示されます。

    • 最初のパラメータは、ジョブ・ステータスを指定します。ステータスが指定されていない場合は、ジョブ・ステータスに関係なく、すべてのジョブが示されます。

    • 2番目のパラメータは、詳細を表示するかどうかを指定します。

    • 3番目のパラメータは、指定されたステータスの最後n個のジョブを示すことを指定します。nが指定されていない場合は、そのステータスのすべてのジョブが示されます。

  • ohsh>  truncate jobs [<integer>]

    データベースから最後n個のジョブが削除されます。整数が指定されていない場合、このコマンドではすべてのジョブが削除されます。

9.2 Oracle SQL Access to Kafka

Apache KafkaクラスタおよびOracle Databaseを使用して作業する場合、Oracle SQL Access to Kafka (OSAK)を使用すると、Oracle SQLを介してKafkaブローカにアクセスできます。その後、Kafkaレコードのデータを問い合せ、KafkaデータをOracle Database表のデータと結合することもできます。

OSAKはオプションです。OSAKキットは、Oracle Big Data SQLのデータベース側インストーラbds-database-install.shを実行すると、Oracle Databaseシステムにコピーされます。OSAKを使用する場合、Oracle Access to Kafkaのインストールおよび構成の説明に従って設定を完了します