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

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

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

  • PotgreSQL
  • Riak
  • HBase
  • MongoDB
  • CouchDB
  • Neo4j
  • Redis
Neo4j Download Center - Neo4j Graph Database Platform
Community-Contributed Drivers Thanks to the Neo4j contributor community, there are additionally drivers for almost every popular programming language, most of w...

書籍で使っている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.4

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)

起動します。

$ ./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.

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しました。

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 ビッグデータ

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
$ 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

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

$ ruby importer.rb actors_movies.tsv

p228 外部アルゴリズム

Apache TinkerPop
A Graph Computing Framework

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.6

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
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]

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

gremlin> :quit $

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

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]

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

試しに、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]

タイトルとURLをコピーしました