Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@ShinHashitani

Database for AI - Grakn.aiことはじめ part 2 - AzureにGrakn.aiをインストールしてグラフを愛でる

More than 3 years have passed since last update.

はじめに

前回のDatabase for AI - Grakn.aiことはじめ part 1 - 前置きと概要でGrakn.aiの概要について触れたので、今回は実際に動かすところまでやりたいと思う。

Grakn.aiはMac OSとLinuxサポートとなっておりWindowsでは動かない。Mac使っている方であれば「ありがとう」という感じなんだろうが、一般的なにっぽん企業戦士の大半はWindows端末をあてがわれているので意外とこのハードルは高い。そこで今回はAzureにLinuxのVMを作って、クラウドで動かす手順を説明したい。

**訂正 (2017/11/17)

Windowsでは動かないと書いてしまったが、実はVirtual Boxで動くパッケージが提供されていた。詳細はDatabase for AI - Grakn.aiことはじめ part 2 .1 - Oracle Virtual Boxで学ぶGrakn Academyまで。

今回の構成

  • Grakn: 0.17.1
  • Azure VM: DS1_V2 Standard
  • OS: Ubuntu (Canonical 17.0)
  • Java: Open JDK 8

前提条件

まずAzureのアカウントが無いといけない。まだお持ちでない方はVisual Studio Dev Essentialsを利用する事をお勧めしたい。(【開発者向け無償プログラム】Visual Studio Dev Essentialに登録して無料のツール、クラウドサービス、トレーニングでスキルアップを!等をご参考に)一年間、毎月25ドルずつフリークレジットが付いてくるので、上手くやりくりすれば無料で色々試せる。Pluralsightの3ヶ月サブスクリプションなんかも付いてくる。

VM廻りの準備

Grakn.aiのダウンロード

まずはGrakn.aiを取って来ないと始まらないので、本家からダウンロードする。zip形式で配布されており今回はzipのままVMに送るが、ローカルでも展開して保持しておいた方が良い。(サンプル等が入っているからであって、今回のように動かすことが目的であれば設定をローカルで施す必要はない。)

VMの設定

3_size.png
Grakn.aiはCassandraとRedisが最低限必要なのでそれなりにリソースを必要とするが、今回はお勧めのDS1_V2 Standardを選択。OSはUbuntuの最新(Canonical 17.0)を選択。VM設定にて関連リソースに関してはデフォルトのあままにしておくと、必要なものは一通り揃って準備される。便利。以下の様なリソースが合わせて生成される。
5_resources.png

** 追加で必要な設定

まず、IPはDynamicからStaticに変更しておく事をお勧めする。結構な頻度でVMを停止/起動することになると思うが(PoCでは)、その度にIPが変わると面倒なので。

次に大事なのはポートを外に向かって開ける事。デフォルトではSSH(22)しか開いていない。Grakn.aiのデフォルトポートは(4567)なので、最低限このポートは開けておく必要がある。VM生成時に合わせて作成したNetwork security groupのInbound security rulesから追加する。以下の様になるとOK:
7_inboud_security.png

Grakn.aiのパッケージをVMに転送(Azure Cloud Shellでやってみる)

Azureを触るまでは「VMって出来たはいいけど、ファイル転送はどうするんだろう?」って思っていたが、結構直感的に扱える。今回のようなケースはVM上から直接curlで取るのが普通だとは思うが、気になったのでAzure CLIでやって合わせて試してみる。

流れは以下の様になる:
1. Azureのコンソールから、Cloud Driveというストレージにファイル転送
2. Azure Cloud Shellを立ち上げ、Cloud DriveからSCPでVMに転送

AzureではストレージもStorage accountとして管理され、先ほどのVM構築の際にも(デフォルトのままだと)作ったVMの所属するResource groupに作成されている。また、Azure CLI用にもデフォルトでストレージが準備されている。今回はここにファイルを置く。
8_storage.png
Resource groupがcloud-shell-storage-...となっているものがそれ。これを選択し、Fileのセクションに移動。ファイルアップローダーが出てくるので、ダウンロードしたGrakn.aiのパッケージを選択肢アップロードすれば完了。

