1 Big Data Spatial and Graphの概要
- Big Data Spatial and Graphについて
Oracle Big Data Spatial and Graphでは、サポートされているApache Hadoop Big Dataプラットフォームに高度な空間およびグラフ分析機能を提供します。 - 空間機能
空間場所情報は、Big Dataでは共通の要素です。 - プロパティ・グラフ機能
グラフは頂点、エッジ、および頂点とエッジのプロパティとしてリンクされたデータのネットワークを管理します。グラフは一般的に、ソーシャル・ネットワーキング、サイバー・セキュリティ、ユーティリティおよび通信、ライフ・サイエンスと臨床データ、ナレッジ・ネットワークで検出される関係のモデル化、格納、および分析に使用されます。 - Oracle Big Data Appliance上でのOracle Big Data Spatial and Graphのインストール
Oracle Big Data Applianceソフトウェアをインストールおよび構成するためのMammothコマンドライン・ユーティリティを使用して、空間およびプロパティ・グラフの機能を含むOracle Big Data Spatial and Graphオプションをインストールすることもできます。 - Big Data Spatial Image Processing Frameworkのインストールおよび構成
Image Processing Frameworkのインストールおよび構成は、使用しているディストリビューションに応じて異なります。 - Oracle Big Data SpatialViewer Webアプリケーションのインストール
Oracle Big Data SpatialViewer Webアプリケーション(SpatialViewer)をインストールするには、このトピックの手順を実行します。 - 非BDA環境へのBig Data Spatial and Graphのインストール
Oracle Big Data Appliance以外の環境にBig Data Spatial and Graphをインストールする場合は、いくつかのアクションが必要になることがあります。 - アップグレードによる必要なアプリケーション・コードの変更
Apache HBaseおよびSolrCloudを最新バージョンにするなどのアップグレードによりアプリケーション・コードの変更が必要になる場合があります。
1.1 Big Data Spatial and Graphについて
Oracle Big Data Spatial and Graphでは、サポートされているApache Hadoop Big Dataプラットフォームに高度な空間およびグラフ分析機能を提供します。
空間機能では、場所に関する情報のデータ・エンリッチメント、距離と場所による分析に基づいた空間のフィルタ処理とびカテゴリ化、およびデジタル地図、センサー、衛星画像と航空画像の値のベクトルおよびラスター処理を行う空間データ処理、地図のビジュアル化のためのAPIをサポートしています。
1.2 空間機能
空間場所情報は、Big Dataでは共通の要素です。
ビジネスでは、異なるデータ・セットの関連付けとリンクのベースとして、空間データを使用できます。場所に関する情報は、別の人物、場所、オブジェクトに基づいて、あるいは特定のエリアでの存在に基づくエンティティの追跡とカテゴリ化にも使用できます。場所に関する情報によって、特定の地理に進む顧客に場所固有のジオフェンシングと呼ばれる情報提供を促進します。ジオリファレンスされた画像データや知覚データの分析は、ビジネスに様々なメリットをもたらします。
Oracle Big Data Spatial and Graphの空間機能では、次の各種サービスでこのようなユースケースをサポートしています。
ベクトル・サービス:
-
ドキュメントとデータを、デフォルトの管理階層用に空間オブジェクト定義の都市や州、またはベクトルおよびラスター処理を行う空間データ処理緯度/経度情報と関連付ける機能
-
GeoJSONファイル、Shapefiles、GML、およびWKTを含むテキストベースの2次元および3次元の地理空間形式のサポート、またはGeospatial Data Abstraction Library (GDAL)を使用したOracle SDO_Geometry, ST_Geometry、その他のサポート対象の形式の一般的な地理空間エンコーディングの使用
-
データを様々な形式と座標系で調べ、カテゴリ化し、表示するためのHTML5ベースのマップ・クライアントAPIとサンプル・コンソール
-
位相的操作および距離演算: Anyinteract、Inside、Contains、Within Distance、Nearest Neighborなど
-
データ簡易取得用の空間索引付け
ラスター・サービス:
-
GDALでサポートされている多数のイメージ・ファイル形式、およびHDFSに格納されているイメージ・ファイルのサポート
-
使用できる一連のイメージを表示するサンプル・コンソール
-
ラスター操作、包括、サブセット、ジオリファレンス、モザイク、および形式変換
1.3 プロパティ・グラフ機能
グラフは頂点、エッジ、および頂点とエッジのプロパティとしてリンクされたデータのネットワークを管理します。グラフは一般的に、ソーシャル・ネットワーキング、サイバー・セキュリティ、ユーティリティおよび通信、ライフ・サイエンスと臨床データ、ナレッジ・ネットワークで検出される関係のモデル化、格納、および分析に使用されます。
標準的なグラフ分析には、グラフのトラバース、推奨、コミュニティおよびインフルエンサの検出、パターン一致などがあります。グラフは、通信、ライフ・サイエンスおよびヘルスケア、セキュリティ、メディアおよび出版などの業種に活用できます。これらのユースケースは、Oracle Big Data Spatial and Graphのプロパティ・グラフ機能でサポートされています。
ビッグ・データ・プラットフォームのプロパティ・グラフ機能は、Oracle Graph Server and Clientの一部であるOracle Graph HDFS Connectorを使用して有効にします。Oracle Graph Server and Clientの関連機能は、このコネクタを使用してApache HDFSのデータにアクセスすることでサポートされます。詳細は、『Oracle Databaseプロパティ・グラフのグラフ開発者ガイド』を参照してください。
1.4 Oracle Big Data Appliance上でのOracle Big Data Spatial and Graphのインストール
Oracle Big Data Applianceソフトウェアのインストールと構成のためのMammothコマンドライン・ユーティリティでは、空間およびプロパティ・グラフ機能を含むOracle Big Data Spatial and Graphオプションもインストールします。
このオプションは、初期ソフトウェア・インストール時、またはbdacli
ユーティリティの使用後に有効にできます。
Oracle NoSQL Databaseをグラフ・リポジトリとして使用するには、Oracle NoSQL Databaseクラスタが必要です。
Apache HBaseをグラフ・リポジトリとして使用するには、Apache Hadoopクラスタが必要です。
1.5 Big Data Spatial Image Processing Frameworkのインストールおよび構成
Image Processing Frameworkのインストールおよび構成は、使用しているディストリビューションに応じて異なります。
-
Oracle Big Data Applianceクラスタのディストリビューションは、設定があらかじめインストールされていますが、これを有効にするには、「Oracle Big Data ApplianceディストリビューションのためのImage Processing Frameworkのインストール」のステップの一部を実行する必要があります。
-
製品のディストリビューションについては、「その他のディストリビューション(Oracle Big Data Appliance以外)のImage Processing Frameworkのインストール」の手順に従ってください。
両方のディストリビューションについて:
-
「Cartographic Projections Libraryの取得およびコンパイル」で説明されているように、PROJライブラリをダウンロードおよびコンパイルする必要があります。
-
インストール後は、これを検証します(「Image Processing Frameworkのインストール後の検証」を参照)。
-
クラスタのセキュリティが有効である場合、ジョブを実行するユーザーが
princs
リストに含まれており、有効なKerberosチケットを所有していることを確認してください。
- Cartographic Projections Libraryの取得およびコンパイル
- Oracle Big Data Applianceディストリビューション用のImage Processing Frameworkのインストール
Oracle Big Data Applianceディストリビューションには、事前にインストールされた構成が用意されていますが、イメージ処理フレームワークがインストールされていることを確認する必要があります。 - その他のディストリビューション(Oracle Big Data Appliance以外)のImage Processing Frameworkのインストール
Big Data Appliance以外の環境のBig Data Spatial and Graphでは、このセクションの手順を実行します。 - Image Processing Frameworkのインストール後の検証
次の検証操作を実行するために複数のテスト・スクリプトが用意されています。
1.5.1 Cartographic Projections Libraryの取得およびコンパイル
Image Processing Frameworkをインストールする前に、Cartographic Projections Libraryをダウンロードし、複数の関連操作を実行する必要があります。
-
PROJ.4ソース・コードおよびデータ・シフト・ファイルをダウンロードします。
$ wget http://download.osgeo.org/proj/proj-4.9.1.tar.gz $ wget http://download.osgeo.org/proj/proj-datumgrid-1.5.tar.gz
-
ソース・コードを解凍し、データ・シフト・ファイルを
nad
サブディレクトリに抽出します。$ tar xzf proj-4.9.1.tar.gz $ cd proj-4.9.1/nad $ tar xzf ../../proj-datumgrid-1.5.tar.gz $ cd ..
-
PROJ.4を構成、作成およびインストールします。
$ ./configure $ make $ sudo make install $ cd ..
これで、
libproj.so
が/usr/local/lib/libproj.so
で使用可能になりました。 -
libproj.so
ファイルをspatialインストール・ディレクトリにコピーします。cp /usr/local/lib/libproj.so /opt/oracle/oracle-spatial-graph/spatial/raster/gdal/lib/libproj.so
-
libproj.so
ライブラリの読取りおよび実行権限をすべてのユーザーに与えますsudo chmod 755 /opt/oracle/oracle-spatial-graph/spatial/raster/gdal/lib/libproj.so
1.5.2 Oracle Big Data ApplianceディストリビューションのImage Processing Frameworkのインストール
Oracle Big Data Applianceディストリビューションには、事前にインストールされた構成が用意されていますが、イメージ処理フレームワークがインストールされていることを確認する必要があります。
「Cartographic Projections Libraryの取得およびコンパイル」で説明されているアクションが実行されていることにより、libproj.so
(PROJ.4
)がすべてのユーザーからアクセス可能であり、正しく設定されていることを確認してください。
OBDAの場合、次のディレクトリが存在することを確認してください。
-
SHARED_DIR (クラスタ内のすべてのノードの共有ディレクトリ):
/opt/shareddir
-
ALL_ACCESS_DIR (hadoopグループへの書込みアクセス権を持つクラスタ内のすべてのノードの共有ディレクトリ):
/opt/shareddir/spatial
1.5.3 その他のディストリビューション(Oracle Big Data Appliance以外)のImage Processing Frameworkのインストール
Big Data Appliance以外の環境のBig Data Spatial and Graphでは、このセクションの次の手順を実行します。
1.5.3.1 その他のディストリビューションのImage Processing Frameworkをインストールするための前提条件
-
HADOOP_LIB_PATH
が/usr/lib/hadoop
にあることを確認します。ない場合はパスを検索し、HADOOP_LIB_PATH
として使用します。 -
NFSをインストールします。
-
1つ以上のフォルダを作成し、このドキュメントでSHARED_FOLDERとして参照し、リソース・マネージャ・ノードではNFSからすべてのノード・マネージャ・ノードにアクセス可能にします。
-
ジョブ実行に関連するすべてのユーザー、およびyarnユーザーにこのSHARED_FOLDERへの書込みアクセス権を付与します
-
oracle-spatial-graph-<version>.x86_64.rpm
をOracle E-Delivery Webサイトからダウンロードします。 -
rpmコマンドを使用して
oracle-spatial-graph-<version>.x86_64.rpm
を実行します。 -
rpmの実行後は、
/opt/oracle/oracle-spatial-graph/spatial/raster
で作成したディレクトリ構造にフォルダconsole
、examples
、jlib
、gdal
およびtests
があることを確認します。また、index.html
はコンテンツを表し、javadoc.zip
にはAPIのJavadocがあります。
1.5.4 Image Processing Frameworkのインストール後の検証
次の検証操作を実行するために複数のテスト・スクリプトが用意されています。
-
イメージ・ロード機能のテスト
-
イメージ処理機能のテスト
-
地図代数演算およびDEMでの傾斜計算の処理クラスのテスト
-
モザイク・プロセスのない単一のラスターのイメージ処理の検証(マッピング・フェーズ内の陰影起伏を計算するユーザー指定の機能が含まれます)。
-
マスク操作を使用した2つのラスターの処理のテスト
これらのスクリプトを実行して、イメージ処理フレームワークが正常にインストールされたことを検証します。
クラスタのセキュリティが有効である場合、現在のユーザーがprincs
リストに含まれており、有効なKerberosチケットを所有していることを確認してください。
ユーザーがALL_ACCESS_FOLDERへの書込みアクセス権を持ち、このディレクトリの所有者グループに属していることを確認してください。Big Data Applianceのリソース・マネージャ・ノードでジョブを実行することをお薦めします。ジョブを別のノードで実行する場合、デフォルトはhadoopグループになります。
GDALが適切に機能するように、$LD_LIBRARY_PATHを使用してライブラリを使用可能にする必要があります。ジョブを実行する前に、共有ライブラリ・パスがシェル・ウィンドウに適切に設定されていることを確認してください。たとえば:
export LD_LIBRARY_PATH=$ALLACCESSDIR/gdal/native
1.5.4.1 イメージ・ロードのテスト・スクリプト
このスクリプトでは、6つのテスト・ラスターのセットをHDFSのohiftest
フォルダにロードしますが、そのうち3つのラスターはバイト・データ型と3つの帯域、1つのラスター(DEM)はfloat32データ型と1つの帯域、および2つのラスターはint32データ型と1つの帯域です。OBDA環境にはパラメータは不要であり、OBDA以外の環境では、ALL_ACCESS_FOLDER値のあるパラメータが1つ必要です。
内部的には、ジョブによってロード対象のラスターごとに分割が作成されます。分割サイズはブロック・サイズ構成によって決まります。たとえば、ブロック・サイズが64MB以下と構成されると、4つのマッパーが実行されます。その結果、ラスターがHDFSでロードされ、対応するサムネイルが作成され、視覚化されます。サムネイルを視覚化するには外部イメージ・エディタが必要であり、これらのサムネイルの出力パスは、ジョブの完了時にユーザーに表示されます。
テスト・スクリプトは次の場所にあります。
/opt/oracle/oracle-spatial-graph/spatial/raster/tests/runimageloader.sh
ODBA環境の場合は、次を入力します。
./runimageloader.sh
ODBA以外の環境の場合は、次を入力します。
./runimageloader.sh ALL_ACCESS_FOLDER
実行が完了すると、ファイルのある場所を示すHDFS内のパス(このパスはALL_ACCESS_FOLDERの定義によって異なります)、およびHDFSに作成されたイメージとサムネイルのリストを示すメッセージGENERATED OHIF FILES ARE LOCATED IN HDFS UNDER
が表示されます。出力には次が含まれます。
“THUMBNAILS CREATED ARE: ---------------------------------------------------------------------- total 13532 drwxr-xr-x 2 yarn yarn 4096 Sep 9 13:54 . drwxr-xr-x 3 yarn yarn 4096 Aug 27 11:29 .. -rw-r--r-- 1 yarn yarn 3214053 Sep 9 13:54 hawaii.tif.ohif.tif -rw-r--r-- 1 yarn yarn 3214053 Sep 9 13:54 inputimageint32.tif.ohif.tif -rw-r--r-- 1 yarn yarn 3214053 Sep 9 13:54 inputimageint32_1.tif.ohif.tif -rw-r--r-- 1 yarn yarn 3214053 Sep 9 13:54 kahoolawe.tif.ohif.tif -rw-r--r-- 1 yarn yarn 3214053 Sep 9 13:54 maui.tif.ohif.tif -rw-r--r-- 1 yarn yarn 4182040 Sep 9 13:54 NapaDEM.tif.ohif.tif YOU MAY VISUALIZE THUMBNAILS OF THE UPLOADED IMAGES FOR REVIEW FROM THE FOLLOWING PATH:
インストールと構成が正常に終了しなかった場合は、出力は生成されず、次のようなメッセージが表示されます。
NOT ALL THE IMAGES WERE UPLOADED CORRECTLY, CHECK FOR HADOOP LOGS
マッパーとリデューサの実行に必要なメモリーの量は、構成されているHDFSのブロック・サイズによって異なります。デフォルトでは、1GBのメモリーがJavaに割り当てられていますが、この値および他のプロパティは、このテスト・ディレクトリに含まれるimagejob.prop
ファイル内で変更できます。
1.5.4.2 Image Processorテスト・スクリプト(モザイク化)
このスクリプトでは、ハワイ諸島の3つのソース・ラスターとその3つをすべて含む座標のいくつかを設定して、プロセッサ・ジョブを実行します。このジョブでは、これらの座標に基づいてモザイクを作成し、その結果のラスターには、3つのラスターが1つにまとめられます。
runimageloader.sh
が前提条件として実行されるため、ソース・ラスターはHDFSにあります。バイト・データ型の3つの帯域ラスターがあります。
OBDA環境にはパラメータは不要であり、OBDA以外の環境では、ALL_ACCESS_FOLDER値のある"-s"パラメータが1つ必要です。
また、出力をHDFSに格納する場合は、"-o"パラメータを使用して、モザイク出力を格納するHDFSフォルダを設定します。
内部的に、ジョブは構成入力のxmlで指定されている座標を使用して四角形をフィルタ処理し、必要な四角形のみをマッパー上で処理するためフェーズが減少し、そのすべてを最終的なモザイク・ラスターにまとめられます。
テスト・スクリプトは次の場所にあります。
/opt/oracle/oracle-spatial-graph/spatial/raster/tests/runimageprocessor.sh
ODBA環境の場合は、次を入力します。
./runimageprocessor.sh
ODBA以外の環境の場合は、次を入力します。
./runimageprocessor.sh -s ALL_ACCESS_FOLDER
実行が成功したら、EXPECTED OUTPUT FILE IS: ALL_ACCESS_FOLDER/processtest/hawaiimosaic.tif
というメッセージが、出力モザイク・ファイルへのパスとともに表示されます。出力には次が含まれます。
EXPECTED OUTPUT FILE IS: ALL_ACCESS_FOLDER/processtest/hawaiimosaic.tif total 9452 drwxrwxrwx 2 hdfs hdfs 4096 Sep 10 09:12 . drwxrwxrwx 9 zherena dba 4096 Sep 9 13:50 .. -rwxrwxrwx 1 yarn yarn 4741101 Sep 10 09:12 hawaiimosaic.tif MOSAIC IMAGE GENERATED ---------------------------------------------------------------------- YOU MAY VISUALIZE THE MOSAIC OUTPUT IMAGE FOR REVIEW IN THE FOLLOWING PATH: ALL_ACCESS_FOLDER/processtest/hawaiimosaic.tif”
インストールと構成が正常に終了しなかった場合は、出力は生成されず、次のようなメッセージが表示されます。
MOSAIC WAS NOT SUCCESSFULLY CREATED, CHECK HADOOP LOGS TO REVIEW THE PROBLEM
HDFSでの出力記憶域をテストするには、次のコマンドを使用します
ODBA環境の場合は、次を入力します。
./runimageprocessor.sh -o hdfstest
ODBA以外の環境の場合は、次を入力します。
./runimageprocessor.sh -s ALL_ACCESS_FOLDER -o hdfstest
1.5.4.3 単一Image Processorテスト・スクリプト
このスクリプトは、単一ラスターのプロセッサ・ジョブを実行します。この場合は、ナパ・バレー北部のDEMソース・ラスターです。このジョブの目的は、マッピング・フェーズ用として構成されているユーザー処理クラスを使用して完全な入力を処理することです。このクラスは、DEMの陰影起伏を計算し、これが出力ファイルに設定されます。ここではモザイク操作は実行されません。
ソース・ラスターがHDFS内に存在するように、runimageloader.sh
を前提条件として実行する必要があります。これは、float 32データ型のDEMラスター1つの帯域です。
OBDA環境にはパラメータは不要であり、OBDA以外の環境では、ALL_ACCESS_FOLDER値のある"-s"パラメータが1つ必要です。
テスト・スクリプトは次の場所にあります。
/opt/oracle/oracle-spatial-graph/spatial/raster/tests/runsingleimageprocessor.sh
ODBA環境の場合は、次を入力します。
./runsingleimageprocessor.sh
ODBA以外の環境の場合は、次を入力します。
./runsingleimageprocessor.sh -s ALL_ACCESS_FOLDER
実行が成功したら、EXPECTED OUTPUT FILE: ALL_ACCESS_FOLDER/processtest/NapaSlope.tif
というメッセージが、出力DEMファイルへのパスとともに表示されます。出力には次が含まれます。
EXPECTED OUTPUT FILE: ALL_ACCESS_FOLDER/processtest/NapaDEM.tif total 4808 drwxrwxrwx 2 hdfs hdfs 4096 Sep 10 09:42 . drwxrwxrwx 9 zherena dba 4096 Sep 9 13:50 .. -rwxrwxrwx 1 yarn yarn 4901232 Sep 10 09:42 NapaDEM.tif IMAGE GENERATED ---------------------------------------------------------------------- YOU MAY VISUALIZE THE OUTPUT IMAGE FOR REVIEW IN THE FOLLOWING PATH: ALL_ACCESS_FOLDER/processtest/NapaDEM.tif”
インストールと構成が正常に終了しなかった場合は、出力は生成されず、次のようなメッセージが表示されます。
IMAGE WAS NOT SUCCESSFULLY CREATED, CHECK HADOOP LOGS TO REVIEW THE PROBLEM
1.5.4.4 Image Processor DEMテスト・スクリプト
このスクリプトはナパ・バレー北部のDEMソース・ラスター、およびそれを取り囲む座標を使用してプロセッサ・ジョブを実行します。このジョブでは、これらの座標に基づいてモザイクを作成し、モザイク構成XMLで処理クラスを設定して、その傾斜も計算します。
runimageloader.sh
が前提条件として実行されるため、ソース・ラスターはHDFSにあります。これは、float 32データ型のDEMラスター1つの帯域です。
OBDA環境にはパラメータは不要であり、OBDA以外の環境では、ALL_ACCESS_FOLDER値のある"-s"パラメータが1つ必要です。
テスト・スクリプトは次の場所にあります。
/opt/oracle/oracle-spatial-graph/spatial/raster/tests/runimageprocessordem.sh
ODBA環境の場合は、次を入力します。
./runimageprocessordem.sh
ODBA以外の環境の場合は、次を入力します。
./runimageprocessordem.sh -s ALL_ACCESS_FOLDER
実行が成功したら、EXPECTED OUTPUT FILE: ALL_ACCESS_FOLDER/processtest/NapaSlope.tif
というメッセージが、傾斜出力ファイルへのパスとともに表示されます。出力には次が含まれます。
EXPECTED OUTPUT FILE: ALL_ACCESS_FOLDER/processtest/NapaSlope.tif total 4808 drwxrwxrwx 2 hdfs hdfs 4096 Sep 10 09:42 . drwxrwxrwx 9 zherena dba 4096 Sep 9 13:50 .. -rwxrwxrwx 1 yarn yarn 4901232 Sep 10 09:42 NapaSlope.tif MOSAIC IMAGE GENERATED ---------------------------------------------------------------------- YOU MAY VISUALIZE THE MOSAIC OUTPUT IMAGE FOR REVIEW IN THE FOLLOWING PATH: ALL_ACCESS_FOLDER/processtest/NapaSlope.tif”
インストールと構成が正常に終了しなかった場合は、出力は生成されず、次のようなメッセージが表示されます。
MOSAIC WAS NOT SUCCESSFULLY CREATED, CHECK HADOOP LOGS TO REVIEW THE PROBLEM
また、“if”代数関数もテストして、このラスターで2500を超える値のあるピクセルすべてを、コマンドラインで“–c”フラグを使用して設定した値で置き換えます。たとえば:
ODBA環境の場合は、次を入力します。
./runimageprocessordem.sh –c 8000
ODBA以外の環境の場合は、次を入力します。
./runimageprocessordem.sh -s ALL_ACCESS_FOLDER –c 8000
出力ファイルを視覚化すると、単純な傾斜計算と変更後の出力に注目し、ピクセル値が2500を超えているエリアがより鮮明になることを確認できます。
1.5.4.5 複数のラスター操作テスト・スクリプト
このスクリプトは、米国カリフォルニア州ナパ・バレー北部の非常に小さい地域を網羅する2つのラスターのプロセッサ・ジョブを実行します。
これらのラスターは同じMBR、ピクセル・サイズ、SRIDおよびデータ型を持ち、これらはすべて、複雑な複数のラスター操作処理に必要です。このジョブの目的は、2番目のラスターの値がマスク・リストに含まれるかどうかを検証するためにこのラスター内のすべてのピクセルを確認するmask操作を使用して両方のラスターを処理することです。そうである場合、出力ラスターはこの出力セルの最初のラスターのピクセル値を持ちます。そうでない場合、ゼロ(0)値が設定されます。ここではモザイク操作は実行されません。
runimageloader.sh
が前提条件として実行されるため、ソース・ラスターはHDFSにあります。これらは、int32データ型のラスターの1つの帯域です。
OBDA環境にはパラメータは不要です。OBDA以外の環境では、ALL_ACCESS_FOLDER値のある-s
パラメータが1つ必要です。
テスト・スクリプトは次の場所にあります。
/opt/oracle/oracle-spatial-graph/spatial/raster/tests/runimageprocessormultiple.sh
ODBA環境の場合は、次を入力します。
./runimageprocessormultiple.sh
ODBA以外の環境の場合は、次を入力します。
./runimageprocessormultiple.sh -s ALL_ACCESS_FOLDER
実行が成功したら、EXPECTED OUTPUT FILE: ALL_ACCESS_FOLDER/processtest/MaskInt32Rasters.tif
というメッセージが、マスク出力ファイルへのパスとともに表示されます。出力には次が含まれます。
EXPECTED OUTPUT FILE: ALL_ACCESS_FOLDER/processtest/MaskInt32Rasters.tif total 4808 drwxrwxrwx 2 hdfs hdfs 4096 Sep 10 09:42 . drwxrwxrwx 9 zherena dba 4096 Sep 9 13:50 .. -rwxrwxrwx 1 yarn yarn 4901232 Sep 10 09:42 MaskInt32Rasters.tif IMAGE GENERATED ---------------------------------------------------------------------- YOU MAY VISUALIZE THE OUTPUT IMAGE FOR REVIEW IN THE FOLLOWING PATH: ALL_ACCESS_FOLDER/processtest/MaskInt32Rasters.tif”
インストールと構成が正常に終了しなかった場合は、出力は生成されず、次のようなメッセージが表示されます。
IMAGE WAS NOT SUCCESSFULLY CREATED, CHECK HADOOP LOGS TO REVIEW THE PROBLEM
1.6 Oracle Big Data SpatialViewer Webアプリケーションのインストール
Oracle Big Data SpatialViewer Webアプリケーション(SpatialViewer)をインストールするには、このトピックの手順を実行します。
1.6.1 SpatialViewerの前提
次の前提がSpatialViewerのインストールと構成に適用されます。
-
ここで説明するAPIおよびジョブを、Cloudera CDH6または同様のHadoop環境で実行します。
-
ユーザーの環境に、Java 8以降のバージョンを用意しておきます。
-
Big Data Spatial Image Processing Frameworkのインストールおよび構成で説明されているように、イメージ処理フレームワークがインストールされています
1.6.2 Oracle Big Data ApplianceでのSpatialViewerのインストール
次のように、Big Data ApplianceにSpatialViewerをインストールできます
-
次のスクリプトを実行します。
sudo /opt/oracle/oracle-spatial-graph/spatial/configure-server/install-bdsg-consoles.sh
-
次のコマンドの1つを使用してWebアプリケーションを起動します(2番目のコマンドを使用すると、ログを表示できます)。
sudo service bdsg start sudo /opt/oracle/oracle-spatial-graph/spatial/web-server/start-server.sh
エラーが発生した場合、
/opt/oracle/oracle-spatial-graph/spatial/configure-server
にあるREADMEファイルを参照してください。 -
http://<oracle_big_data_spatial_vector_console>:8045/spatialviewer/
を開きます -
インストール後にアクティブ・ノードが変更された場合、またはKerberosが有効である場合、「Oracle Big Data ApplianceでのSpatialViewerの構成」で説明されているように、構成ファイルを更新します。
-
オプションで、サンプル・データ(他のトピックの例で使用されているもの)をHDFSにアップロードします。
sudo -u hdfs hadoop fs -mkdir /user/oracle/bdsg sudo -u hdfs hadoop fs -put /opt/oracle/oracle-spatial-graph/spatial/vector/examples/data/tweets.json /user/oracle/bdsg/
1.6.3 その他システム(Big Data Appliance以外)のSpatialViewerのインストール
「Oracle Big Data ApplianceでのSpatialViewerのインストール」で説明されている手動構成のステップに従います。
次に、「その他システム(Big Data Appliance以外)のSpatialViewerの構成」で説明されているように、構成を変更します
1.6.4 Oracle Big Data ApplianceでのSpatialViewerの構成
Oracle Big Data ApplianceでSpatialViewerを構成するには、次のステップに従います。
-
コンソール
http://<oracle_big_data_spatial_vector_console>:8045/spatialviewer/?root=swadmin
を開きます -
必要に応じて、一般構成を変更します。
-
ローカル作業ディレクトリ: SpatialViewerローカル作業ディレクトリ。絶対パス。デフォルトのディレクトリ
/usr/oracle/spatialviewer
は、SpatialViewerのインストール時に作成されます。 -
HDFS作業ディレクトリ: SpatialViewer HDFS作業ディレクトリ。デフォルトのディレクトリ
/user/oracle/spatialviewer
は、SpatialViewerのインストール時に作成されます。 -
Hadoop構成ファイル: Hadoop構成ディレクトリ。デフォルトでは、
/etc/hadoop/conf
ですこの値を変更した場合は、サーバーを再起動する必要があります。
-
Spark構成ファイル: Spark構成ディレクトリ。デフォルトでは、
/etc/spark/conf
ですこの値を変更した場合は、サーバーを再起動する必要があります。
-
eLocation URL: eLocationの背景地図を取得するために使用されるURL。デフォルトでは、
http://elocation.oracle.com
です -
Kerberosキータブ: Kerberosが有効である場合、キータブ・ファイルが含まれるファイルへのフル・パスを入力します。
-
ログの表示: 必要に応じて、「Spatial Jobs」画面でジョブの表示を無効にします。ログがデフォルトの形式でない場合、この表示を無効にします。デフォルトの形式は、
Date LogLevel LoggerName: LogMessage
です日付は、デフォルトの形式(
yyyy-MM-dd HH:mm:ss,SSS
)である必要があります。たとえば、2012-11-02 14:34:02,781
です。ログが表示されず、「Display logs」フィールドが
「Yes」
に設定されている場合、yarn-site.xml
内のyarn.log-aggregation-enable
がtrue
に設定されていることを確認します。また、Hadoopジョブ構成パラメータyarn.nodemanager.remote-app-log-dir
およびyarn.nodemanager.remote-app-log-dir-suffix
がyarn-site.xml
の場合と同じ値に設定されていることも確認してください。
-
-
必要に応じて、ラスター構成を変更します。
-
共有ディレクトリ: 別のノードとの間の読取りおよび書込みに使用するディレクトリ。共有され、最大の権限があるか、少なくともHadoopユーザー・グループに存在する必要があります。
-
ネットワーク・ファイル・システム・マウント・ポイント: 共有フォルダを表示でき、個別にアクセスできるNFSマウント・ポイント。非分散環境を使用している場合、空白にできます。
-
GDALディレクトリ: ネイティブGDALのインストール・ディレクトリ。すべてのクラスタ・ノードにアクセス可能である必要があります。
この値を変更した場合は、サーバーを再起動する必要があります。
-
共有GDALデータ・ディレクトリ: GDAL共有データ・フォルダ。共有ディレクトリである必要があります。(その他のディストリビューション(Oracle Big Data Appliance以外)のImage Processing Frameworkのインストールの手順を参照してください。)
-
-
必要に応じて、Hadoop構成を変更します。
-
必要に応じて、Spark構成を変更します。ラスター・プロセッサでは、追加の構成詳細を指定する必要があります。
-
spark.driver.extraClassPath, spark.executor.extraClassPath
: これらのキーを使用して、Hiveライブラリのインストール環境を指定します。例:/usr/lib/hive/lib/*
-
spark.kryoserializer.buffer.max
: データ・シリアライズのメモリーを入力します。例:160m
-
-
Kerberosが有効である場合、次のパラメータを追加することが必要な場合があります。
-
spark.yarn.keytab
: プリンシパルのキータブが含まれるファイルへのフル・パス -
spark.yarn.principal
: Kerberosにログインするために使用されるプリンシパル。通常のKerberos V5プリンシパルの形式は、primary/instance@REALM
です。
-
-
Linuxシステムでは、セキュアなコンテナ・エグゼキュータを
LinuxContainerExecutor
に変更する必要がある場合があります。そのためには、次のパラメータを設定します。-
yarn.nodemanager.container-executor.class
をorg.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor
に設定します。 -
yarn.nodemanager.linux-container-executor.group
をhadoop
に設定します。
-
-
ユーザーがキータブ・ファイルを読み取ることができることを確認します。
1.6.5 その他システム(Big Data Appliance以外)のSpatialViewerの構成
その他システムでSpatialViewerをインストールする前に、「その他のディストリビューション(Oracle Big Data Appliance以外)のImage Processing Frameworkのインストール」に指定されているとおり、Image Processing Frameworkをインストールする必要があります。
その後、「Oracle Big Data ApplianceでのSpatialViewerの構成」で説明したステップを実行します。
また、HadoopとSparkの構成を変更し、HadoopとSparkのインストール環境に応じてHadoopのconf.
ディレクトリおよびSparkのconf.
ディレクトリの値を置き換えます。
1.7 非BDA環境へのBig Data Spatial and Graphのインストール
Oracle Big Data Appliance以外の環境にBig Data Spatial and Graphをインストールする場合は、いくつかのアクションが必要になることがあります。
Big Data Spatial and Graph (BDSG) 2.5.3以降、Cloudera CDHとの対話に必要なClouderaから提供されるサード・パーティのライブラリは、BDSGディストリビューションで配布されなくなりました。このトピックでは、BDSGでCloudera CDHサポートを有効にするために必要なアクションについて説明します。
Oracle Big Data Appliance (BDA)では、BDSGは以前のBDSGリリースと同様に、Cloudera CDHとすぐに連携して動作するよう事前構成されています。そのため、BDA環境では追加のインストール・ステップは必要ありません。
1.7.1 BDSGの自動インストール
.rpmのインストール後、次のスクリプトをrootとして実行することで自動インストールを試行できます。
/opt/oracle/oracle-spatial-graph/property_graph/configure-hadoop.sh
このスクリプトには、Hadoopのディストリビューションおよびバージョンに関するの多くの前提が含まれています。スクリプト内のいずれかのコマンドが失敗した場合は、手動インストールを実行してください。
1.7.2 BDSGの手動インストール
手動インストールを実行するには、環境に関連するサブトピックを使用します。
HDFS
BDSGプロパティ・グラフのインストール・ディレクトリに移動します。
cd /opt/oracle/oracle-spatial-graph/property_graph
Hadoopのインストール・ベース・パスを指すようにHADOOP_HOMEを設定します。たとえば:
HADOOP_HOME=/scratch/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678
必要なHDFSライブラリ(およびその依存関係)をhadoop/hdfsディレクトリにコピーします。(前述のJARファイルの正確な場所およびバージョンは、HadoopのディストリビューションおよびHadoopのバージョンによって異なる場合があります。そのため、クラスタ・インストールに合わせてこれらの入力パスのうちのいくつかを変更することが必要になる場合があります。)
cp $HADOOP_HOME/lib/hadoop/hadoop-auth-3.0.0-cdh6.0.1.jar hadoop/hdfs/
cp $HADOOP_HOME/lib/hadoop/hadoop-common-3.0.0-cdh6.0.1.jar hadoop/hdfs/
cp $HADOOP_HOME/lib/hadoop-hdfs/hadoop-hdfs-3.0.0-cdh6.0.1.jar hadoop/hdfs/
cp $HADOOP_HOME/lib/hadoop-hdfs/hadoop-hdfs-client-3.0.0-cdh6.0.1.jar hadoop/hdfs/
cp $HADOOP_HOME/lib/hadoop-hdfs/lib/commons-cli-1.2.jar hadoop/hdfs/
cp $HADOOP_HOME/lib/hadoop-hdfs/lib/commons-collections-3.2.2.jar hadoop/hdfs/
cp $HADOOP_HOME/lib/hadoop-hdfs/lib/commons-lang-2.6.jar hadoop/hdfs/
cp $HADOOP_HOME/lib/hadoop-hdfs/lib/commons-logging-1.1.3.jar hadoop/hdfs/
cp $HADOOP_HOME/lib/hadoop-hdfs/lib/stax2-api-3.1.4.jar hadoop/hdfs/
cp $HADOOP_HOME/lib/hadoop-hdfs/lib/woodstox-core-5.0.3.jar hadoop/hdfs/
cp $HADOOP_HOME/lib/hadoop-hdfs/lib/htrace-core4-4.1.0-incubating.jar hadoop/hdfs/
cp $HADOOP_HOME/lib/hadoop-hdfs/lib/protobuf-java-2.5.0.jar hadoop/hdfs/
PGXサーバーがHDFSにアクセスできるようにするには、ライブラリを.warファイルにコピーする必要もあります。
mkdir -p WEB-INF/lib
cp /opt/oracle/oracle-spatial-graph/property_graph/hadoop/hdfs/* WEB-INF/lib/
jar -uvf /opt/oracle/oracle-spatial-graph/property_graph/pgx/webapp/pgx-webapp-<version>.war WEB-INF/lib/
rm -r WEB-INF
次に、./pgx/bin/start-server
スクリプトを実行するか、WARファイルをアプリケーション・サーバーにデプロイして、サーバーを起動します。
Yarn
BDSGプロパティ・グラフのインストール・ディレクトリに移動します。
cd /opt/oracle/oracle-spatial-graph/property_graph
HadoopディストリビューションのZookeeper JARファイルへのパス(たとえば、$HADOOP_HOME/lib/zookeeper/zookeeper-3.4.5-cdh6.0.1.jar
)を見つけます。次に、次のスクリプトを実行して、Yarnと連携するようにBDSGインストールを構成します。
TMP_DIR=$(mktemp -d)
cd "${TMP_DIR}"
jar xf "${HADOOP_HOME}/lib/zookeeper/zookeeper-3.4.5-cdh6.0.1.jar"
rm META-INF/MANIFEST.MF
jar -uf /opt/oracle/oracle-spatial-graph/property_graph/hadoop/yarn/pgx-yarn-<version>.jar .
rm -rf "${TMP_DIR}"
HBase
BDSGプロパティ・グラフのインストール・ディレクトリに移動します。
cd /opt/oracle/oracle-spatial-graph/property_graph
実行に必要なすべてのHBaseライブラリ(およびその依存関係)を保持するために、hadoop/hbaseディレクトリを作成します。
mkdir -p hadoop/hbase
Hadoopのインストール・ベース・パスを指すようにHADOOP_HOMEを設定します。たとえば:
HADOOP_HOME=/scratch/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678
必要なHDFSライブラリ(およびその依存関係)をhadoop/hdfsディレクトリにコピーします。(前述のJARファイルの正確な場所およびバージョンは、HadoopのディストリビューションおよびHadoopのバージョンによって異なる場合があります。そのため、クラスタ・インストールに合わせてこれらの入力パスのうちのいくつかを変更することが必要になる場合があります。)
cp $HADOOP_HOME/lib/hbase/hbase-client-2.0.0-cdh6.0.1.jar hadoop/hbase
cp $HADOOP_HOME/lib/hbase/hbase-common-2.0.0-cdh6.0.1.jar hadoop/hbase
cp $HADOOP_HOME/lib/hbase/hbase-protocol-2.0.0-cdh6.0.1.jar hadoop/hbase
cp $HADOOP_HOME/lib/hbase/hbase-shaded-protobuf-2.1.0.jar hadoop/hbase
cp $HADOOP_HOME/lib/hbase/lib/shaded-clients/hbase-shaded-client-2.0.0-cdh6.0.1.jar hadoop/hbase
cp $HADOOP_HOME/lib/hadoop/hadoop-common-3.0.0-cdh6.0.1.jar hadoop/hbase
cp $HADOOP_HOME/lib/hadoop-hdfs/hadoop-hdfs-3.0.0-cdh6.0.1.jar hadoop/hbase
cp $HADOOP_HOME/lib/zookeeper/zookeeper-3.4.5-cdh6.0.1.jar hadoop/hbase
cp $HADOOP_HOME/lib/hbase/lib/protobuf-java-2.5.0.jar hadoop/hbase
cp $HADOOP_HOME/lib/hbase/lib/metrics-core-3.2.1.jar hadoop/hbase
cp $HADOOP_HOME/lib/hbase/lib/jettison-1.3.8.jar hadoop/hbase
cp $HADOOP_HOME/lib/hbase/lib/stax2-api-3.1.4.jar hadoop/hbase
cp $HADOOP_HOME/lib/hbase/lib/woodstox-core-5.0.3.jar hadoop/hbase
cp $HADOOP_HOME/lib/hbase/lib/client-facing-thirdparty/htrace-core4-4.2.0-incubating.jar hadoop/hbase
cp $HADOOP_HOME/lib/hbase/lib/client-facing-thirdparty/audience-annotations-0.5.0.jar hadoop/hbase
PGXサーバーがHBaseにアクセスできるようにするには、HBaseライブラリを.warファイルにコピーする必要もあります。
mkdir -p WEB-INF/lib
cp /opt/oracle/oracle-spatial-graph/property_graph/hadoop/hbase/* WEB-INF/lib/
jar -uvf /opt/oracle/oracle-spatial-graph/property_graph/pgx/webapp/pgx-webapp-<version>.war WEB-INF/lib/
rm -r WEB-INF
次に、./pgx/bin/start-server
スクリプトを実行するか、WARファイルをアプリケーション・サーバーにデプロイして、サーバーを起動します。
1.7.3 BDSG環境の構成
環境を構成するには、環境に関連するサブトピックを使用します。
HDFS
HADOOP_CONF_DIR環境変数がクラスタのHDFS構成ディレクトリを指し示すよう指定します。たとえば:
export HADOOP_CONF_DIR=/etc/hadoop/conf
シェルを起動する前に、前のステップのライブラリを指すようにBDSG_CLASSPATH環境変数を設定します。たとえば:
export BDSG_CLASSPATH=/opt/oracle/oracle-spatial-graph/property_graph/hadoop/hdfs/*
次に、シェルを通常どおり起動し、hdfs
パス接頭辞を使用してHDFSからデータにアクセスします。
cd /opt/oracle/oracle-spatial-graph/property_graph
./pgx/bin/pgx
[WARNING] BDSG_CLASSPATH environment will be prepended to PGX classpath. If this is not intended, do 'unset BDSG_CLASSPATH' and restart.
PGX Shell 3.1.3
type :help for available commands
12:01:30,824 INFO Ctrl$1 - >>> PGX engine 3.1.3 running.
variables instance, session and analyst ready to use
pgx> g = session.readGraphWithProperties('hdfs:/tmp/data/connections.edge_list.json')
==> PgxGraph[name=connections,N=78,E=164,created=1543176112779]
Yarn
次のヘルパー・スクリプトを実行して、Yarnデプロイメントに必要なアーティファクトを任意のHDFSディレクトリにコピーします。
./pgx/scripts/install-pgx-hdfs.sh <dest-dir>
ここで、たとえば<dest-dir>はhdfs:/binaries/pgx
とすることができます。
hdfs
バイナリがPATH環境変数にあることを確認します。
スクリプトが終了したら、インストール済バイナリへのパスおよびクラスタの正しいZookeeper接続文字列が含まれるようにpgx/conf/yarn.conf
を更新してください。
HBase
JavaアプリケーションでDALを使用してApache HBaseのプロパティ・グラフにアクセスする手順は、次のとおりです。
- BDSG_HOME環境変数をプロパティ・グラフのインストール・ディレクトリに設定します。たとえば:
export BDSG_HOME=/opt/oracle/oracle-spatial-graph/property_graph
- BDSG_CLASSPATH環境変数をhadoop/hbaseディレクトリに設定します。たとえば:
export BDSG_CLASSPATH=/opt/oracle/oracle-spatial-graph/property_graph/hadoop/hbase/*:$BDSG_CLASSPATH
- BDSG_CLASSPATH環境変数をhadoop/hbaseディレクトリに設定します。たとえば:
javac -classpath $BDSG_HOME/lib/'*':$BDSG_CLASSPATH filename.java
- 次のようにコンパイル済コードを実行して、Javaアプリケーションを実行します。
java -classpath ./:$BDSG_HOME/lib/'*':$BDSG_CLASSPATH filename args
GroovyコンソールでDALを使用してApache HBaseのプロパティ・グラフにアクセスする手順は、次のとおりです。
- BDSG_CLASSPATH環境変数をhadoop/hbaseディレクトリに設定します。たとえば:
export BDSG_CLASSPATH=/opt/oracle/oracle-spatial-graph/property_graph/hadoop/hbase/*:$BDSG_CLASSPATH
- 通常どおりシェルを起動し、
OraclePropertyGraph
インスタンスを使用してApache HBaseストレージからデータにアクセスします。Apache HBase 2.0からは、
HConnection
インタフェースが非推奨のため、Connection
オブジェクトを使用してデータベースに接続します。cd /opt/oracle/oracle-spatial-graph/property_graph/dal/groovy sh gremlin-opg-hbase.sh -------------------------------- opg-hbase> conf = HBaseConfiguration.create(); ==>hbase.rs.cacheblocksonwrite=false ==>... opg-hbase> conf.set("hbase.zookeeper.quorum", "localhost"); ==>null opg-hbase> conf.set("hbase.zookeeper.property.clientPort","2181"); ==>null opg-hbase> conn = ConnectionFactory.createConnection(conf); ==>hconnection-0x720653c2 opg-hbase> opg=OraclePropertyGraph.getInstance(conf, conn, "connections"); ==>oraclepropertygraph with name connections
1.7.4 Apache Lucene 7.0を使用したBDSGテキスト索引の管理
Apache Luceneを使用してプロパティ・グラフ・データのテキスト索引付けを管理する手順は、次のとおりです。
- BDSGプロパティ・グラフのインストール・ディレクトリに移動します。
cd /opt/oracle/oracle-spatial-graph/property_graph
- 実行に必要なApache Lucene 7.0ライブラリ(およびその依存関係)をすべて保持するために、
lucene
ディレクトリを作成します。mkdir lucene
- Hadoopのインストール・ベース・パスを指すようにHADOOP_HOMEを設定します。たとえば:
HADOOP_HOME=/scratch/cloudera/parcels/CDH-6.0.1-1.c
- 必要なApache Luceneライブラリを
lucene
ディレクトリにコピーします。cp $HADOOP_HOME/lib/search/lucene-core.jar lucene cp $HADOOP_HOME/lib/search/lucene-queryparser.jar lucene cp $HADOOP_HOME/lib/search/lucene-analyzers-common.jar lucene
Javaアプリケーションでのテキスト索引の管理
- BDSG_HOMEをプロパティ・グラフのインストール・ディレクトリに設定します。たとえば:
export BDSG_HOME=/opt/oracle/oracle-spatial-graph/property_graph
- BDSG_CLASSPATHを
lucene
ディレクトリに設定します。たとえば:export BDSG_CLASSPATH=/opt/oracle/oracle-spatial-graph/property_graph/lucene/*:$BDSG_CLASSPATH
- Javaコードをコンパイルします。たとえば:
javac -classpath $BDSG_HOME/lib/'*':$BDSG_CLASSPATH filename.java
- コンパイル済コードを実行して、Javaアプリケーションを実行します。たとえば:
java -classpath ./:$BDSG_HOME/lib/'*':$BDSG_CLASSPATH filename args
Groovyコンソールを使用したテキスト索引の管理
- BDSG_CLASSPATHを
lucene
ディレクトリに設定します。たとえば:export BDSG_CLASSPATH=/opt/oracle/oracle-spatial-graph/property_graph/lucene/*:$BDSG_CLASSPATH
- 通常どおりシェルを起動し、
OraclePropertyGraph
インスタンスを使用して、Apache HBaseストレージに格納されているプロパティ・グラフのテキスト索引を作成します。たとえば:cd /opt/oracle/oracle-spatial-graph/property_graph/dal/groovy sh gremlin-opg-hbase.sh -------------------------------- opg-hbase> conf = HBaseConfiguration.create(); ==>hbase.rs.cacheblocksonwrite=false ==>... opg-hbase> dop=2; ==>2 opg-hbase> conf.set("hbase.zookeeper.quorum", "localhost"); ==>null opg-hbase> conf.set("hbase.zookeeper.property.clientPort","2181"); ==>null opg-hbase> conn = ConnectionFactory.createConnection(conf); ==>hconnection-0x720653c2 opg-hbase> opg=OraclePropertyGraph.getInstance(conf, conn, "connections"); ==>oraclepropertygraph with name connections opg-hbase> indexParams = OracleIndexParameters.buildFS(dop /* number of directories */, dop /* number of connections used when indexing */, 10000 /* batch size before commit*/, 500000 /* commit size before Lucene commit*/, true /* enable datatypes */, "./lucene-index" /* index location */); ==>[parameter[search-engine,1], parameter[num-subdirectories,4], parameter[directory-type,FS_DIRECTORY], parameter[reindex-numConns,4], parameter[batch-size,10000], parameter[commit-batch-size,500000], parameter[values-as-strings,true], parameter[directory-location,[Ljava.lang.String;@5c1f6d57]] opg-hbase> opg.setDefaultIndexParameters(indexParams); ==>null opg-hbase> indexedKeys = new String[4]; indexedKeys[0] = "name"; indexedKeys[1] = "role"; indexedKeys[2] = "religion"; indexedKeys[3] = "country"; ==>name ==>role ==>religion ==>country opg-hbase> opg.createKeyIndex(indexedKeys, Vertex.class); ==>null
1.7.5 SolrCloud 7.0を使用したBDSGテキスト索引の管理
Apache Luceneを使用してプロパティ・グラフ・データのテキスト索引付けを管理する手順は、次のとおりです。
- BDSGプロパティ・グラフのインストール・ディレクトリに移動します。
cd /opt/oracle/oracle-spatial-graph/property_graph
- 実行に必要なApache Lucene 7.0ライブラリ(およびその依存関係)をすべて保持するために、
solrcloud
ディレクトリを作成します。mkdir solrcloud
- Hadoopのインストール・ベース・パスを指すようにHADOOP_HOMEを設定します。たとえば:
HADOOP_HOME=/scratch/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678
- 必要なSolrCloudライブラリを
lucene
ディレクトリにコピーします。cp $HADOOP_HOME/lib/solr/solr-solrj-7.0.0-cdh6.0.1.jar solrcloud cp $HADOOP_HOME/lib/solr/lib/noggit-0.8.jar solrcloud cp $HADOOP_HOME/lib/solr/lib/httpmime-4.5.3.jar solrcloud cp $HADOOP_HOME/lib/search/lucene-core.jar solrcloud cp $HADOOP_HOME/lib/search/lucene-queryparser.jar solrcloud cp $HADOOP_HOME/lib/search/lucene-analyzers-common.jar solrcloud
- BDSG_CLASSPATHを
solrcloud
ディレクトリに設定します。たとえば:export BDSG_CLASSPATH=/opt/oracle/oracle-spatial-graph/property_graph/solrcloud/*:$BDSG_CLASSPATH
Javaアプリケーションでのテキスト索引の管理
- BDSG_HOMEをプロパティ・グラフのインストール・ディレクトリに設定します。たとえば:
export BDSG_HOME=/opt/oracle/oracle-spatial-graph/property_graph
- BDSG_CLASSPATHを
solrcloud
ディレクトリに設定します。たとえば:export BDSG_CLASSPATH=/opt/oracle/oracle-spatial-graph/property_graph/solrcloud/*:$BDSG_CLASSPATH
- Javaコードをコンパイルします。たとえば:
javac -classpath $BDSG_HOME/lib/'*':$BDSG_CLASSPATH filename.java
- コンパイル済コードを実行して、Javaアプリケーションを実行します。たとえば:
java -classpath ./:$BDSG_HOME/lib/'*':$BDSG_CLASSPATH filename args
Groovyコンソールを使用したテキスト索引の管理
- BDSG_CLASSPATHを
solrcloud
ディレクトリに設定します。たとえば:export BDSG_CLASSPATH=/opt/oracle/oracle-spatial-graph/property_graph/solrcloud/*:$BDSG_CLASSPATH
- 通常どおりシェルを起動し、
OraclePropertyGraph
インスタンスを使用して、Apache HBaseストレージに格納されているプロパティ・グラフのテキスト索引を作成します。たとえば:cd /opt/oracle/oracle-spatial-graph/property_graph/dal/groovy sh gremlin-opg-hbase.sh -------------------------------- opg-hbase> conf = HBaseConfiguration.create(); ==>hbase.rs.cacheblocksonwrite=false ==>... opg-hbase> dop=2; ==>2 opg-hbase> conf.set("hbase.zookeeper.quorum", "localhost"); ==>null opg-hbase> conf.set("hbase.zookeeper.property.clientPort","2181"); ==>null opg-hbase> conn = ConnectionFactory.createConnection(conf); ==>hconnection-0x720653c2 opg-hbase> opg=OraclePropertyGraph.getInstance(conf, conn, "connections"); ==>oraclepropertygraph with name connections opg-hbase> indexParams = OracleIndexParameters.buildSolr("opgconfig" /* solr config */, "localhost:2181/solr" /* solr server url */, "localhost:8983_solr" /* solr node set */, 15 /* zookeeper timeout in seconds */, 1 /* total number of shards */, 1 /* Replication factor */, 1 /* maximum number of shardsper node */, 4 /* dop used for scan */, 10000 /* batch size before commit */, 500000 /* commit size before SolrCloud commit */, 15 /* write timeout in seconds */); ==>[parameter[search-engine,0], parameter[config-name,opgconfig], parameter[solr-server-url,localhost:2181/solr], parameter[solr-admin-url,localhost:8983_solr], parameter[zk-timeout,15], parameter[replication-factor,1], parameter[num-shards,1], parameter[max-shards-per-node,1], parameter[reindex-numConns,4], parameter[batch-size,10000], parameter[commit-batch-size,500000], parameter[write-timeout,15]] opg-hbase> opg-hbase> opg.setDefaultIndexParameters(indexParams); ==>null opg-hbase> indexedKeys = new String[4]; indexedKeys[0] = "name"; indexedKeys[1] = "role"; indexedKeys[2] = "religion"; indexedKeys[3] = "country"; ==>name ==>role ==>religion ==>country opg-hbase> opg.createKeyIndex(indexedKeys, Vertex.class); ==>null
1.8 アップグレードに伴い必要となるアプリケーション・コードの変更
Apache HBaseおよびSolrCloudを最新バージョンにするなどのアップグレードによりアプリケーション・コードの変更が必要になる場合があります。
1.8.1 Apache HBase 1.xからApache HBase 2.xへのアップグレードによる変更
Big Data Spatial and Graph 2.5.3は、Apache HBaseを新しいバージョンにアップグレードしたCloudera CDH6をサポートしています。
プロパティ・グラフ・インスタンスの作成
Apache HBase 2.0では、HConnection
インタフェースは非推奨のため、データ・アクセス・レイヤーではデータベースへの接続に接続オブジェクトを使用する必要があります。次のコード・スニペットは、Apache HBase 2.0接続オブジェクトからOraclePropertyGraphインスタンスを作成する方法を示しています。
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.*;
...
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", szQuorum);
conf.set("hbase.zookeeper.property.clientPort","2181");
Connection conn = ConnectionFactory.createConnection(conf);
OraclePropertyGraph opg = OraclePropertyGraph.getInstance(conf, hconn, szGraphName);
頂点/エッジのパラレル取得
次のコード・スニペットは、HBaseへの接続の配列を開き(Apache HBase 2.xからのConnection
/ConnectionFactory
APIを使用)、開いた接続を使用してパラレル問合せを実行してすべての頂点およびエッジを取得します。getVerticesPartitioned
/getEdgesPartitioned
メソッドの呼出し数は、分割の合計数と使用される接続の数によって制御されます。
int dop = 4;
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", szQuorum);
conf.set("hbase.zookeeper.property.clientPort","2181");
Connection conn = ConnectionFactory.createConnection(conf);
OraclePropertyGraph opg = OraclePropertyGraph.getInstance(conn, "connections");
// Create connections used in parallel query
Connection[] conns= new Connection[dop];
for (int i = 0; i < dop; i++) {
Configuration conf_new = HBaseConfiguration.create(opg.getConfiguration());
conns[i] = ConnectionFactory.createConnection(conf_new);
}
long lCountV = 0;
// Iterate over all the vertices¿ splits to count all the vertices
for (int split = 0; split < opg.getVertexTableSplits(); split += dop) {
Iterable<Vertex>[] iterables = opg.getVerticesPartitioned(conns /* Connection array */,
true /* skip store to cache */,
split /* starting split */);
for (Iterable<Vertex> iterable : iterables) {
lCountV += OraclePropertyGraphUtils.size(iterable); /* consume iterables */
}
}
// Count all vertices
System.out.println("Vertices found using parallel query: " + lCountV);
long lCountE = 0;
// Iterate over all the edges¿ splits to count all the edges
for (int split = 0; split < opg.getEdgeTableSplits(); split += dop) {
Iterable<Edge>[] iterables = opg.getEdgesPartitioned(conns /* Connection array */,
true /* skip store to cache */,
split /* starting split */);
for (Iterable<Vertex> iterable : iterables) {
lCountE += consumeIterables(iterables); /* consume iterables */
}
}
// Count all edges
System.out.println("Edges found using parallel query: " + lCountE);
// Close the connections to the database after completed
for (int idx = 0; idx < conns.length; idx++) {
conns[idx].close();
}
既存のグラフの削除
Apache HBase 2.xでは、OraclePropertyGraphUtils.dropPropertyGraph
メソッドはHadoopノードとApache HBaseポート番号を接続に使用します。次のコード・フラグメントは、my_graph
という名前のグラフをApache HBase 2.xから削除します。
int dop = 4;
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", szQuorum);
conf.set("hbase.zookeeper.property.clientPort","2181");
Connection conn = ConnectionFactory.createConnection(conf);
OraclePropertyGraphUtils.dropPropertyGraph(conn, "my_graph");
1.8.2 SolrCloud 4.10.3からSolrCloud 7.0.0へのアップグレードによる変更
SolrCloud 4.10.3からSolrCloud 7.0.0へのアップグレードには、アプリケーション・コードの変更が必要な場合があります。
プロパティ・グラフ・データのテキスト索引でのパラレル問合せ
SolrCloud 7.0では、SolrCloudServer
インタフェースは非推奨のため、データ・アクセス・レイヤーではSolrCloudテキスト検索エンジンへの接続にCloudSolrClient
オブジェクトを使用する必要があります。SolrCloudベースのテキスト索引に対してパラレル問合せを実行するには、CloudSolrClient
インスタンスのセットを指定する必要があります。CloudSolrClient
インスタンスを作成するには、操作SolrIndexUtils.getCloudSolrServer
が非推奨になったため、SolrIndexUtils.getCloudSolrClient
APIに依存できます。
次のコード・スニペットは、SolrCloud検索エンジンを使用して自動テキスト索引を生成し、パラレル・テキスト問合せを実行します。SolrIndex
クラスでのgetPartitioned
メソッドの呼出し数は、索引内のシャードの合計数と使用される接続の数によって制御されます。
OraclePropertyGraph opg = OraclePropertyGraph.getInstance(args, szGraphName);
String configName = "opgconfig";
String solrServerUrl = args[4];//"localhost:2181/solr"
String solrNodeSet = args[5]; //"localhost:8983_solr";
int zkTimeout = 15; // zookeeper timeout in seconds
int numShards = Integer.parseInt(args[6]); // number of shards in the index
int replicationFactor = 1; // replication factor
int maxShardsPerNode = 1; // maximum number of shards per node
// Create an automatic index using SolrCloud
OracleIndexParameters indexParams = OracleIndexParameters.buildSolr(configName, solrServerUrl, solrNodeSet, zkTimeout /* zookeeper timeout in seconds */, numShards /* total number of shards */, replicationFactor /* Replication factor */, maxShardsPerNode /* maximum number of shardsper node*/, 4 /* dop used for scan */, 10000 /* batch size before commit*/, 500000 /* commit size before SolrCloud commit*/, 15 /* write timeout in seconds */);
opg.setDefaultIndexParameters(indexParams);
// Create auto indexing on name property for all vertices
System.out.println("Create automatic index on name for vertices");
opg.createKeyIndex("name", Vertex.class);
// Get the SolrIndex object
SolrIndex<Vertex> index = (SolrIndex<Vertex>) opg.getAutoIndex(Vertex.class);
// Open an array of connections to handle connections to SolrCloud needed for parallel text search
CloudSolrClient[] conns = new CloudSolrClient[dop];
for (int idx = 0; idx < conns.length; idx++) {
conns[idx] = index.getCloudSolrClient(15 /* write timeout in secs*/);
}
// Iterate to cover all the shards in the index
long lCount = 0;
for (int split = 0; split < index.getTotalShards(); split += conns.length) {
// Gets elements from split to split + conns.length
Iterable<Vertex>[] iterAr = index.getPartitioned(conns /* connections */, "name"/* key */, "*" /* value */, true /* wildcards */, split /* start split ID */);
for (Iterable<Vertex> iterable : iterables) {
lCount += OraclePropertyGraphUtils.size(iterable); /* consume iterables */
}
}
// Close the connections to SolrCloud after completed
for (int idx = 0; idx < conns.length; idx++) {
conns[idx].close();
}
SolrCloudを使用したネイティブ問合せ結果の使用
SolrIndex
でメソッドget(QueryResponse)
を呼び出すことにより、SolrCloudを使用してネイティブ問合せ結果を使用できます。QueryResponse
オブジェクトには、特定のSolrCloudコレクションに対するテキスト検索問合せと一致するドキュメント・セットが用意されています。SolrIndex
は、QueryResponse
オブジェクト内で見つかったドキュメントからのすべての頂点(またはエッジ)を保持するIterableオブジェクトを作成します。
SolrCloud 7.0では、SolrCloudServer
インタフェースは非推奨のため、データ・アクセス・レイヤーではOracleプロパティ・グラフのテキスト索引に対するネイティブ問合せ結果を処理するためにCloudSolrClient
オブジェクトを使用する必要があります。次のコード・フラグメントは、Apache SolrCloud検索エンジンを使用して自動テキスト索引を生成し、SolrQuery
オブジェクトを作成し、これをCloudSolrClient
オブジェクトに対して実行してQueryResponseオブジェクトを取得します。後で、特定の結果オブジェクトから頂点のIterableオブジェクトが作成されます。
OraclePropertyGraph opg = OraclePropertyGraph.getInstance(args, szGraphName);
String configName = "opgconfig";
String solrServerUrl = args[4];//"localhost:2181/solr"
String solrNodeSet = args[5]; //"localhost:8983_solr";
int zkTimeout = 15; // zookeeper timeout in seconds
int numShards = Integer.parseInt(args[6]); // number of shards in the index
int replicationFactor = 1; // replication factor
int maxShardsPerNode = 1; // maximum number of shards per node
// Create an automatic index using SolrCloud
OracleIndexParameters indexParams = OracleIndexParameters.buildSolr(configName, solrServerUrl, solrNodeSet, zkTimeout /* zookeeper timeout in seconds */, numShards /* total number of shards */, replicationFactor /* Replication factor */, maxShardsPerNode /* maximum number of shardsper node*/, 4 /* dop used for scan */, 10000 /* batch size before commit*/, 500000 /* commit size before SolrCloud commit*/, 15 /* write timeout in seconds */);
opg.setDefaultIndexParameters(indexParams);
// Create auto indexing on name property for all vertices System.out.println("Create automatic index on name and country for vertices"); String[] indexedKeys = new String[2]; indexedKeys[0]="name"; indexedKeys[1]="country"; opg.createKeyIndex(indexedKeys, Vertex.class);
// Get the SolrIndex object
SolrIndex<Vertex> index = (SolrIndex<Vertex>) opg.getAutoIndex(Vertex.class);
// Search first for Key name with property value Beyon* using only string data types
String szQueryStrBey = index.buildSearchTerm("name", "Beyo*", String.class);
String key = index.appendDatatypesSuffixToKey("country", String.class);
String value = index.appendDatatypesSuffixToValue("United States", String.class);
String szQueryStrCountry = key + ":" + value;
Solrquery query = new SolrQuery(szQueryStrBey + " AND " + szQueryStrCountry);
CloudSolrClient conn = index.getCloudSolrClient(15 /* write timeout in secs*/);
//Query using get operation
QueryResponse qr = conn.query(query, SolrRequest.METHOD.POST);
Iterable<Vertex> it = index.get(qr);
long lCount = 0;
while (it.hasNext()) {
System.out.println(it.next());
lCount++;
}
System.out.println("Vertices found: "+ lCount);