※注意※ SQLのタグをつけていますが、あくまでSQLライクのクエリ言語です
今回行うこと
- デモの実践
今回研究を行うにあたって、物は試し!ということでSlide Shareで公開されているデモを再現してみました。
参考:Oracle Labs 発! Parallel Graph Analytics(PGX) - SlideShare
とりあえず無料で検証・開発を行えるそうなので以下のサイトでPGXシェルサーバーzipとJavaのパッケージをダウンロード(デモスライドではPGXシェルver2.3.1を使用)。Javaは最新のバージョンで大丈夫でした。
PGX Server Download
Java Download
- linux用です!!(正直最初はlinuxすらよくわかりませんでした、、)
- 今回はAWSのEC2を使用しました。
AWS EC2が何なのか分らない人のためにPGXサーバーの最新バージョン(PGX2.4.1)では有向性、無向性の定義の関係上の問題?で上手く処理できなかった。
**バージョン2.5.0で改善されるそうです!**https://community.oracle.com/thread/4055609
私の場合は一旦ローカル環境に落としてから、SFTP転送によって、EC2で作った仮想linuxサーバーのpgxディレクトリ(/home/ec2-user/pgx)に移しました。
※EC2で作成した仮想サーバー内にpgxディレクトリを作成して、そこにダウンロードしたものをそれぞれ入れたということです。
SFTP転送が何なのかわからない人は[こちらを見て下さい](https://winscp.net/eng/docs/lang:jp)。
要するに安全にローカル環境からリモート環境へファイルを転送するということです。転送するにあたって設定が分からないとなる人がいると思いますが、ホスト名(IP)、ユーザ名(ec2-user, ubuntuなど)、パスワード(設定した人のみ)、ポート(設定にもよるが大抵22)を押さえておけば大丈夫です、きっと。その後、各ファイルを展開します。
$ cd $HOME/pgx
$ unzip pgx-2.3.1-server.zip
$ tar xvzf jdk-8u131-linux-x64.tar.gz
※tarコマンドについて:tar コマンド | コマンドの使い方(Linux) | hydroculのメモ
Javaのバージョンを確認($ java -version
)したら、PGXシェルを起動するために環境変数の設定を行います。参考にしたもののファイル名を自分のものに変える程度です。
- 環境変数設定
$ vim env_pgx
# !/bin/sh
export JAVA_HOME=/home/ec2-user/pgx/jdk1.8.0_131
export PATH=$PATH:/home/ec2-user/pgx/pgx-2.3.1/bin
export PATH=$JAVA_HOME/bin:$PATH
※#!/bin/shについて:シェルスクリプトの1行目に書くおまじないで使える便利オプション集:Qiita
有効化して、うまくいっているかどうか確認します!
$ . env_pgx
$ echo $PATH
上のようになっていれば大丈夫です。(多分。)
なお、このままではサーバーを再起動した場合に有効化がリセットされてしまうらしいので、有効化を維持するために以下の隠しファイルに同様の内容を追加で記述します(重複すみません)。
export JAVA_HOME=/home/ec2-user/pgx/jdk1.8.0_131
export PATH=$PATH:/home/ec2-user/pgx/pgx-2.3.1/bin
export PATH=$JAVA_HOME/bin:$PATH
- PGXシェル起動
それでは起動してみます。
$ pgx
上手くいけば上の図のようになります。よくわからないけどシェルに入れました!
なお、シェルを閉じるときは
pgx> :exit
エラーが発生した時は
pgx> :clear
補足
※今回、EC2インスタンスを動かし続けないようにcrontabというものを用いて自動停止設定をしました。
- cron設定
日本時間 24:00 = UTC 15:00
$ sudo vi /etc/crontab
0 15 * * * root shutdown -h now
$ sudo service crond restart
cronはcrondが起動していないと実行されないみたいです、難しい、、
参照:cronの設定・実行 | WEBサービス創造記
cronの設定方法 - Qiita
初心者向けcronの使い方 - Qiita
ぐちゃぐちゃですみませんでした!