Neo4jをインストールするには

「7つのデータベース 7つの世界」第7章の学習のために、Neo4jをインストールします。

7つのデータベース 7つの世界

  • PotgreSQL
  • Riak
  • HBase
  • MongoDB
  • CouchDB
  • Neo4j
  • Redis
Neo4j Deployment Center

書籍で使っているNeo4jのバージョンは、1.7(p234のneo4j-enterprise-1.7-unix.tarから)

最新バージョンは、4.0.4。

Enterprise Editionの1.9.7をダウンロードできたので、これを使います。

最初の1行「g.V」を入力するまでが大変だったよ。

慣れている人は、Tinkerpopでgremlinサーバを導入して、neo4jに接続するみたいよ。

何を言っているのか、わからないよ...

インストール

Neo4j 1.9.7

書籍ではNeo4j 1.7を使っていて、Web UIのConsoleでgremlinを入力できます。

Neo4j 4.0.4とNeo4j 2.3.12を試したところ、 Web UIのコンソールはCypher入力だけで、gremlin入力できませんでした。

Neo4j 1.9.7 を試したところ、書籍と同じWeb UIで、gremlin入力ができました。ただし、Oracle Java 1.7またはOpenJDK 1.7が必要です。

Mac OS X / Linux
https://neo4j.com/artifact.php?name=neo4j-community-1.9.7-unix.tar.gz 44MB
https://neo4j.com/artifact.php?name=neo4j-enterprise-1.9.7-unix.tar.gz 48MB

Windows
https://neo4j.com/artifact.php?name=neo4j-community-1.9.7-windows.zip 38MB
https://neo4j.com/artifact.php?name=neo4j-enterprise-1.9.7-windows.zip 41MB

Openjdk 1.7
https://jdk.java.net/java-se-ri/7

oracle java 1.7ではWARN表示なく起動しました。openjdk 1.7 ではWARN表示されましたが、起動しました。openjdk 8、openjdk 11でも同じWARN表示でしたが、起動できませんでした。

01:22:47.765 [main] WARN org.neo4j.kernel.info.JvmChecker - You are using an unsupported Java runtime. Please use Oracle(R) Java(TM) Runtime Environment 7.

Neo4j 4.0.4

今回の学習では使いませんでしたが、作業メモとして残しておきます。

Mac OS X 10.15.4、Ubuntu 18.04にインストールできました。Windows 10は試していませんが、同じ要領でインストールできると思います。

https://neo4j.com/download-center/#community を表示して、Linux/Mac用のtar.gzファイルをダウンロードします。105MBありました。

~/Dowloads/ の下に展開します。

$ cd ~/Downloads

$ tar xzf neo4j-community-4.0.4-unix.tar.gz

$ cd neo4j-community-4.0.4Code language: Bash (bash)

PATHやJAVA_HOMEにopenjdk-11を設定しておきます。筆者は、Android StudioのjavaをPATHやJAVA_HOMEに設定しているので、一時的にopenjdk-11を指すように設定しました。

$ android_java=/snap/android-studio/current/android-studio/jre/bin:
$ android_java=${android_java/\//\\\/}
$ export PATH=${PATH/$android_java/}

$ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

$ which java
/usr/bin/java

$ java -version
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-2ubuntu218.04)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-2ubuntu218.04, mixed mode, sharing)
Code language: Bash (bash)

起動します。

$ ./bin/neo4j start
Directories in use:
  home:         /home/aoki/Downloads/neo4j-community-4.0.4
  config:       /home/aoki/Downloads/neo4j-community-4.0.4/conf
  logs:         /home/aoki/Downloads/neo4j-community-4.0.4/logs
  plugins:      /home/aoki/Downloads/neo4j-community-4.0.4/plugins
  import:       /home/aoki/Downloads/neo4j-community-4.0.4/import
  data:         /home/aoki/Downloads/neo4j-community-4.0.4/data
  certificates: /home/aoki/Downloads/neo4j-community-4.0.4/certificates
  run:          /home/aoki/Downloads/neo4j-community-4.0.4/run
