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を構成する方法を説明しています。
この章は次の項で構成されています:
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アドレスを識別するには、次の手順に従います。
-
まだインストールしていない場合は、Oracle Exadata Database MachineにCDHクライアントをインストールします。「CDHへのリモート・クライアント・アクセスの提供」を参照してください。
-
すべてのOracle Big Data Applianceサーバーについて、プライベート・ホスト名とインフィニバンドIPアドレスのリストを取得します。
1台のOracle Big Data Applianceラックには、6、12または18台のサーバーを搭載できます。
-
root
権限を使用して、Oracle Exadata Database Machineにログインします。 -
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
-
/etc/nsswitch.conf
で、次のような行を探します。hosts: files dns
この行で、記述の順序が逆(
dns files
)になっていないことを確認します。逆になっている場合、/etc/hosts
に追加した記述は使用されません。必要に応じてファイルを編集します。 -
すべての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 . . .
-
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アドレスを識別するには、次の手順を実行します。
-
すべてのOracle Exadata Database Machineサーバーについて、プライベート・ホスト名とインフィニバンドIPアドレスのリストを取得します。
-
root
権限でOracle Big Data Applianceにログインします。 -
Oracle Big Data Appliance上で
/etc/hosts
を編集し、Oracle Exadata Database Machineのホスト名とインフィニバンドIPアドレスを追加します。 -
/
etc/nsswitch.conf
で、次のような行を探します。hosts: files dns
この行で、記述の順序が逆(
dns files
)になっていないことを確認します。逆になっている場合、/etc/hostsに追加した記述は使用されません。必要に応じてファイルを編集します。 -
# service dnsmasq restart
-
すべてのOracle Exadata Database Machineサーバーをpingします。
ping
が完了し、インフィニバンドIPアドレスが表示されたことを確認します。 -
サイズの大きいファイルをOracle Exadata Database Machineサーバーにダウンロードし、接続をテストします。ネットワーク監視ツール(
sar
など)で、インフィニバンド・デバイス上のI/Oアクティビティが示されることを確認します。ファイルをダウンロードするには次のような構文を使用します。この例では、
mydata.json
という名前のファイルをdm01ce108
ストレージ・サーバーにコピーします。$ scp mydata.json oracle@dm01cel08-priv.example.com:mybigdata.json oracle@dm01cel08-priv.example.com's password: password
4.5 Exadata DatabaseノードでのSDPの有効化
SDPによって、Oracle Big Data Appliance上で動作して大きなデータ・ロードをOracle Exadata Database Machine上のOracle Databaseにプッシュするクライアント・アプリケーションのパフォーマンスが向上します。
次の手順では、Oracle Linuxを実行しているOracle Exadata Database Machine内のデータベース・ノード上でSDPを有効化する方法について説明します。また、SDPを使用するジョブごとにアプリケーションを構成する必要があります。
Oracle Exadata Database Machine上でSDPを有効化するには、次の手順に従います。
-
テキスト・エディタで
/etc/infiniband/openib.conf
ファイルを開いて、次の行を追加します。set: SDP_LOAD=yes
-
これらの変更を保存し、ファイルを閉じます。
-
SDPとTCPの両方を有効にするには、テキスト・エディタで
/etc/ofed/libsdp.conf
を開き、use both
ルールを追加します。use both server * : use both client * :
-
これらの変更を保存し、ファイルを閉じます。
-
テキスト・エディタで
/etc/modprobe.conf
ファイルを開いて、次の設定を追加します。options ib_sdp sdp_zcopy_thresh=0 recv_poll=0
-
これらの変更を保存し、ファイルを閉じます。
-
これらの変更を、Oracle Exadata Database Machineラック内のすべてのデータベース・ノードにレプリケートします。
-
すべてのデータベース・ノードを再起動して、変更を有効化します。
-
Oracle Exadata Database Machineラックが複数ある場合は、すべてのラックでこれらのステップを繰り返します。
次のようにして、SDPプロトコルをロード・ジョブに指定します。
-
HADOOP_OPTS
環境変数にJVMオプションを追加して、JDBC SDPエクスポートを有効にします。HADOOP_OPTS="-Doracle.net.SDP=true -Djava.net.preferIPv4Stack=true"
-
Hadoopコマンドまたはジョブの構成ファイルのいずれかで、
mapred.child.java.opts
構成プロパティを設定してSDPの子タスクJVMを有効にします。たとえば、MapReduceジョブのコマンドライン内のこれらのオプションを使用します。
-D mapred.child.java.opts="-Doracle.net.SDP=true -Djava.net.preferIPv4Stack=true"
-
標準のイーサネット通信をジョブに対して構成します。
たとえば、Oracle Loader for Hadoopは、
oracle.hadoop.loader.connection.url
プロパティの値をジョブ構成ファイルから読み込みます。この値は次の構文を使用します。jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=hostName)(PORT=portNumber))) (CONNECT_DATA=(SERVICE_NAME=serviceName)))
hostName、portNumberおよびserviceNameは、Oracle Exadata Database Machine上のSDPリスナーを識別するための適切な値に置き換えます。
-
ExadataでOracleリスナーを、SDPプロトコルをサポートするように構成し、特定のポート・アドレス(1522など)にバインドします。
たとえば、Oracle Loader for Hadoopは、
oracle.hadoop.loader.connection.oci_url
プロパティの値をジョブ構成ファイルから読み込みます。この値は次の構文を使用します。(DESCRIPTION=(ADDRESS=(PROTOCOL=SDP) (HOST=hostName) (PORT=portNumber)) (CONNECT_DATA=(SERVICE_NAME=serviceName)))
4.6 InfiniBandネットワーク上でのSDPリスナーの作成
インフィニバンド・ネットワーク上に着信するOracle Big Data Appliance接続に対するリスナーを追加するには、まず仮想IPアドレスを使用してインフィニバンド・ネットワーク用のネットワーク・リソースを追加します。
注意:
次の手順は、Oracle Linux 5を実行しているExadata V2、X2-2およびX3-2ノードに適用されます。My Oracle Supportのドキュメント1580584.1は、これらと同じシステムでの手順およびLinux 6を実行しているX4-2、X5-2およびX6-2での手順を説明しています。
次のこの例では、Oracle Exadata Database Machineクォータ・ラック用の2つのノードを列挙しています。Oracle Exadata Database Machineのハーフ・ラックまたはフル・ラックを使用している場合は、クラスタ内のノードごとにノード固有の行を繰り返す必要があります。