共计 2885 个字符,预计需要花费 8 分钟才能阅读完成。
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 table
create table xx ();
-- offline or online
set @@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.yml
openmldb_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