OpenMLDB作为分布式系统,模式多样、客户端丰盛,首次应用可能会遇到装置部署或者运行应用方面的问题。
本文将从老手应用的角度,为大家解说如何进行诊断调试,以及如何向OpenMLDB社区技术人员反馈疑难或提供清晰的应用信息。
创立 OpenMLDB 与连贯
首先,咱们倡议不相熟分布式多过程治理的老手应用 docker 创立 OpenMLDB,不便疾速上手。待相熟 OpenMLDB 各组件后,再尝试分布式部署。
docker 创立 OpenMLDB 可见疾速上手文档(见文末),请留神文档中有两个版本,单机版和集群版。请记住本人创立的版本,不要混合应用,以至错乱。
启动胜利的规范是能够应用 CLI 连贯上 OpenMLDB 服务端(即应用/work/openmldb/bin/openmldb
连贯 OpenMLDB,单机或集群均能够通过 CLI 连贯),并且执行 show components;
能够看到 OpenMLD B服务端组件的运行状况。
如果 CLI 无奈连贯 OpenMLDB,请先确认过程是否运行失常,能够通过 ps f|grep bin/openmldb
确认 nameserver和tabletserver 过程,集群版还须要通过 ps f | grep zoo.cfg
来确认 zk 服务,ps f | grep TaskManagerServer
来确认 taskmanager 过程。
如果所有服务过程都运行中,但 CLI 连贯服务端失败,请确认 CLI 运行的参数。如果仍有问题,请分割咱们并提供 CLI 的错误信息。
Note
如果咱们还须要 OpenMLDB 服务端的配置和日志,能够应用诊断工具获取,见下文。
执行 SQL
OpenMLDB 所有命令均为 SQL,如果 SQL 执行失败或交互有问题(不晓得命令是否执行胜利),请先确认 SQL 书写是否有误,命令并未执行,还是命令进入了执行阶段。
例如,上面提醒 Syntax error 的是SQL书写有误,请参考 sql reference 纠正错误。
127.0.0.1:7527/db> create table t1(c1 int;Error: Syntax error: Expected ")" or "," but got ";" [at 1:23]create table t1(c1 int; ^
如果是命令进入执行阶段,但执行失败或交互失败,须要明确以下几点:
- OpenMLDB 是单机还是集群?
- 执行模式是什么?CLI 运行命令时能够应用
show variable
获取,但留神单机版的执行模式没有意义。
咱们须要特地留神集群版的一些应用逻辑。
集群
离线
如果是集群离线命令,默认异步模式下,发送命令会失去 job id 的返回。可应用show job <id>
来查问 job 执行状况。
离线 job 如果是 SELECT(并不 INTO 保留后果),也不会将后果打印在客户端。须要从日志中取得后果,日志默认在/work/openmldb/taskmanager/bin/logs/jog_x.log
。
如果发现 job failed 或者 finished,但不合乎你的预期,请查问日志。日志默认在/work/openmldb/taskmanager/bin/logs/jog_x_error.log
(留神有 error 后缀),
日志地址由 taskmanager.properties 的 job.log.path
配置,如果你扭转了此配置项,须要到配置的目的地寻找日志。
Note
- 如果 taskmanager 是 yarn 模式,而不是 local 模式,
job_x_error.log
中的信息会较少,不会有 job 谬误的详细信息。须要通过job_x_error.log
中记录的 yarn app id,去 yarn 零碎中查问 job 的真正谬误起因。
在线
集群版在线模式下,咱们通常只举荐应用 DEPLOY
创立 deployment 和执行 deployment 做实时特色计算。在 CLI 或其余客户端中,间接在在线中进行 SELECT查问,称为“在线预览”。在线预览有诸多限度,详情请参考性能边界-集群版在线预览模式,请不要执行不反对的 SQL。
提供复现脚本
如果你通过自主诊断,无奈解决问题,请向咱们提供复现脚本。一个残缺的复现脚本,如下所示:
create database db;use db;-- create youer tablecreate table xx ();-- offline or onlineset @@execute_mode='';-- load data or online insert-- load data infile '' into table xx;-- insert into xx values (),();-- query / deploy ...
如果你的问题须要数据能力复现,请提供数据。如果是离线数据,离线无奈反对 insert,请提供 csv/parquet 数据文件。如果是在线数据,能够提供数据文件,也能够间接在脚本中进行 insert。
这样的数据脚本能够通过重定向符号,批量执行 sql 脚本中的命令。
/work/openmldb/bin/openmldb --host 127.0.0.1 --port 6527 < reproduce.sql/work/openmldb/bin/openmldb --zk_cluster=127.0.0.1:2181 --zk_root_path=/openmldb --role=sql_client < reproduce.sql
请确保在你本地能够应用复现脚本复现问题,再记录 issue 或发送给咱们。
!Caution
请留神离线 job 默认为异步。如果你须要离线导入再查问,请设置为同步模式,详情见配置离线命令同步执行。否则导入还未实现就进行查问,是无意义的。
提供配置与日志
如果你的问题无奈通过复现脚本复现,那么,就须要你提供客户端和服务端的配置与日志,以便咱们考察。
docker 或本地的集群(服务端所有过程都在本地),能够应用诊断工具疾速获取配置、日志等信息。
应用 init.sh/start-all.sh 脚本启动的 OpenMLDB 服务端,能够应用以下命令进行诊断,别离对应集群版和单机版。
openmldb_tool --env=onebox --dist_conf=cluster_dist.ymlopenmldb_tool --env=onebox --dist_conf=stadnalone_dist.yml
**cluster_dist.yml
和 stadnalone_dist.yml
,可在 docker 容器/work/diag
目录中找到,或将github目录中的yml文件复制下来应用。
如果是分布式的集群,须要配置 ssh 免密能力顺利应用诊断工具,参考文档诊断工具。
如果你的环境无奈做到,请手动获取配置与日志。
本期 · 相干材料
OpenMLDB 疾速上手文档
网址:http://openmldb.ai/docs/zh/ma...
理解更多
点击进入
点击进入
点击进入
Github 网址:https://github.com/4paradigm/...
官网网址:https://openmldb.ai/
微信交换群网址:http://qr61.cn/o9EEV6/qcGz53S