1. 程式人生 > 其它 >Apache Doris編譯部署

Apache Doris編譯部署

一、官網

編譯:http://doris.apache.org/master/zh-CN/installing/compilation.html

部署:http://doris.apache.org/master/zh-CN/installing/install-deploy.html

二、Docker

1 解除安裝舊版本

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker
-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine

2 安裝所需軟體包

注:yum-utils 提供了 yum-config-manager ,並且 device mapper 儲存驅動程式需要 device-mapper-persistent-data 和 lvm2

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3 配置源地址

$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4 安裝社群版引擎

$ sudo yum -y install docker-ce docker-ce-cli containerd.io

5 啟動Docker

$ sudo systemctl start docker

6 驗證docker

$ sudo docker run hello-world

7 檢視docker配置

$ sudo docker info

8 重啟docker

$ sudo systemctl restart docker

9 搜尋映象

$ docker search [image_name:image_tag]

10 獲取映象

$ docker pull [image_name:image_tag]

11 列出本地映象

$ docker images

12 刪除映象

$ sudo docker rmi [image_name:image_tag]

13 建立容器

$ sudo docker create -it [image_name:image_tag]  /bin/bash

14 啟動容器

$ sudo docker start [container_id]

15 新建並啟動容器

# 互動式啟動
$ sudo docker run -it [image_name:image_tag] /bin/bash

# 後臺啟動
$ sudo docker run -it -d [image_name:image_tag] /bin/bash

16 進入容器

$ sudo docker exec -it [image_name:image_tag] /bin/bash

17 停止容器

$ sudo docker stop [container_id]

18 刪除容器

# 刪除已停止的容器
$ sudo docker rm [container_id]
# 刪除執行的容器
$ sudo docker rm -f [container_id]

19 檢視容器

# 檢視啟動的容器
$ sudo docker ps

# 檢視所有的容器
$ sudo docker ps -a

三 配置npm

1 配置代理

npm config set proxy [your_proxy]
npm config set https-proxy [your_proxy]

2 配置源

npm config set registry https://registry.npm.taobao.org
npm config get registry

四 配置maven

mvn -v檢視maven目錄,修改setting.xml

1 配置代理

<proxy>
    <!--id 代理的名稱(隨便設)-->
    <id>optional</id>
    <!--true 表示生效-->
    <active>true</active>
    <!--協議-->
    <protocol>http</protocol>
    <!--上網使用者名稱及密碼,如果沒有,請註釋或者是刪除-->
    <username></username>
    <password></password>
    <!--上網使用ip及埠,即代理,這裡替換成相對應的ip和埠-->
    <host>[your_proxy_host]</host>
    <port>[your_proxy_port]</port>
    <!--填寫不用代理的地址,以豎線|分割多個地址,一般填寫本地Maven倉庫地址-->
    <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>

2 配置源

<mirror>  
    <id>nexus-aliyun</id>  
    <mirrorOf>central</mirrorOf>    
    <name>Nexus aliyun</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
</mirror>  
# 或開源中國maven映象
<mirror>  
  <id>nexus-osc</id>  
  <mirrorOf>*</mirrorOf>  
  <name>Nexus osc</name>  
  <url>http://maven.oschina.net/content/groups/public/</url>  
</mirror>

五 編譯

1 下載映象

docker pull apache/incubator-doris:build-env-1.2

2 下載原始碼

wget https://dist.apache.org/repos/dist/dev/incubator/doris/0.14/0.14.0-rc06/apache-doris-0.14.0-incubating-src.tar.gz

tar -zxvf
apache-doris-0.14.0-incubating-src.tar.gz

3 執行映象

docker run -it -v /[local]/.m2:/[docker]/.m2 -v /[local]/apache-doris-0.14.0-incubating-src/:/[docker]/apache-doris-0.14.0-incubating-src/ apache/incubator-doris:build-env-1.2

4 編譯fe\be

cd /{doris_home}/

sh build.sh

輸出目錄:{doris_home}/output

5 編譯broker

cd {doris_home}/fs_brokers/apache_hdfs_broker/

sh build.sh

輸出目錄:

{doris_home}/fs_brokers/apache_hdfs_broker/output

六、FE部署

1 拷貝fe部署檔案到指定節點

2 配置fe

(1)配置檔案:{doris_home}/fe/conf/fe.conf

(2)修改配置項

meta_dir = ${DORIS_HOME}/doris-meta

注:①meta_dir是元資料存放目錄,預設值為${DORIS_HOME}/doris-meta,需要手動建立該目錄。

  ②其它配置項可選,參考官網。

