OpenMLDB 新手寶典 開發者上手必讀
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 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.yml openmldb_tool --env=onebox --dist_conf=stadnalone_dist.yml
cluster_dist.yml
和
stadnalone_dist.yml
,可在 docker 容器
/work/diag
目錄中找到,或將github目錄中的yml檔案複製下來使用。
如果是分散式的叢集,需要配置 ssh 免密才能順利使用診斷工具,參考檔案診斷工具。
如果你的環境無法做到,請手動獲取配置與日誌。
本期 · 相關資料
OpenMLDB 快速上手檔案
網址:
瞭解更多
Github 網址:
微信交流群網址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026745/viewspace-2937338/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 匯乎:交易者必讀的7本經典書!新手小白建議收藏
- OpenMLDB SQL 開發除錯神器 - OpenMLDB SQL EmulatorSQL除錯
- 開發者進階寶典,HarmonyOS 職業認證全奉上
- DevOps 初學者寶典dev
- 窮查理寶典閱讀感受
- 【官方重磅釋出】Google AdMob新手入門寶典Go
- [譯] 新手開發者須知
- 十分鐘上手-搭建vue開發環境(新手教程)Vue開發環境
- 阿里雲開發者工具上手體驗阿里
- 給Android開發者Flutter上手指南AndroidFlutter
- Voice Agent 開發者必讀,2024 最前沿語音模型梳理模型
- OpenDevin出技術報告了,大模型Agent開發者必讀dev大模型
- Terraform 新手村指南,萌新必讀!ORM
- Python數學建模-01.新手必讀Python
- 高併發葵花寶典
- Mac 觸控板增強神器BetterTouchTool 上手指南,新手必備Mac
- 開發必備詞典:Mysql保留關鍵字MySql
- 開發者必備Linux命令Linux
- flutter開發之Dart[必讀篇]?FlutterDart
- 前端開發者如何用腦圖快速上手linux前端Linux
- 8天讓iOS開發者上手Flutter之三iOSFlutter
- 8天讓iOS開發者上手Flutter之二iOSFlutter
- 開發者必讀!常用的二維碼生成器 API 推薦API
- 開發者必讀:2022年移動應用趨勢洞察白皮書
- 前端開發者必備思維前端
- 7 個給新手 Java 開發者的提示Java
- 給新手 Java 開發者的 7 點提示Java
- 初學者必讀:如何使用 Nuxt 中介軟體簡化網站開發UX網站
- 【實用】iOS開發者後臺快速上手指南iOS
- 為什麼你的“開發速度”和“產品效能”,都比不過競品?丨開發者必讀
- Java面試寶典之開源框架!Java面試框架
- Android Camera 開發你該知道的祕密㊙️-新手入門必備Android
- Flutter開發者必備手冊 Flutter GoFlutterGo
- React開發者必備的技能清單React
- 開發者必備,熱門api介面大全API
- Java 開發者 必備的工具 和 框架Java框架
- 前端開發者務必知道的JavaScript技巧前端JavaScript
- Spring葵花寶典Spring