有哪些常用的g*命令,用来管理TigerGraph集群的?

有哪些常用的g*命令,用来管理TigerGraph集群的?

TigerGraph提供了如下一些对集群操作的命令,使用这些命令很类似于常规的linux命令。要使用这些命令必需先登录TigerGraph账号。

  • ghostname
  • gssh
  • grun
  • grun_p
  • gscp
  • gfetch

ghostname

这个命令用来打印在本节点的主机名(hostname),主机名指的是本节点的节点号(如m1, m2等),以及运行在本节点的所有TigerGraph组件(如GSE、GPE、RESTPP等),比如在m1上执行该命令,结果如下:

(m1)$ ghostname
m1
GPE_1_1
RESTPP_1_1
RESTPP-LOADER_1_1
KAFKA-LOADER_1_1
GSE_1_1

gssh [hostname]

该命令用来快速切换到其他节点,而无需使用linux的ssh命令。
比如当前在m1节点上,要切换到m2,只要执行如下命令:

(m1) $ gssh m2
(m2) $

如果想要看集群中有哪些主机名,以及SSH的配置如何,只需执行如下命令:

(m1) $ gssh 
Usage: gssh m1|gpe_1_1|gse_1_1|...
Usage: ----------------Available hosts--------------
Host *
IdentityFile /home/tigergraph/.ssh/tigergraph_rsa
Port 22

Host m2 GSE_2_1 GPE_2_1 RESTPP_2_1 RESTPP-LOADER_2_1 KAFKA-LOADER_2_1
    HostName 172.30.1.154
Host m1 GSE_1_1 GPE_1_1 RESTPP_1_1 RESTPP-LOADER_1_1 KAFKA-LOADER_1_1
    HostName 172.30.1.142
Host m3 GSE_3_1 GPE_3_1 RESTPP_3_1 RESTPP-LOADER_3_1 KAFKA-LOADER_3_1
    HostName 172.30.1.128

通过以上命令,我们看到m3上运行着GSE_3_1,如果我们想切换到GSE_3_1所在的节点,只需执行如下命令:

(m2) $ gssh GSE_3_1
(m3) $

grun <all|gpe|gse|gpp|kafka|rest|zk> "<command [;command …]>

该命令用来在所有的节点上(或者选若干个节点)逐个节点地执行同样的linux命令。
比如当前在m1节点上,此时想要逐个节点地看各个节点的时间,只需执行如下命令:

(m1) $ grun all "date"

### Connecting to local  server 172.30.1.142 ...
Wed Nov 14 22:45:19 UTC 2018

### Connecting to remote server 172.30.1.154 ...
Wed Nov 14 22:45:19 UTC 2018

### Connecting to remote server 172.30.1.128 ...
Wed Nov 14 22:45:19 UTC 2018

要注意的是,以上“date”命令是逐个节点地执行,而非同时在三个节点执行,也就是说先在172.30.1.142执行“date”命令,执行完成后再到172.30.1.154执行“date”命令,最后再到172.30.1.128执行“date”命令。

grun_p <all|gpe|gse|gpp|kafka|rest|zk> "<command [;command …]>"

如果用户并不想逐个节点地执行命令,而是同时在所有节点(或者若干个节点)上执行同样的linux命令,则使用gun_p(p指的是parallel,并行的意思)。当然,由于是并发运行的,各节点的执行结果可能是交错打印出来的,我们只关心有用的信息,所以不妨使用grep过滤出感兴趣的信息。仍以执行“date”命令,结果如下:

(m1) $ grun_p all "date" |grep 2018
Wed Nov 14 22:45:55 UTC 2018
Wed Nov 14 22:45:55 UTC 2018
Wed Nov 14 22:45:55 UTC 2018

gscp <all|gpe|gse|gpp|kafka|rest|zk> <src_path> <target_path>

这个命令是用来拷贝本地文件到所有节点(或者某几个节点)的。
当目标节点包含本地节点,而且目标路径与源路径不同时,也会将文件拷贝到本地节点的目标路径中去。
示例如下:

(m1) $ touch /tmp/abc
(m1) $ gscp all /tmp/abc /tmp

### Connecting to local  server 172.30.1.142 ...
cp: '/tmp/abc' and '/tmp/abc' are the same file

### Connecting to remote server 172.30.1.154 ...

### Connecting to remote server 172.30.1.128 ...

(m1) $ grun all "ls /tmp/abc" |grep abc
/tmp/abc
/tmp/abc
/tmp/abc

gfetch <all|gpe|gse|gpp|kafka|rest|zk> <src_path> <target_path>

与gscp相反,gfetch的作用是将远程节点(可能是全部或者部分节点,其中也可能包含本地节点)的文件拷贝到本地节点上来。
鉴于来远程节点会有多个的情况,所以当拷贝到本地节点后,就要对这些文件进行重命名,每个文件后加上后缀“_[节点号]”,比如“abc”要重命名为“abc_m1”、“abc_m2”、“abc_m3”等等。
示例如下:

(m1):/tmp/xyz$ gfetch all /tmp/abc .

### Connecting to local  server 172.30.1.142 ...

### Connecting to remote server 172.30.1.154 ...

### Connecting to remote server 172.30.1.128 ...

(m1):/tmp/xyz$ ls -latr
total 8
drwxrwxrwt 15 root       root       4096 Nov 14 22:54 ..
-rw-rw-r--  1 tigergraph tigergraph    0 Nov 14 22:54 abc_m1
-rw-rw-r--  1 tigergraph tigergraph    0 Nov 14 22:54 abc_m2
-rw-rw-r--  1 tigergraph tigergraph    0 Nov 14 22:54 abc_m3

补充一下,还可以用gmyip命令打印当前机器的ip地址。