3 啟動fe

sh bin/start_fe.sh --daemon

注:FE程序啟動進入後臺執行。日誌預設存放在 log/ 目錄下。如啟動失敗,可以通過檢視 log/fe.log 或者 log/fe.out 檢視錯誤資訊。

4 fe高可用

4.1 使用mysql客戶端連線doris

# query_port 預設9030,對應fe/conf/fe.conf
mysql -h {fe_ip} -u root -P {query_port}

4.2 新增follower或observer

# 第一個節點自動為leader,edit_log_port預設9010
ALTER SYSTEM ADD FOLLOWER "follower_host:edit_log_port";

ALTER SYSTEM ADD OBSERVER "observer_host:edit_log_port";

4.3 配置並啟動follower或observer

./bin/start_fe.sh --helper leader_host:edit_log_port --daemon

注:①Follower 和 Observer 的配置同 Leader 的配置。

  ②第一次啟動時,需執行以下命令--helpler leader_host:edit_log_port,即,--helper 引數僅在 follower 和 observer 第一次啟動時才需要

5 檢視fe狀態

show proc '/frontends'\G;

6 刪除fe

ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";

7 FE 擴容/縮容注意事項

7.1 擴容

(1)Follower FE(包括 Leader)的數量必須為奇數,建議最多部署 3 個組成高可用(HA)模式即可。

(2)當 FE 處於高可用部署時(1個 Leader,2個 Follower),我們建議通過增加 Observer FE 來擴充套件 FE 的讀服務能力。當然也可以繼續增加 Follower FE,但幾乎是不必要的。

(3)通常一個 FE 節點可以應對 10-20 臺 BE 節點。建議總的 FE 節點數量在 10 個以下。而通常 3 個即可滿足絕大部分需求。

(4)helper 不能指向 FE 自身,必須指向一個或多個已存在並且正常執行中的 Master/Follower FE。

7.2 縮容

(1)刪除 Follower FE 時,確保最終剩餘的 Follower(包括 Leader)節點為奇數。

8 停止FE

sh bin/stop_fe.sh

七 部署BE

7.1 拷貝be部署檔案到指定節點

7.2 配置be

7.2.1 配置檔案:be/conf/be.conf。

7.2.2 修改配置項:

# data root path, separate by ';'
# you can specify the storage medium of each root path, HDD or SSD
# you can add capacity limit at the end of each root path, seperate by ','
# eg:
# storage_root_path = /home/disk1/doris.HDD,50;/home/disk2/doris.SSD,1;/home/disk2/doris
# /home/disk1/doris.HDD, capacity limit is 50GB, HDD;
# /home/disk2/doris.SSD, capacity limit is 1GB, SSD;
# /home/disk2/doris, capacity limit is disk capacity, HDD(default)

storage_root_path:資料存放目錄。預設在be/storage下,需要手動建立該目錄。

②多個路徑之間使用英文狀態的分號;分隔(最後一個目錄後不要加;)。

③可以通過路徑區別儲存目錄的介質,HDD或SSD。

④可以新增容量限制在每個路徑的末尾,通過英文狀態逗號,隔開。

⑤示例1如下:storage_root_path=/home/disk1/doris.HDD,50;/home/disk2/doris.SSD,10;/home/disk2/doris

  注意:如果是SSD磁碟要在目錄後面加上.SSD,HDD磁碟在目錄後面加.HDD

  說明

    •   /home/disk1/doris.HDD, 50,表示儲存限制為50GB, HDD;
    •   /home/disk2/doris.SSD 10, 儲存限制為10GB,SSD;
    •   /home/disk2/doris,儲存限制為磁碟最大容量,預設為HDD

⑥示例2如下:storage_root_path=/home/disk1/doris,medium:hdd,capacity:50;/home/disk2/doris,medium:ssd,capacity:50

  注意:不論HHD磁碟目錄還是SSD磁碟目錄,都無需新增字尾,storage_root_path引數裡指定medium即可 

  說明

    •   /home/disk1/doris,medium:hdd,capacity:10,表示儲存限制為10GB, HHD;
    •   /home/disk2/doris,medium:ssd,capacity:50,表示儲存限制為50GB, SSD;

7.2.3在 FE 中新增所有 BE 節點

# heartbeat_service_port預設9050,對應be/conf/be.conf
ALTER SYSTEM ADD BACKEND "be_host:be_heartbeat_service_port";

7.3 啟動be

sh bin/start_be.sh --daemon

