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インストーラで自動的に設定されます。
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に記載されている完全な手順のかわりに、この省略版の手順を使用します。 また、以下でパッチ23237037は12.1.0.2 (またはそれ以前のOracle Databaseリリース)のみに必要である点に注意してください。それより後でリリースされたOracle Databaseを稼働している場合は、このパッチはインストールしないでください。
Oracle Databaseサーバーにoracle
ユーザーとしてログオンします。
Copy to Hadoopと連携するようにOHSHを設定します。
Oracle Databaseノード上のファイル・システム内にステージング・ディレクトリを作成します。
$ mkdir <OS_STAGE_DIR>
このステージング・ディレクトリ上に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ディレクトリ・オブジェクト名(この手順の前に作成したディレクトリの名前)を指定します。CDHベースのHadoopシステム(Oracle Big Data Applianceなど)に接続する場合は、次のサブステップを実行して、HDFSマウント可能FUSEディレクトリを介してHive表にファイルをコピーするOHSH "FUSE"メソッドを有効にします。HDPはFuseをサポートしないため、これらの手順を使用してHDP上のHDFSへのマウント・ポイントを作成することはできない点に注意してください。
Oracle Database 12.1.0.2以上を使用している場合は、すべてのデータベース・ノード上にパッチ23237037 (My Oracle Supportで入手可能)をインストールします。
Oracle Databaseホスト上で、Hadoopクラスタ上のHDFSシステムのrootへのFUSEマウントを作成します。FUSEのインストールについては、Clouderaのドキュメントを参照してください。最新の手順は、ClouderaのWebサイトの「Configuring Mountable HDFS」で見つかる可能性があります。
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>
を指すようにしてください
依存関係のホーム・ディレクトリを構成するには、$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>"
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>
OHSHセッションを開始し、リソースをチェックします。このチェックにより、構成が正しいかどうか示されます。
$ ohsh ohsh> show resources
リソースhadoop0
、hive0
、およびbash0
であることを確認してください。
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のインストールには関係がない余分な情報が含まれています。そのかわりに次の手順を使用してください。HadoopシステムがOracle Big Data Applianceでない場合は、SQL*Plus Instant ClientとOracle Instant Client for LinuxをOracle Technology Networkからダウンロードします。Oracle Databaseのバージョンと一致するクライアント・バージョンを選択してください。
たとえば、Oracle Database 12.2.0.1.0のクライアントは、このアドレスhttp://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.htmlでダウンロードできます。
両方のパッケージを同じディレクトリ内に抽出します。
ディレクトリをPATH
およびLD_LIBRARY_PATH
に追加します。
TNS用のローカル・ディレクトリを作成し、Oracle Databaseホスト上のTNS_ADMIN
から、tnsnames.ora
およびsqlnet.ora
ファイルをこのディレクトリ内にコピーします。
sqlnet.ora
が正しいOracle Walletの場所を指していることを確認します。WALLET_LOCATION=
(SOURCE=(METHOD=FILE)(METHOD_DATA=
(DIRECTORY=<your wallet directory>)))
sqlnet.wallet_override=true
/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>"
さらに、TNSおよびOracle Walletが有効な場合は、次の変数をファイルに追加してエクスポートします。
export WALLET_LOCATION="<your wallet directory>" export TNS_ADMIN="<your TNS directory>"
PATH変数に/opt/oracle/ohsh
および$HADOOP_HOME/bin
を追加します
PATH=/opt/oracle/ohsh-<version>/bin:$PATH PATH=$HADOOP_HOME/bin:$PATH
OHSHセッションを開始し、リソースをチェックします。このチェックにより、構成が正しいかどうか示されます。
$ ohsh ohsh> show resources
リソースhadoop0
、hive0
、およびbash0
であることを確認してください。