今度はAzure Cloud Shellにログイン。Azure Cloud Shellはブラウザ上で動くコマンドライン環境で、
azure_cli_1.png
ここをクリックすると
azure_cli_2.png
こんな感じで下にコマンドプロンプトが出てくる。Azure Cloud Shellは使ってみると、わずかにタイプのタイムラグがあるのとウィンドウを切り替えた際にフォーカスを当てるのにひと手間かかる。フリーズする事も多い。ただ、Azure Cloud Shellを使うとブラウザ上で全て完結出来る。新たなソフトウェアインストール申請やポートの心配をしなくて良いのでお手軽だと思う。(面倒な企業さんも多いはず。)

Azure Cloud Shellはコンソールから開いた状態で既にログイン出来ている。先ほど転送したファイルはclouddriveという直下のシンボリックリンク先に格納されているので、後はVMに転送すれば完了。

scp ./clouddrive/grakn-dist-0.17.1.zip grakn@xx.xxx.xxx.xxx:resources

ここではVMに作っておいたresourcesというフォルダに向けて転送してみた。

VM側の設定

さて、これで準備が整ったのでsshでVMに入ってみる。引き続きの作業は以下の手順となる:

  1. unzipのインストール
  2. Java 8のインストール
  3. $JAVA_HOMEの設定
  4. Grakn.aiパッケージの展開
  5. 起動シェルの実行

まず、zipを展開しようにも何も入っていないので、unzipのインストールから

sudo apt install unzip

続いてJava 8

sudo apt-get install openjdk-8-jdk
java -version

unzipして、適当な場所にパッケージを移動

unzip grakn-dist-0.17.1.zip
mv grakn-dist-0.17.1 ../grakn

最後に.profileを開き、以下の一文を追加(javaは/usr/bin/java)

.profile
export JAVA_HOME=/usr

これで完了。

Grakn.aiの起動

早速起動してみる:

./grakn server start

すると
12_grakn_success.png
おや動いた。簡単。

お察しの通り、停止する時は上記のstartをstopにすれば良。

テストデータのロードと、Visualizerでの確認

テストデータ(pokemon example)のロード

Grakn.aiのパッケージにはサンプルも同梱されており、まずはこれをロードしてグラフを見てみたいと思う。今回はpokemonサンプルをロード。

./graql console -f examples/pokemon.gql -k pokemon

Grakn.aiではcsvファイル等もインポート出来る(migrationという機能)が、このpokemonサンプルはオントロジーの定義からデータの投入まで全てGrakn.ai標準のgraqlで書かれているの。この為、consoleに-fでファイル指定する事によって一気に環境が出来上がる。

-k pokemonはKeyspaceと呼ばれるGrakn.aiのネームスペースを定義する為のパラメータ。無いとデフォルトのKeyspaceにロードされる。

Visualizerで確認

Grakn Visualizerはブラウザからアクセス出来る。VMのパブリックIPにポート4567を指定。
http://xx.xxx.xxx.xxx:4567
14_query.png
コマンドを実際に打てる(Visualizerなのでread onlyのコマンドのみサポートされている)が、エンティティやリレーションをバンと読み込む事も出来る。上部TypesというメニューあらRelationshipsにあるhas-typeをクリックしてみると...
15_success.png
おぉ、グラフだ!それっぽい!

次回

このpokemonグラフに対して、Visualizerを使ってクエリを色々投げてみたいと思う。

おまけ

Grakn.aiはデータストアにCassandraを使用している事は前回少し触れたが、CassandraがまだJava 9対応していないので9だとストレージの初期化で落ちてしまう。
11_grakn_fail.png
上の様な状態になったら、まず$JAVA_HOMEがちゃんとJava 8に向いているかを確認してほしい。

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ShinHashitani
生命保険会社で課長してます。スーツは着ませんがいたって不真面目です。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?