注:日誌預設存放在 be/log/ 目錄下。如啟動失敗,可以通過檢視 be/log/be.log 或者 be/log/be.out 檢視錯誤資訊。

7.4 檢視be狀態

SHOW PROC '/backends'\G;

7.5 be擴容

ALTER SYSTEM DROP BACKEND "be_host:be_heartbeat_service_port";

BE 擴容注意事項:

①BE 擴容後,Doris 會自動根據負載情況,進行資料均衡,期間不影響使用。

7.6 be縮容

ALTER SYSTEM DROP BACKEND "be_host:be_heartbeat_service_port";

# 或者

ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";

注意:DROP BACKEND 會直接刪除該 BE,並且其上的資料將不能再恢復!!!所以強烈不推薦使用 DROP BACKEND 這種方式刪除 BE 節點。使用DECOMMISSION語句時,會有對應的防誤操作提示。

7.7DECOMMISSION 命令說明

(1)該命令用於安全刪除 BE 節點。命令下發後,Doris 會嘗試將該 BE 上的資料向其他 BE 節點遷移,當所有資料都遷移完成後,Doris 會自動刪除該節點。

(2)該命令是一個非同步操作。執行後,可以通過SHOW PROC '/backends';看到該 BE 節點的 isDecommission 狀態為 true。表示該節點正在進行下線。

(3)該命令不一定執行成功。比如剩餘 BE 儲存空間不足以容納下線 BE 上的資料,或者剩餘機器數量不滿足最小副本數時,該命令都無法完成,並且 BE 會一直處於 isDecommission 為 true 的狀態。

(4)DECOMMISSION 的進度,可以通過SHOW PROC '/backends';中的 TabletNum 檢視,如果正在進行,TabletNum 將不斷減少。

(5)該操作可以通過CANCEL DEMMISSION命令取消。取消後,該 BE 上的資料將維持當前剩餘的資料量。後續 Doris 重新進行負載均衡

CANCEL DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";


八 部署Broker(可選)

8.1 拷貝broker檔案到指定節點

fs_brokers/apache_hdfs_broker/output/apache_hdfs_broker

8.2 配置broker

8.2.1 配置檔案

apache_hdfs_broker/conf/apache_hdfs_broker.conf

8.2.2 配置項

# the thrift rpc port
broker_ipc_port=8000

注:可使用預設值8000,不做修改

8.3 啟動broker

sh bin/start_broker.sh --daemon

8.4 新增broker

ALTER SYSTEM ADD BROKER broker_name "broker1_host:broker1_ipc_port","broker2_host:broker2_ipc_port",...;

8.5 檢視broker狀態

SHOW PROC "/brokers"\G;

8.6 broker擴容

# ipc_port預設8000,對應/apache_hdfs_broker/conf/apache_hdfs_broker.conf
ALTER SYSTEM ADD BROKER broker_name "broker_host:broker_ipc_port";

8.7 broker縮容

ALTER SYSTEM DROP BROKER broker_name "broker_host:broker_ipc_port";

ALTER SYSTEM DROP ALL BROKER broker_name;

九、Apache Doris簡單使用

9.1 新建資料庫

CREATE DATABASE `test`;

9.2 切換資料庫

use `test`;

9.3 新建資料表

CREATE TABLE `student` (
  `id` int(11) NULL COMMENT "",
  `name` varchar(50) NULL COMMENT "",
  `age` int(11) NULL COMMENT "",
  `count` bigint(20) SUM NULL DEFAULT "0" COMMENT ""
) ENGINE=OLAP
AGGREGATE KEY(`id`, `name`, `age`)
COMMENT "OLAP"
DISTRIBUTED BY HASH(`id`) BUCKETS 10
PROPERTIES (
"replication_num" = "1",
"in_memory" = "false",
"storage_format" = "V2"
);

9.4 insert into插入資料

insert into student values(1,'stephen',18,2);

9.5 stream load插入資料

示例資料

3,stephen,18,33
6,lebron,28,44
4,stephen,18,33
5,stephen,18,33
1,stephen,18,33
2,lebron,28,44
curl --location-trusted -u root -T /app/student.csv -H "label:123" -H "column_separator:," http://{fe_host}:{fe_http_port}/api/test/student/_stream_load

9.6 查詢資料

 select * from student;

十 後記

1. 該文件詳細記錄了Apache Doris測試環境的編譯、部署、簡單使用,所有配置都使用官網預設配置。

2. 更多優化配置、高階使用請參考Apache Doris官網。

3. 如有用歡迎轉載,請註明轉載出處。