1 docker部署
1.1 安裝docker基礎環境
1.1.1 卸載舊版本(如果安裝過舊版本的話)
此處采用在線安裝的方式:
sudo yum remove docker docker-common docker-selinux docker-engine
1.1.2 安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
1.1.3 設置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
1.1.4 可以查看所有倉庫中所有docker版本,并選擇特定版本安裝
yum list docker-ce --showduplicates | sort -r
1.1.5 安裝docker
sudo yum install docker-ce #由于repo中默認只開啟stable倉庫,故這里安裝的是最新穩定版
sudo yum install docker-ce-18.03.1.ce #或者直接指定版本
1.1.6 啟動并加入開機啟動
sudo systemctl start docker
sudo systemctl enable docker
1.1.7 驗證安裝是否成功
docker version
有client和server兩部分表示docker安裝啟動都成功了
1.1.8 網絡需求
Doris 各個實例直接通過網絡進行通訊。以下表格展示了所有需要的端口(端口可根據實際情況修改)
實例名稱 | 端口名稱 | 默認端口 | 通訊方向 | 說明 |
---|---|---|---|---|
BE | be_port | 9060 | FE –> BE | BE 上 thrift server 的端口,用于接收來自 FE 的請求 |
BE | webserver_port | 8040 | BE <–> BE | BE 上的 http server 的端口 |
BE | heartbeat_service_port | 9050 | FE –> BE | BE 上心跳服務端口(thrift),用于接收來自 FE 的心跳 |
BE | brpc_port* | 8060 | FE<–>BE, BE <–> BE | BE 上的 brpc 端口,用于 BE 之間通訊 |
FE | http_port * | 8030 | FE <–> FE,用戶 | FE 上的 http server 端口 |
FE | rpc_port | 9020 | BE –> FE, FE <–> FE | FE 上的 thrift server 端口,每個fe的配置需要保持一致 |
FE | query_port | 9030 | 用戶 | FE 上的 mysql server 端口 |
FE | edit_log_port | 9010 | FE <–> FE | FE 上的 bdbje 之間通信用的端口 |
Broker | broker_ipc_port | 8000 | FE –> Broker, BE –> Broker | Broker 上的 thrift server,用于接收請求 |
注:
- 當部署多個 FE 實例時,要保證 FE 的 http_port 配置相同。
- 部署前請確保各個端口在應有方向上的訪問權限。
1.2 部署步驟
1.2.1 配置主機hosts(可選)
我配置了四個節點
192.168.0.91 doris-node1
192.168.0.92 doris-node2
192.168.0.93 doris-node3
192.168.0.94 doris-node4
1.2.2 上傳doris鏡像和編譯好的doris源碼包到服務器,也可以直接在服務器進行編譯
doris鏡像:doris_v1.tar.gz
doris源碼包:Doris_源碼包.zip
注:doris官網會持續修復一些bug,所有需要定時關注并更新鏡像和源碼。
1.2.3 解壓源碼包
unzip Doris_源碼包.zip
1.2.4 導入鏡像
docker load -i doris_v1.tar.gz
注:這個鏡像可能有問題,如果不行可以直接下載官網的鏡像:
docker pull apachedoris/doris-dev:build-env-1.3
使用以上版本安裝會出現core dump的問題,這個系統的bug,目前已經修復,使用如下版本安裝沒有再出現類似問題:
0.14.0.tar.gz
docker pull apachedoris/doris-dev:build-env-1.2
1.2.5 逐個啟動容器
docker run -it --name doris-fe -v /home/Doris/incubator-doris/:/var/local/incubator-doris/ --network host --privileged doris:v1.1
或者
docker run -it --name doris-fe -v /home/incubator-doris/:/var/local/incubator-doris/ --network host --privileged apachedoris/doris-dev:build-env-1.3
doris-fe:容器名稱,fe和be的名稱可自行配置
/home/Doris/incubator-doris/:宿主機掛載目錄
/var/local/incubator-doris/:容器對應目錄
注:必須使用 host 網絡模式以確保 FE 和 BE,以及 BE 之間的連通性
1.2.6 同步時間
先查看時區是否正確,如果是UTC需要修改為CST
mv /etc/localtime /etc/localtime.bak
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
1.2.7 修改FE配置文件
進入容器
docker exec -it 【容器名稱/ID】 /bin/bash
vi /var/local/incubator-doris/output/fe/conf/fe.conf
端口配置
http_port = 8130(端口沖突,將默認8030做了修改)
rpc_port = 9020
query_port = 9030
edit_log_port = 9110(端口沖突,將默認9010做了修改)
網絡配置
priority_networks = 192.168.0.0/16
docker 虛擬網卡的存在,同一個主機可能存在多個不同的 ip。當前 Doris 并不能自動識別可用 IP,必須通過 priority_networks 配置項來強制指定正確的 IP(BE同理)
存儲路徑(根據服務器實際情況進行配置)
meta_dir = ${DORIS_HOME}/doris-meta
注:此目錄需要手動創建
詳細配置參考:http://doris.apache.org/master/zh-CN/administrator-guide/config/fe_config.html
1.2.8 修改BE配置文件
vi /var/local/incubator-doris/output/be/conf/be.conf
端口配置
be_port = 9060
be_rpc_port = 9070
webserver_port = 8140(端口沖突,將默認8040做了修改)
heartbeat_service_port = 9050
brpc_port = 8060
網絡配置
priority_networks = 192.168.0.0/16
存儲路徑(根據服務器實際情況進行配置)
storage_root_path = /var/local/incubator-doris/output/be/data
注:此目錄需要手動創建
-
描述:BE數據存儲的目錄,多目錄之間用;分隔。可以通過路徑區別存儲目錄的介質,HDD或SSD。可以添加容量限制在每個路徑的末尾,通過,隔開。 eg:storage_root_path=/home/disk1/doris.HDD,50;/home/disk2/doris.SSD,1;/home/disk2/doris
1./home/disk1/doris.HDD, 存儲限制為50GB, HDD;
2./home/disk2/doris.SSD,存儲限制為1GB,SSD;
3./home/disk2/doris,存儲限制為磁盤容量,默認為HDD
默認值:${DORIS_HOME}
實際上并不會去檢查使用的是什么存儲介質
詳細配置參考:http://doris.apache.org/master/zh-CN/administrator-guide/config/be_config.html
1.2.9 啟動FE
sh bin/start_fe.sh --daemon
daemon是后臺啟動的意思
通過mysql客戶端連接FE,mysql -h FE_HOST -P9030 -uroot
查看FE狀態
SHOW PROC '/frontends';
單節點 FE 是最基本的一種部署方式。一個完整的 Doris 集群,至少需要一個 FE 節點。當只有一個 FE 節點時,這個節點的類型為 Follower,角色為 Master。
如果是集群需要添加FE,添加 FE 流程在https://github.com/apache/incubator-doris/wiki/Doris-Deploy-%26-Upgrade有詳細介紹,不再贅述。
通過 ALTER SYSTEM DROP FOLLOWER/OBSERVER
命令即可刪除對應類型的 FE。
逐一添加BE節點
ALTER SYSTEM ADD BACKEND "192.168.0.91:9050";
刪除節點使用DROPP
查看FE配置: http://192.168.0.92:8130/variable
1.2.10 啟動BE
sh bin/start_be.sh --daemon
查看BE狀態
SHOW PROC '/backends';
查看BE配置: http://192.168.0.192:8140/variable
2 問題記錄
2.1 BE啟動失敗
2.1.1 服務資源不足
最開始在部署有CDH平臺的服務器上面部署Doris,服務器的cpu和內存資源都不夠導致BE經常掛掉,換了一臺新的服務器部署之后則可以正常啟動運行了。
2.1.2 存儲目錄沒有手動創建
如果存儲目錄沒有手動創建也會導致啟動失敗
2.1.3 修改最大文件句柄數(可選)
如果出現打開文件限制導致啟動失敗,可以修改最大文件句柄數
echo "* soft nofile 204800" >> /etc/security/limits.conf
echo "* hard nofile 204800" >> /etc/security/limits.conf
echo "* soft nproc 204800" >> /etc/security/limits.conf
echo "* hard nproc 204800 " >> /etc/security/limits.conf
echo fs.file-max = 6553560 >> /etc/sysctl.conf
查看
cat /etc/security/limits.conf
cat /etc/sysctl.conf
3 數據導入
3.1 Stream load
用戶通過 HTTP 協議提交請求并攜帶原始數據創建導入。主要用于快速將本地文件或數據流中的數據導入到 Doris。導入命令同步返回導入結果。
注:分隔符根據實際情況修改,文本的內容不要帶單引號或者雙引號,doris會當成字符串和數據直接拼接在一起。比如mysql導出的csv或者txt文件需要全局替換去引號(數據量大的建議在導出的時候就設置去掉引號)。