自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

StarRocks 開發(fā)環(huán)境搭建踩坑指北

開發(fā) 前端
如果我們網(wǎng)絡(luò)環(huán)境發(fā)生了變化,比如從家里的 Wi-Fi 切換到了公司的,需要手動刪除下 FE/meta 下的所有文件再次啟動,BE 則是需要重啟一下容器。

背景

最近這段時間在處理一個 StarRocks 的關(guān)于物化視圖優(yōu)化的一個問題,在此之前其實我也沒有接觸過 StarRocks 這類主要處理數(shù)據(jù)分析的數(shù)據(jù)庫,就更別提在這上面做優(yōu)化了。

在解決問題之前我先花了一兩天時間熟悉了一下 StarRocks 的一些概念和使用方法,然后又花了一些時間搭建環(huán)境然后復(fù)現(xiàn)了該問題。

之后便開始閱讀源碼,大概知道了相關(guān)代碼的執(zhí)行流程,但即便是反復(fù)閱讀了多次代碼也沒有找到具體出現(xiàn)問題的地方。

所以便考慮在本地 Debug 源碼,最終調(diào)試半天之后知道了問題所以,也做了相關(guān)修改,給社區(qū)提交了 PR,目前還在推進過程中。

環(huán)境搭建

這里比較麻煩的是如何在本地 debug 代碼。

圖片圖片

根據(jù)官方的架構(gòu)圖會發(fā)現(xiàn) StarRocks 主要分為兩個部分:

  • FE:也就是常說的前端部分,主要負責元數(shù)據(jù)管理和構(gòu)建執(zhí)行計劃。
  • BE:后端存儲部分,執(zhí)行查詢計劃并存儲數(shù)據(jù)。

其中 FE 是 Java 寫的,而存儲的 BE 則是 C++ 寫的,我這次需要修改的是 FE 前端的部分,所以本篇文章主要討論的是 FE 相關(guān)的內(nèi)容。

好在社區(qū)已經(jīng)有關(guān)于如何編譯和構(gòu)建源碼的教程,這里我列舉一些重點,F(xiàn)E 首先需要安裝以下一些工具:

  • Thrift
  • Protobuf
  • Python3
  • JDK8+
brew install alberttwong/thrift/thrift@0.13
$ thrift -version  
Thrift version 0.13.0

brew install protobuf

以上默認是在  Mac 平臺上安裝的流程,所以全程使用 brew 最方便了,如果是其他平臺也是同理,只要安裝好這些工具即可。

緊接著便是編譯 FE,我們需要先下載源碼,然后進入 FE 的目錄:

git clone https://github.com/StarRocks/starrocks.git
cd fe
mvn install -DskipTests

然后直接使用 maven 編譯安裝即可。

這里需要注意??,因為編譯過程中需要使用 Python3 來執(zhí)行一些構(gòu)建任務(wù),新版本的 Mac 都是內(nèi)置 Python3 的,但如果是老版本的 Mac 內(nèi)置的則是 Python2。

這時就需要我們將 Python3 的命令手動在構(gòu)建任務(wù)里指定一下:

圖片圖片

比如我這里的 Python3  命令為 python3。

我們需要在 fe/fe-core/pom.xml 目錄里修改下 Python 的命令名稱:

圖片圖片

修改之后再 mvn install 編譯一次,如果一切順利的話便會編譯成功。

搭建本地集群

啟動 FE

我的最終目的是可以在本地 IDEA 中啟動 FE 然后再配合啟動一個 BE,這樣就可以在 IDEA 中調(diào)試 FE 的源碼了。

在啟動 FE 之前還需要創(chuàng)建一些目錄:

cp -r conf fe/conf
cp -r bin fe/bin
cp -r webroot fe/webroot

cd fe  
mkdir log  
mkdir meta

主要就是要在 FE 的目錄下創(chuàng)建配置文件、執(zhí)行腳本、日志、元數(shù)據(jù)等目錄。

接著便可以打開 com.starrocks.StarRocksFE 類在 IDEA 中運行了,在啟動之前還需要配置一下環(huán)境變量:

# 修改為自己的目錄
export PID_DIR=/Users/smith/Code/starrocks/fe/bin
export STARROCKS_HOME=/Users/smith/Code/starrocks/fe
export LOG_DIR=/Users/smith/Code/starrocks/fe/log

同時需要配置下 fe.conf 中的 priority_networks 網(wǎng)絡(luò)配置:

priority_networks = 10.10.10.0/24

