blob: a30333e0585f1eea1fc8ed09aa970b23b59b571f [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[357],{920:function(a,s,t){"use strict";t.r(s);var e=t(68),n=Object(e.a)({},(function(){var a=this,s=a.$createElement,t=a._self._c||s;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"工具介绍"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#工具介绍"}},[a._v("#")]),a._v(" 工具介绍")]),a._v(" "),t("p",[a._v("IoTDB集群版为您提供了NodeTool Shell工具用于监控指定集群的工作状态,您可以通过运行多种指令获取集群各项状态。")]),a._v(" "),t("p",[a._v("下面具体介绍每个指令的使用方式及示例,其中$IOTDB_CLUSTER_HOME表示IoTDB分布式的安装目录所在路径。")]),a._v(" "),t("h1",{attrs:{id:"使用说明"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#使用说明"}},[a._v("#")]),a._v(" 使用说明")]),a._v(" "),t("h2",{attrs:{id:"运行方式"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#运行方式"}},[a._v("#")]),a._v(" 运行方式")]),a._v(" "),t("p",[a._v("NodeTool Shell工具启动脚本位于$IOTDB_CLUSTER_HOME/sbin文件夹下,启动时可以指定集群运行的IP和PORT。")]),a._v(" "),t("p",[a._v("其中IP为您期望连接的节点的IP,PORT为IoTDB集群启动时指定的JMX服务端口号,分别默认为127.0.0.1和31999。")]),a._v(" "),t("p",[a._v("如果您需要监控远程集群或修改了JMX服务端口号,请通过启动参数-h和-p项来使用实际的IP和PORT。")]),a._v(" "),t("h2",{attrs:{id:"指令说明"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#指令说明"}},[a._v("#")]),a._v(" 指令说明")]),a._v(" "),t("p",[a._v("在分布式系统中,一个节点由节点IP,元数据端口,数据端口和服务端口来标识,即Node<IP:METAPORT:DATAPORT:CLUSTERPORT>。")]),a._v(" "),t("h3",{attrs:{id:"展示节点环"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#展示节点环"}},[a._v("#")]),a._v(" 展示节点环")]),a._v(" "),t("p",[a._v("IoTDB集群版采用一致性哈希的方式实现数据分布,用户可以通过打印哈希环信息了解每个节点在环中的位置。")]),a._v(" "),t("p",[a._v("1.输入")]),a._v(" "),t("blockquote",[t("p",[a._v("打印哈希环的指令为ring")])]),a._v(" "),t("p",[a._v("2.输出")]),a._v(" "),t("blockquote",[t("p",[a._v("输出为多行字符串,每行字符串为一个键值对,其中键表示节点标识,值表示节点(IP:METAPORT:DATAPORT:CLUSTERPORT),格式为<key -> value>。")])]),a._v(" "),t("p",[a._v("3.示例")]),a._v(" "),t("blockquote",[t("p",[a._v("假设当前集群运行在127.0.0.1:9003:40010:55560, 127.0.0.1:9005:40012:55561和127.0.0.1:9007:40014:55562三个节点上。\n不同系统的输入指令示例如下:")])]),a._v(" "),t("p",[a._v("Linux系统与MacOS系统:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Shell > ./sbin/nodetool.sh -h 127.0.0.1 -p 31999 ring\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("p",[a._v("Windows系统:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Shell > .\\sbin\\nodetool.bat -h 127.0.0.1 -p 31999 ring\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("p",[a._v("回车后即可执行指令。示例指令的输出如下:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Node Identifier Node \n330411070 -> 127.0.0.1:9003:40010:55560 \n330454032 -> 127.0.0.1:9005:40012:55561\n330496472 -> 127.0.0.1:9007:40014:55562\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br"),t("span",{staticClass:"line-number"},[a._v("2")]),t("br"),t("span",{staticClass:"line-number"},[a._v("3")]),t("br"),t("span",{staticClass:"line-number"},[a._v("4")]),t("br")])]),t("p",[a._v("上述输出表示当前集群共有3个节点,按照节点标识从小到大输出结果。")]),a._v(" "),t("h3",{attrs:{id:"查询数据分区和元数据分区"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#查询数据分区和元数据分区"}},[a._v("#")]),a._v(" 查询数据分区和元数据分区")]),a._v(" "),t("p",[a._v("IoTDB集群版的时间序列元数据按照存储组分给多个数据组,其中存储组和数据组为多对一的关系,\n即同一个存储组的时间序列元数据只存在于同一个数据组,一个数据组可能包含多个存储组的时间序列元数据;")]),a._v(" "),t("p",[a._v("数据按照存储组和其时间戳分给不同数据组,时间分区粒度默认为一天。")]),a._v(" "),t("p",[a._v("数据组由多个节点组成,节点数量为副本数,保证数据高可用,其中某一个节点担任Leader的角色。")]),a._v(" "),t("p",[a._v("通过该指令,用户可以获知某个路径下的元数据或数据具体存储在哪些节点下。")]),a._v(" "),t("p",[a._v("1.输入")]),a._v(" "),t("blockquote",[t("p",[a._v("查询数据分区信息的指令为partition,参数具体说明如下:")])]),a._v(" "),t("table",[t("thead",[t("tr",[t("th",[a._v("参数名")]),a._v(" "),t("th",[a._v("参数说明")]),a._v(" "),t("th",[a._v("示例")])])]),a._v(" "),t("tbody",[t("tr",[t("td",[a._v("-m")]),a._v(" "),t("td",[a._v("--metadata\t查询元数据分区,默认为查询数据分区")]),a._v(" "),t("td",[a._v("-m")])]),a._v(" "),t("tr",[t("td",[a._v("-path")]),a._v(" "),t("td",[a._v("--path \t必要参数,需要查询的路径,若该路径无对应的存储组,则查询失败")]),a._v(" "),t("td",[a._v("-path root.guangzhou.d1")])]),a._v(" "),t("tr",[t("td",[a._v("-st")]),a._v(" "),t("td",[a._v("--StartTime\t查询数据分区时使用,起始时间,默认为系统当前时间")]),a._v(" "),t("td",[a._v("-st 1576724778159")])]),a._v(" "),t("tr",[t("td",[a._v("-et")]),a._v(" "),t("td",[a._v("--EndTime\t查询数据分区时使用,终止时间,默认为系统当前时间。若终止时间小于起始时间,则终止时间默认为起始时间")]),a._v(" "),t("td",[a._v("-et 1576724778159")])])])]),a._v(" "),t("p",[a._v("2.输出")]),a._v(" "),t("blockquote",[t("p",[a._v("输出为多行字符串,每行字符串为一个键值对,其中键表示分区,值表示数据组,格式为<key -> value>。")])]),a._v(" "),t("p",[a._v("3.示例")]),a._v(" "),t("blockquote",[t("p",[a._v("假设当前集群运行在127.0.0.1:9003:40010:55560, 127.0.0.1:9005:40012:55561和127.0.0.1:9007:40014:55562三个节点上。\n副本数为2,共有3个存储组:{root.beijing、root.shanghai、root.guangzhou}。")])]),a._v(" "),t("ul",[t("li",[a._v("查询数据的分区(默认时间范围, 时间按天分区)")])]),a._v(" "),t("p",[a._v("不同系统的输入指令示例如下:")]),a._v(" "),t("p",[a._v("Linux系统与MacOS系统:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Shell > ./sbin/nodetool.sh -h 127.0.0.1 -p 31999 partition -path root.guangzhou.d1\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("p",[a._v("Windows系统:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Shell > .\\sbin\\nodetool.bat -h 127.0.0.1 -p 31999 partition -path root.guangzhou.d1\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("p",[a._v("回车后即可执行指令。示例指令的输出如下:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("DATA<root.guangzhou.d1, 1576723735188, 1576723735188>\t->\t[127.0.0.1:9003:40010:55560, 127.0.0.1:9005:40012:55561]\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("ul",[t("li",[a._v("查询数据的分区(指定时间范围, 时间按天分区)")])]),a._v(" "),t("p",[a._v("不同系统的输入指令示例如下:")]),a._v(" "),t("p",[a._v("Linux系统与MacOS系统:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Shell > ./sbin/nodetool.sh -h 127.0.0.1 -p 31999 partition -path root.guangzhou.d1 -st 1576624778159 -et 1576724778159\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("p",[a._v("Windows系统:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Shell > .\\sbin\\nodetool.bat -h 127.0.0.1 -p 31999 partition -path root.guangzhou.d1 -st 1576624778159 -et 1576724778159\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("p",[a._v("回车后即可执行指令。示例指令的输出如下:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("DATA<root.guangzhou.d1, 1576627200000, 1576713599999>\t->\t[127.0.0.1:9007:40014:55562, 127.0.0.1:9003:40010:55560] \nDATA<root.guangzhou.d1, 1576713600000, 1576724778159>\t->\t[127.0.0.1:9003:40010:55560, 127.0.0.1:9005:40012:55561] \nDATA<root.guangzhou.d1, 1576624778159, 1576627199999>\t->\t[127.0.0.1:9005:40012:55561, 127.0.0.1:9007:40014:55562]\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br"),t("span",{staticClass:"line-number"},[a._v("2")]),t("br"),t("span",{staticClass:"line-number"},[a._v("3")]),t("br")])]),t("ul",[t("li",[a._v("查询元数据分区")])]),a._v(" "),t("p",[a._v("不同系统的输入指令示例如下:")]),a._v(" "),t("p",[a._v("Linux系统与MacOS系统:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Shell > ./sbin/nodetool.sh -h 127.0.0.1 -p 31999 partition -path root.guangzhou.d1 -m\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("p",[a._v("Windows系统:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Shell > .\\sbin\\nodetool.bat -h 127.0.0.1 -p 31999 partition -path root.guangzhou.d1 -m\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("p",[a._v("回车后即可执行指令。示例指令的输出如下:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("DATA<root.guangzhou.d1, 1576723735188, 1576723735188>\t->\t[127.0.0.1:9003:40010:55560, 127.0.0.1:9005:40012:55561]\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("p",[a._v("上述输出表示root.t1.d1所属的数据分区包含2个节点,其中127.0.0.1:9003:40010:55560为header节点。")]),a._v(" "),t("h3",{attrs:{id:"查询节点管理的槽数"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#查询节点管理的槽数"}},[a._v("#")]),a._v(" 查询节点管理的槽数")]),a._v(" "),t("p",[a._v("IoTDB集群版将哈希环划分为固定数量(默认10000)个槽,并由集群管理组(元数据组)的leader将槽划分各个数据组。通过该指令,用户可以获知数据组管理的槽数。")]),a._v(" "),t("ol",[t("li",[a._v("输入")])]),a._v(" "),t("blockquote",[t("p",[a._v("查询节点对应数据分区信息的指令为host,参数具体说明如下:")])]),a._v(" "),t("table",[t("thead",[t("tr",[t("th",[a._v("参数名")]),a._v(" "),t("th",[a._v("参数说明")]),a._v(" "),t("th",[a._v("示例")])])]),a._v(" "),t("tbody",[t("tr",[t("td",[a._v("-a --all")]),a._v(" "),t("td",[a._v("查询所有数据组管理的槽数,默认为查询的节点所在的数据组")]),a._v(" "),t("td",[a._v("-a")])])])]),a._v(" "),t("p",[a._v("2.输出")]),a._v(" "),t("blockquote",[t("p",[a._v("输出为多行字符串,其中每行字符串为一个键值对,其中键表示数据组,值表示管理的槽数,格式为<key -> value>。")])]),a._v(" "),t("p",[a._v("3.示例")]),a._v(" "),t("blockquote",[t("p",[a._v("假设当前集群运行在127.0.0.1:9003:40010:55560, 127.0.0.1:9005:40012:55561和127.0.0.1:9007:40014:55562三个节点上, 副本数为2。")])]),a._v(" "),t("ul",[t("li",[a._v("默认节点所在分区")])]),a._v(" "),t("p",[a._v("不同系统的输入指令示例如下:")]),a._v(" "),t("p",[a._v("Linux系统与MacOS系统:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Shell > ./sbin/nodetool.sh -h 127.0.0.1 -p 31999 host\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("p",[a._v("Windows系统:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Shell > .\\sbin\\nodetool.bat -h 127.0.0.1 -p 31999 host\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("p",[a._v("回车后即可执行指令。示例指令的输出如下:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Raft group Slot Number\n(127.0.0.1:9003:40010:55560, 127.0.0.1:9005:40012:55561) -> 3333\n(127.0.0.1:9007:40014:55562, 127.0.0.1:9003:40010:55560) -> 3334\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br"),t("span",{staticClass:"line-number"},[a._v("2")]),t("br"),t("span",{staticClass:"line-number"},[a._v("3")]),t("br")])]),t("ul",[t("li",[a._v("所有分区")])]),a._v(" "),t("p",[a._v("不同系统的输入指令示例如下:")]),a._v(" "),t("p",[a._v("Linux系统与MacOS系统:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Shell > ./sbin/nodetool.sh -h 127.0.0.1 -p 31999 host -a\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("p",[a._v("Windows系统:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Shell > .\\sbin\\nodetool.bat -h 127.0.0.1 -p 31999 host -a\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("p",[a._v("回车后即可执行指令。示例指令的输出如下:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Raft group Slot Number\n(127.0.0.1:9003:40010:55560, 127.0.0.1:9005:40012:55561) -> 3333\n(127.0.0.1:9005:40012:55561, 127.0.0.1:9007:40014:55562) -> 3333\n(127.0.0.1:9007:40014:55562, 127.0.0.1:9003:40010:55560) -> 3334 \n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br"),t("span",{staticClass:"line-number"},[a._v("2")]),t("br"),t("span",{staticClass:"line-number"},[a._v("3")]),t("br"),t("span",{staticClass:"line-number"},[a._v("4")]),t("br")])]),t("h3",{attrs:{id:"查询节点状态"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#查询节点状态"}},[a._v("#")]),a._v(" 查询节点状态")]),a._v(" "),t("p",[a._v("IoTDB集群版包含多个节点,对于任意节点都存在因为网络、硬件等问题导致无法正常提供服务的可能。")]),a._v(" "),t("p",[a._v("通过该指令,用户即可获知集群中所有节点当前的状态。")]),a._v(" "),t("p",[a._v("1.输入")]),a._v(" "),t("blockquote",[t("p",[a._v("查询节点状态的指令为status,无其他参数。")])]),a._v(" "),t("p",[a._v("2.输出")]),a._v(" "),t("blockquote",[t("p",[a._v("输出为多行字符串,其中每行字符串为一个键值对,其中键表示节点(IP:METAPORT:DATAPORT),\n值表示该节点的状态,“on”为正常,“off”为不正常,格式为<key -> value>。")])]),a._v(" "),t("p",[a._v("3.示例")]),a._v(" "),t("blockquote",[t("p",[a._v("假设当前集群运行在127.0.0.1:9003:40010:55560, 127.0.0.1:9005:40012:55561和127.0.0.1:9007:40014:55562三个节点上, 副本数为2。")])]),a._v(" "),t("p",[a._v("不同系统的输入指令示例如下:")]),a._v(" "),t("p",[a._v("Linux系统与MacOS系统:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Shell > ./sbin/nodetool.sh -h 127.0.0.1 -p 31999 status\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("p",[a._v("Windows系统:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Shell > .\\sbin\\nodetool.bat -h 127.0.0.1 -p 31999 status\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br")])]),t("p",[a._v("回车后即可执行指令。示例指令的输出如下:")]),a._v(" "),t("div",{staticClass:"language- line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("Node Status \n127.0.0.1:9003:40010:55560 -> on \n127.0.0.1:9005:40012:55561 -> off \n127.0.0.1:9007:40014:55562 -> on\n")])]),a._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[a._v("1")]),t("br"),t("span",{staticClass:"line-number"},[a._v("2")]),t("br"),t("span",{staticClass:"line-number"},[a._v("3")]),t("br"),t("span",{staticClass:"line-number"},[a._v("4")]),t("br")])]),t("p",[a._v("上述输出表示127.0.0.1:9003:40010:55560节点和127.0.0.1:9007:40014:55562节点状态正常,127.0.0.1:9005:40012:55561节点无法提供服务。")])])}),[],!1,null,null,null);s.default=n.exports}}]);