CountTableRowsサンプルのコンパイル、ビルドおよび実行

サンプルvehicleTableの作成とデータ移入のためのLoadVehicleTableプログラムを実行した後(付録「CountTableRowsのサポート・プログラム」を参照)、ただし、サンプルMapReduceジョブの実行前に、HadoopインフラストラクチャへのデプロイメントのためにCountTableRowsプログラムをコンパイルして、コンパイルしたアーティファクトをパッケージ化しておく必要があります。

CountTableRowsプログラムをコンパイルするには、プログラム・クラスパスに含める複数のHadoop JARファイルがインストールされていてビルド環境で使用可能になっている必要があります。該当するJARファイルは次のとおりです。
  • commons-logging-<version>.jar
  • hadoop-common-<version>.jar
  • hadoop-mapreduce-client-core-<version>.jar
  • hadoop-annotations-<version>.jar
  • hadoop-yarn-api-<version>.jar

ここに示した<version>トークンは、ビルド環境にインストールしたHadoopディストリビューションに含まれている対応するJARファイルの特定のバージョン番号を表しています。

たとえば、Clouderaバージョン6.3.0 (cdh6.3.0)でパッケージ化されているHadoopの3.0.0バージョンがパーセルによってシステムにインストールされていたとします。このパーセルとは、Clouderaがrpm/debパッケージのかわりとして提供するバイナリ・ディストリビューション形式です。また、そのHadoopのバージョンのクラスでは、1.1.3バージョンのcommons-loggingが使用されているとします。こうした前提に基づいて、CountTableRowsプログラムをコンパイルする場合は、次のコマンド・ラインを入力することになります。

cd /opt/oracle/nosql/apps/kv
javac -classpath \
    /opt/cloudera/parcels/CDH/jars/commons-logging-1.1.3.jar: \
    /opt/cloudera/parcels/CDH/jars/
        hadoop-common-3.0.0-cdh6.3.0.jar: \
    /opt/cloudera/parcels/CDH/jars/ \
        hadoop-mapreduce-client-core-3.0.0-cdh6.3.0.jar: \
    /opt/cloudera/parcels/CDH/jars/ \
        hadoop-annotations-3.0.0-cdh6.3.0.jar: \
    /opt/cloudera/parcels/CDH/jars/ \
        hadoop-yarn-api-3.0.0-cdh6.3.0.jar: \
    /opt/oracle/kv-ee/lib/kvclient.jar:examples \
        examples/hadoop/table/CountTableRows.java

これにより、生成されるファイルは次のとおりです。

/opt/oracle/nosql/apps/kv/examples/hadoop/table/
    CountTableRows.class
    CountTableRows$Map.class
    CountTableRows$Reduce.class

対象の環境に互換性のある別のHadoopディストリビューションがインストールされている場合は、前述のコマンドライン例で参照しているパスとバージョンを対象のHadoopインストールに適した値に置き換えてください。