這個 IP 得是宿主機的 IP,后續(xù)我們使用 docker 啟動 BE 的時候也需要用到。

圖片圖片

如果啟動失敗,可以在日志目錄下查看日志:

2024-09-16 21:21:59.942+08:00 ERROR (main|1) [NodeMgr.getCheckedSelfHostPort():642] edit_log_port 9010 is already in use. will exit.

碰到這個異常:提示端口被占用,那可以嘗試關(guān)閉代理之后再試試。

啟動成功后我們便可以使用 MySQL 兼容的客戶端進行連接了,這里我使用的是 tableplus:

圖片圖片

然后我們使用以下 sql  可以查詢 fe 的節(jié)點狀態(tài):

SHOW PROC '/frontends';

圖片圖片

看到類似的輸出則代表啟動成功了。

啟動 BE

之后我們便可以使用 Docker 來啟動 BE 了,之所以用 docker 啟動,是因為 BE 是 C++ 編寫的,想要在 Mac 上運行比較麻煩,最好是得有一臺 Ubuntu22 的虛擬機。

如果我們不需要調(diào)試 BE 的話,只使用 docker 啟動是再合適不過了。

docker run -p 9060:9060 -p 8040:8040 -p 9050:9050 -p 8060:8060 -p 9070:9070 -itd --rm --name be -e "TZ=Asia/Shanghai" starrocks/be-ubuntu

我們需要將 FE 需要連接 BE 的端口暴露出來,啟動成功后該鏡像并不會直接啟動 BE,我們需要進入容器手動啟動。

docker exec -it be bash

在啟動之前我們依然需要修改下 be.conf 中的 priority_networks 配置:

圖片圖片

修改為和 fe.conf 中相同的配置。

之后使用以下命令啟動 be:

bin/start_be.sh --daemon

啟動日志我們可以在 logs 目錄中查看。

綁定 FE 和 BE

接下來還有最后一步就是將 FE 和 BE 綁定在一起。

我們在 fe 中執(zhí)行以下 sql:

ALTER SYSTEM ADD BACKEND "127.0.0.1:9050";

手動添加一個節(jié)點,之后再使用:

SHOW PROC '/backends';

可以查詢到 BE 的節(jié)點狀態(tài):

圖片圖片

如果出現(xiàn)以下結(jié)果代表連接成功,這樣我們就可以創(chuàng)建數(shù)據(jù)庫和表了。

總結(jié)

這部分內(nèi)容(本地 FE 聯(lián)結(jié) docker 里的 FE)官方文檔并沒有提及,也是我踩了不少坑、同時還咨詢了一些大佬才全部調(diào)試成功。

還有一點需要注意的事:如果我們網(wǎng)絡(luò)環(huán)境發(fā)生了變化,比如從家里的 Wi-Fi 切換到了公司的,需要手動刪除下 FE/meta 下的所有文件再次啟動,BE 則是需要重啟一下容器。

參考鏈接:

  • https://docs.starrocks.io/zh/docs/developers/development-environment/IDEA/
  • https://docs.starrocks.io/zh/docs/deployment/deploy_manually/#%E7%AC%AC%E5%9B%9B%E6%AD%A5%E6%90%AD%E5%BB%BA%E9%9B%86%E7%BE%A4

責任編輯:武曉燕 來源: crossoverJie
相關(guān)推薦

2025-02-26 12:06:07

2021-06-09 08:21:14

Webpack環(huán)境變量前端

2024-04-01 08:05:27

Go開發(fā)Java

2018-12-18 14:13:30

SDKAndroid開發(fā)

2015-09-07 10:15:53

移動端開發(fā)

2023-01-18 23:20:25

編程開發(fā)

2020-09-15 08:46:26

Kubernetes探針服務(wù)端

2013-07-23 06:11:44

Android開發(fā)學習Android開發(fā)環(huán)境Java

2024-03-26 15:19:36

鴻蒙應(yīng)用開發(fā)開發(fā)工具

2023-02-20 08:11:04

2017-05-05 08:12:51

Spark共享變量

2021-10-28 19:10:02

Go語言編碼

2022-06-28 10:50:21

ElectronHosts

2020-11-03 08:36:08

Hadoop

2025-04-09 09:31:29

2021-09-03 11:15:18

場景sql配置

2024-04-10 08:39:56

BigDecimal浮點數(shù)二進制

2009-07-03 16:56:37

JSP開發(fā)環(huán)境

2011-07-08 16:02:24

iphone

2011-05-26 10:33:26

Android開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號