知识库

在因果集群环境中使用 neo4j-import 的步骤示例

以下步骤描述了如何在因果集群环境中使用 neo4j-import,这些步骤是在单台 Linux 主机上运行的,该主机具有 3 个副本,用于在以下路径中安装 Neo4j 3.1.2

~/HA/ha1/neo4j-enterprise-3.1.2
~/HA/ha2/neo4j-enterprise-3.1.2
~/HA/ha3/neo4j-enterprise-3.1.2

这类似于 设置本地因果集群 的说明

  • 验证因果集群是否会形成(在配置 $NEO4J_HOME/cond/neo4j.conf 后),并运行

~/HA/ha1/neo4j-enterprise-3.1.2/bin/neo4j start; ~/HA/ha2/neo4j-enterprise-3.1.2/bin/neo4j start;
~/HA/ha3/neo4j-enterprise-3.1.2/bin/neo4j start

假设默认数据库为 graph.db

由于启动因果集群需要大量的配置,因此我想确保它至少可以启动并且数据库为空。

  • 通过运行以下命令停止因果集群

~/HA/ha1/neo4j-enterprise-3.1.2/bin/neo4j stop; ~/HA/ha2/neo4j-enterprise-3.1.2/bin/neo4j stop;
~/HA/ha3/neo4j-enterprise-3.1.2/bin/neo4j stop

这将产生以下输出

Stopping Neo4j..................................... stopped
Stopping Neo4j.................................... stopped
Stopping Neo4j..................................... stopped
  • 解除绑定 3 个因果集群数据库中的每一个。 (如果跳过步骤 1 和步骤 2,则不需要这样做,但如果在后续步骤中无法形成集群,则需要确定是集群配置问题还是数据库导入问题)。更详细的解除绑定步骤在 这里 说明

$ ~/HA/ha2/neo4j-enterprise-3.1.2/bin/neo4j-admin unbind --database=graph.db
$ ~/HA/ha1/neo4j-enterprise-3.1.2/bin/neo4j-admin unbind --database=graph.db
$ ~/HA/ha3/neo4j-enterprise-3.1.2/bin/neo4j-admin unbind --database=graph.db
  • 创建 ~/HA/ha1/neo4j-enterprise-3.1.2/importer 并添加 3 个文件,分别为 actors.csv、movies.csv、roles.csv,它们的内容在 这里 详细说明

  • 运行 neo4j-import 并将数据加载到 ~/HA/ha1/neo4j-enterprise-3.1.2/data/databases/graph.db.importer

~/HA/ha1/neo4j-enterprise-3.1.2/bin/neo4j-import --into ~/HA/ha1/neo4j-enterprise-3.1.2/data/databases/graph.db.importer --nodes ~/HA/ha1/neo4j-enterprise-3.1.2/importer/movies.csv --nodes ~/HA/ha1/neo4j-enterprise-3.1.2/importer/actors.csv --relationships ~/HA/ha1/neo4j-enterprise-3.1.2/importer/roles.csv

这将产生以下输出

WARNING: neo4j-import is deprecated and support for it will be removed in a future
version of Neo4j; please use neo4j-admin import instead.

Neo4j version: 3.1.2
Importing the contents of these files into /home/neo4j/HA/ha1/neo4j-enterprise-3.1.2/data/databases/graph.db.importer:
Nodes:
  /home/neo4j/HA/ha1/neo4j-enterprise-3.1.2/importer/movies.csv

  /home/neo4j/HA/ha1/neo4j-enterprise-3.1.2/importer/actors.csv
Relationships:
  /home/neo4j/HA/ha1/neo4j-enterprise-3.1.2/importer/roles.csv

Available resources:
  Free machine memory: 5.01 GB
  Max heap memory : 1.47 GB
  Processors: 1

Nodes

Done in 100ms
Prepare node index

Done in 26ms
Calculate dense nodes

Done in 43ms
Node --> Relationship Sparse

Done in 10ms
Relationship --> Relationship Sparse

Done in 11ms
Minority relationships

Done in 32ms
Count groups

Done in 10ms
Gather

Done in 11ms
Write

Done in 10ms
Node --> Group

Done in 11ms
Node counts

Done in 53ms
Relationship counts

Done in 11ms

IMPORT DONE in 1s 881ms.
Imported:
  6 nodes
  0 relationships
  15 properties
Peak memory usage: 7.63 MB
  • 更新 3 个 $NEO4J_HOME/conf/neo4j.conf 中的每一个并定义

# The name of the database to mount
dbms.active_database=graph.db.importer

因为它代表了从 neo4j-import 准备好的数据库的名称。

  • 通过以下方式将 graph.db.importer 从实例 1 复制到实例 2 和 3

cp -R ~/HA/ha1/neo4j-enterprise-3.1.2/data/databases/graph.db.importer ~/HA/ha2/neo4j-enterprise-3.1.2/data/databases/graph.db.importer
cp -R ~/HA/ha1/neo4j-enterprise-3.1.2/data/databases/graph.db.importer ~/HA/ha3/neo4j-enterprise-3.1.2/data/databases/graph.db.importer
  • 启动所有 3 个实例,如下所示

~/HA/ha1/neo4j-enterprise-3.1.2/bin/neo4j start;  ~/HA/ha2/neo4j-enterprise-3.1.2/bin/neo4j start;
~/HA/ha3/neo4j-enterprise-3.1.2/bin/neo4j start

这将产生以下输出

Starting Neo4j.
Started neo4j (pid 3976). It is available at http://0.0.0.0:7414/
There may be a short delay until the server is ready.
See /home/neo4j/HA/ha1/neo4j-enterprise-3.1.2/logs/neo4j.log for current status.
Starting Neo4j.
Started neo4j (pid 4040). It is available at http://0.0.0.0:7424/
There may be a short delay until the server is ready.
See /home/neo4j/HA/ha2/neo4j-enterprise-3.1.2/logs/neo4j.log for current status.
Starting Neo4j.
Started neo4j (pid 4104). It is available at http://0.0.0.0:7434/
There may be a short delay until the server is ready.
See /home/neo4j/HA/ha3/neo4j-enterprise-3.1.2/logs/neo4j.log for current status.

在 3 个实例中的每一个上运行 match (n) return n limit 10,所有实例都报告了 6 个节点,这与 neo4j-import 的输出相对应,neo4j-import 报告了

Imported:
  6 nodes
  0 relationships
  15 properties
  • 从 leader 运行

create (n:Tester {id:105});

并验证它是在 leader 以及 follower 上创建的。