Starting Neo4j.
WARNING: Max 1024 open files allowed, minimum of 40000 recommended. See the Neo4j manual.
Started neo4j (pid 12240). It is available at http://localhost:7474/
There may be a short delay until the server is ready.
See /home/aoki/Downloads/neo4j-community-4.0.4/logs/neo4j.log for current status.
Code language: Bash (bash)

Webブラウザで、http://localhost:7474/ を表示します。Username=neo4j、初期Password=neo4j です。

Passwordを変更します。ここでは "password" にしました。

neo4jのweb画面が表示されました。

Neo4j Desktop 1.2.8 (Neo4j 4.0.3付き)

今回の学習では使いませんでしたが、作業メモとして残しておきます。

Windows用が545MB、Mac OS X用が150MB、Debian/Ubuntu用が610MBあります。進捗をみると1時間以上かかりそうなうえに、途中で失敗してしまいます。そこで、レンタルサーバのhetemlにsshログインして、hetemlサーバ上でwgetして、hetemlからローカルPCにscpしました。

企業サイトや人気サイトの運用実績多数!月額800円(税抜)~の高スペックレンタルサーバー

Mac OS Xに、Neo4j Desktopをインストールすると、Neo4j enterprise 4.0.3とopenjdk-11.0.5がインストールされました。

Mac OS Xにはhome brewでopenjdk@11(11.0.7)をインストールしてありましたが、それとは別にopenjdk 11.0.5がインストールされました。場所は、/Users/aoki.makoto/Library/Application Support/Neo4j Desktop/Application/distributions/java/zulu11.35.13-ca-jdk11.0.5/ です。

書籍内コード

p224 ビッグデータ

http://download.freebase.com/datadumps/latest/browse/film/performance.tsv は404エラー。

2020年現在、Freebase.comはなく、Googleで最終データが公開されています。ただし、22GBもあります。

そこで、PostgreSQLの章で使った俳優データを代用します。すでにpostgresにインポートされているものとします。

sudo -u postgres psql book 
    --command="select a.actor_id, m.movie_id, a.name, m.title, 'dummy' AS dummy from movies_actors ma JOIN movies m ON ma.movie_id = m.movie_id JOIN actors a ON ma.actor_id = a.actor_id;" \
    --no-align \
    --field-separator=$'\t' \
    --tuples-only  \
    >actors_movies.tsv
Code language: Bash (bash)
$ head actors_movies.tsv 
3165	1	Mark Hamill	Star Wars	dummy
644	1	Carrie Fisher	Star Wars	dummy
1753	1	Harrison Ford	Star Wars	dummy
3768	1	Peter Cushing	Star Wars	dummy
4666	2	Tom Hanks	Forrest Gump	dummy
4094	2	Robin Wright Penn	Forrest Gump	dummy
1560	2	Gary Sinise	Forrest Gump	dummy
3489	2	Mykelti Williamson	Forrest Gump	dummy
2739	3	Kevin Spacey	American Beauty	dummy
247	3	Annette Bening	American Beauty	dummy
Code language: Bash (bash)

これで、importer.rb でインポートできます。俳優が4986件、映画が2861件あります。

$ ruby importer.rb actors_movies.tsvCode language: Bash (bash)

追記

Freebase-easy-14-04-14から、actors_movies.tsvを作りました。

actors_movies.tsv.gz 14MB、117万件

p228 外部アルゴリズム

Apache TinkerPop: Home

TinkerPopのGremlin consoleをダウンロードします。

$ wget http://ftp.jaist.ac.jp/pub/apache/tinkerpop/3.4.6/apache-tinkerpop-gremlin-console-3.4.6-bin.zip

$ unzip apache-tinkerpop-gremlin-console-3.4.6-bin.zip

$ cd apache-tinkerpop-gremlin-console-3.4.6Code language: Bash (bash)

Gremlinコンソールを起動します。Java 1.7ではエラーでした。環境変数PATHやJAVA_HOMEをJava 1.8に切り替えました。

ちなみに、Gremlinコンソールのヘルプは「:help」、終了は「:quit」です。

$ ./bin/gremlin.sh

         \,,,/
         (o o)
-----oOOo-(3)-oOOo-----
plugin activated: tinkerpop.server
plugin activated: tinkerpop.utilities
plugin activated: tinkerpop.tinkergraph
gremlin> :help

For information about Groovy, visit:
    http://groovy-lang.org 

Available commands:
  :help       (:h  ) Display this help message
  ?           (:?  ) Alias to: :help
  :exit       (:x  ) Exit the shell
  :quit       (:q  ) Alias to: :exit
  import      (:i  ) Import a class into the namespace
  :display    (:d  ) Display the current buffer
  :clear      (:c  ) Clear the buffer and reset the prompt counter
  :show       (:S  ) Show variables, classes or imports
  :inspect    (:n  ) Inspect a variable or the last result with the GUI object browser
  :purge      (:p  ) Purge variables, classes, imports or preferences
  :edit       (:e  ) Edit the current buffer
  :load       (:l  ) Load a file or URL into the buffer
  .           (:.  ) Alias to: :load
  :save       (:s  ) Save the current buffer to a file
  :record     (:r  ) Record the current session to a file
  :history    (:H  ) Display, manage and recall edit-line history
  :alias      (:a  ) Create an alias
  :grab       (:g  ) Add a dependency to the shell environment
  :register   (:rc ) Register a new command with the shell
  :doc        (:D  ) Open a browser window displaying the doc for the argument
  :set        (:=  ) Set (or list) preferences
  :uninstall  (:-  ) Uninstall a Maven library and its dependencies from the Gremlin Console
  :install    (:+  ) Install a Maven library and its dependencies into the Gremlin Console
  :plugin     (:pin) Manage plugins for the Console
  :remote     (:rem) Define a remote connection
  :submit     (:>  ) Send a Gremlin script to Gremlin Server
  :bytecode   (:bc ) Gremlin bytecode helper commands

For help on a specific command type:
    :help command 
Code language: Bash (bash)
TinkerPop Documentation

上のページの説明にしたがって、Gremlinコンソールに入って、Neo4j-Gremlinをインストールします。

gremlin> :install org.apache.tinkerpop neo4j-gremlin 3.4.6
==>Loaded: [org.apache.tinkerpop, neo4j-gremlin, 3.4.6] - restart the console to use [tinkerpop.neo4j]Code language: Bash (bash)

「==>Loaded」メッセージが表示されたら、いったんGremlinコンソールを終了します。

gremlin> :quit

$Code language: Bash (bash)

Gremlinコンソールを起動します。

$ ./bin/gremlin.sh

         \,,,/
         (o o)
-----oOOo-(3)-oOOo-----
plugin activated: tinkerpop.server
plugin activated: tinkerpop.utilities
plugin activated: tinkerpop.tinkergraph
gremlin> 

neo4jプラグインをアクティベートします。

gremlin> :plugin use tinkerpop.neo4j
==>tinkerpop.neo4j activated
Code language: Bash (bash)

Neo4jGraphオブジェクトを生成します。

gremlin> graph = Neo4jGraph.open('/home/aoki/Downloads/neo4j-enterprise-1.9.7/data/graph.db')
Error starting org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory, /home/aoki/Downloads/neo4j-enterprise-1.9.7/data/graph.db
Type ':help' or ':h' for help.
Display stack trace? [yN]
Code language: Bash (bash)

しかしエラーでした。ここで断念しました。

試しに、neo4j-community-4.0.4のdata/databasesを指定すると、Neo4jGraphオブジェクトを生成できました。

gremlin> graph = Neo4jGraph.open('/home/aoki/Downloads/neo4j-community-4.0.4/data/databases')
==>neo4jgraph[community single [/home/aoki/Downloads/neo4j-community-4.0.4/data/databases]]

gremlin> g = graph.traversal()

gremlin> g.addV('person').property('name', 'marko')
==>v[0]

gremlin> g.V()
==>v[0]
Code language: Bash (bash)
タイトルとURLをコピーしました