一.編譯前準備
1.1 環(huán)境準備
主機配置:
IP | 主機名 | 部署 | |
---|---|---|---|
10.31.1.119 | hp5 | FE | FS_Broker |
10.31.1.120 | hp6 | BE | FS_Broker |
10.31.1.121 | hp7 | BE | FS_Broker,FE Observer |
10.31.1.122 | hp8 | BE | FS_Broker |
硬件配置:
每臺主機:CPU4核知押、內(nèi)存8G挖炬、硬盤150G
軟件版本:
名稱 | 版本 |
---|---|
操作系統(tǒng) | CentOS release 7.8 (Final) 64位 |
JDK | 1.11 |
yum install -y java-11-openjdk-devel.x86_64
ln -s /usr/lib/jvm/java-11-openjdk-11.0.13.0.8-1.el7_9.x86_64 /usr/lib/jvm/java11
vi /etc/profile
JAVA_HOME=/usr/lib/jvm/java11
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
source /etc/profile
1.2 安裝Docker
1.2.1 卸載舊版本
yum remove docker docker-common docker-selinux docker-engine
1.2.2 安裝需要的軟件包
yum install -y yum-utils device-mapper-persistent-data lvm2
1.2.3 設置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
1.2.4 查看docker版本
yum list docker-ce --showduplicates | sort -r
1.2.5 安裝docker
yum install docker-ce
yum install <FQPN> # 例如:yum install docker-ce-20.10.9
1.2.6 啟動并加入開機啟動
systemctl start docker
systemctl enable docker
1.2.7 驗證安裝是否成功
docker version
1.2.8 遷移docker
因為根目錄的空間不夠请梢,將docker遷移到/home目錄
systemctl stop dcoker
mkdir -p /home/docker
mv /var/lib/docker/* /home/docker/
mount --bind /home/docker/ /var/lib/docker
# 添加掛載命令至開機腳本
vi /etc/rc.local
mount --bind /home/docker/ /var/lib/docker
1.2.9 退出后重新進入docker
[root@hp7 /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4443aa0cb7b9 apache/incubator-doris:build-env-1.4.2 "/bin/bash" 44 seconds ago Exited (0) 36 seconds ago hardcore_chaum
8c022367ed79 apache/incubator-doris:build-env-1.4.2 "/bin/bash" 5 minutes ago Exited (127) 5 minutes ago lucid_jackson
07c7b65b7724 apache/incubator-doris:build-env-1.4.2 "/bin/bash" 6 minutes ago Exited (0) 6 minutes ago modest_hugle
5faefc1a7ce7 apache/incubator-doris:build-env-1.4.2 "/bin/bash" 4 hours ago Exited (0) 2 minutes ago infallible_boyd
1331eb39f288 apache/incubator-doris:build-env-1.4.2 "/bin/bash" 4 hours ago Exited (1) 4 hours ago dreamy_clarke
731942087dec apache/incubator-doris:build-env-1.4.2 "/bin/bash" 3 days ago Exited (0) 3 days ago sweet_wescoff
[root@hp7 /]#
[root@hp7 /]# docker start 5faefc1a7ce7
5faefc1a7ce7
[root@hp7 /]# docker attach 5faefc1a7ce7
[root@5faefc1a7ce7 ~]#
[root@5faefc1a7ce7 ~]# ll
total 8
-rw-------. 1 root root 3416 Nov 13 2020 anaconda-ks.cfg
drwxr-xr-x. 22 root root 4096 Dec 6 11:08 incubator-doris
drwxr-xr-x. 2 root root 6 Dec 6 09:54 incubator-doris-DORIS-x.x.x-release
[root@5faefc1a7ce7 ~]#
二. 編譯
2.1 下載 Docker 鏡像
下載鏡像
docker pull apache/incubator-doris:build-env-1.4.2
檢查鏡像
docker images
2.2 運行鏡像
運行鏡像
docker run -it apache/incubator-doris:build-env-1.4.2
建議以掛載本地 Doris 源碼目錄的方式運行鏡像,這樣編譯的產(chǎn)出二進制文件會存儲在宿主機中皿伺,不會因為鏡像退出而消失寝贡。
同時悼吱,建議同時將鏡像中 maven 的 .m2 目錄掛載到宿主機目錄沸停,以防止每次啟動鏡像編譯時,重復下載 maven 的依賴庫疾宏。
docker run -it -v /root/.m2 -v /root/incubator-doris-DORIS-x.x.x-release/ apache/incubator-doris:build-env-1.4.2
2.3 下載源碼
啟動鏡像后张足,你應該已經(jīng)處于容器內(nèi)≡志猓可以通過以下命令下載 Doris 源碼(已掛載本地源碼目錄則不用):
git clone https://github.com/apache/incubator-doris.git
2.4 編譯 Doris
cd /root/incubator-doris
sh build.sh --clean --be --fe --ui
編譯完成后兢榨,產(chǎn)出文件在 output/ 目錄中
三. 安裝部署
3.1 安裝FE
3.1.1 拷貝FE部署文件
拷貝 FE 部署文件到hp5
scp -r ./fe root@10.31.1.119:/home/doris/
3.1.2 配置 FE
配置文件為 conf/fe.conf
meta_dir是元數(shù)據(jù)存放位置。默認值為 ${DORIS_HOME}/doris-meta顺饮,我看已經(jīng)創(chuàng)建好了目錄吵聪。
JAVA_OPTS 默認 java 最大堆內(nèi)存為 4GB,可以根據(jù)真實環(huán)境進行調(diào)整。
priority_networks=10.31.1.0/24 如果主機有多個IP兼雄,doris沒辦法知道具體該綁定哪個IP吟逝,此時需要進行指定。
3.1.3 啟動FE
sh bin/start_fe.sh --daemon
FE進程啟動進入后臺執(zhí)行赦肋。日志默認存放在 log/ 目錄下块攒。如啟動失敗励稳,可以通過查看 log/fe.log 或者 log/fe.out 查看錯誤信息。
3.2 安裝BE
3.2.1 拷貝BE安裝文件
scp -r ./be root@10.31.1.120:/home/doris/
scp -r ./be root@10.31.1.121:/home/doris/
scp -r ./be root@10.31.1.122:/home/doris/
以下步驟 hp6囱井、hp7驹尼、hp8三個節(jié)點BE節(jié)點均需要執(zhí)行:
3.2.2 修改所有 BE 的配置
修改 be/conf/be.conf
- 主要是配置 storage_root_path:數(shù)據(jù)存放目錄。默認在be/storage下庞呕,需要手動創(chuàng)建該目錄新翎。多個路徑之間使用英文狀態(tài)的分號 ; 分隔(最后一個目錄后不要加 ;)∽×罚可以通過路徑區(qū)別存儲目錄的介質(zhì)地啰,HDD或SSD〗补洌可以添加容量限制在每個路徑的末尾亏吝,通過英文狀態(tài)逗號,隔開。
- priority_networks=10.31.1.0/24 如果主機有多個IP盏混,doris沒辦法知道具體該綁定哪個IP蔚鸥,此時需要進行指定。
3.2.3 修改文件句柄數(shù)據(jù)
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
-- 修改 /etc/sysctl.conf, 加入這個設置
echo fs.file-max = 6553560 >> /etc/sysctl.conf
ulimit -u 60000
source /etc/profile
3.2.4 在 FE 中添加所有 BE 節(jié)點
-- 其中 host 為 FE 所在節(jié)點 ip许赃;port 為 fe/conf/fe.conf 中的 query_port株茶;默認使用 root 賬戶,無密碼登錄图焰。
mysql -uroot -p -h10.31.1.119 -P9030
-- 其中 host 為 BE 所在節(jié)點 ip;port 為 be/conf/be.conf 中的 heartbeat_service_port蹦掐。
ALTER SYSTEM ADD BACKEND "10.31.1.120:9050";
3.2.5 啟動BE
sh bin/start_be.sh --daemon
查看 BE 運行情況技羔。如一切正常,isAlive 列應為 true卧抗。
最終三臺都成功
3.2.6 安裝fs_broker
編譯broker
Broker 以插件的形式藤滥,獨立于 Doris 部署。如果需要從第三方存儲系統(tǒng)導入數(shù)據(jù)社裆,需要部署相應的 Broker拙绊,默認提供了讀取 HDFS 和百度云 BOS 的 fs_broker。fs_broker 是無狀態(tài)的泳秀,建議每一個 FE 和 BE 節(jié)點都部署一個 Broker标沪。
cd /root/incubator-doris/fs_brokers/apache_hdfs_broker
sh build.sh
拷貝源碼
拷貝fs_broker 的 output 目錄下的相應 Broker 目錄到需要部署的所有節(jié)點上。建議和 BE 或者 FE 目錄保持同級嗜傅。
cd /root/incubator-doris/fs_brokers/apache_hdfs_broker/output
scp -r apache_hdfs_broker root@10.31.1.119:/home/doris/
scp -r apache_hdfs_broker root@10.31.1.120:/home/doris/
scp -r apache_hdfs_broker root@10.31.1.121:/home/doris/
scp -r apache_hdfs_broker root@10.31.1.122:/home/doris/
修改相應 Broker 配置
可沿用默認值
cd /home/doris/apache_hdfs_broker/conf
vi apache_hdfs_broker.conf
啟動 Broker
sh bin/start_broker.sh --daemon
添加 Broker
要讓 Doris 的 FE 和 BE 知道 Broker 在哪些節(jié)點上金句,通過 sql 命令添加 Broker 節(jié)點列表。
使用 mysql-client 連接啟動的 FE吕嘀,執(zhí)行以下命令:
-- 其中 host 為 Broker 所在節(jié)點 ip违寞;port 為 Broker 配置文件中的 broker_ipc_port贞瞒。
ALTER SYSTEM ADD BROKER broker_name "host1:port1","host2:port2",...;
ALTER SYSTEM ADD BROKER broker_name "10.31.1.119:8000","10.31.1.120:8000","10.31.1.121:8000","10.31.1.122:8000";
查看 Broker 狀態(tài)
SHOW PROC "/brokers";
3.2.7 增加FE Observer
FE 分為 Leader,F(xiàn)ollower 和 Observer 三種角色趁曼。 默認一個集群军浆,只能有一個 Leader,可以有多個 Follower 和 Observer挡闰。其中 Leader 和 Follower 組成一個 Paxos 選擇組乒融,如果 Leader 宕機,則剩下的 Follower 會自動選出新的 Leader尿这,保證寫入高可用簇抵。Observer 同步 Leader 的數(shù)據(jù),但是不參加選舉射众。如果只部署一個 FE碟摆,則 FE 默認就是 Leader。
第一個啟動的 FE 自動成為 Leader叨橱。在此基礎上典蜕,可以添加若干 Follower 和 Observer。
修改 10.31.1.121上fe的配置文件
主要修改priority_networks 這個參數(shù)
priority_networks = 10.31.1.0/24
添加 Observer
-- 其中 host 為 Observer 所在節(jié)點 ip罗洗,port 為其配置文件 fe.conf 中的 edit_log_port愉舔。
ALTER SYSTEM ADD OBSERVER "host:port";
ALTER SYSTEM ADD OBSERVER "10.31.1.121:9010";
查看Observer 運行狀態(tài)
SHOW PROC '/frontends';
FAQ:
1. BE連接FE出錯
這個是網(wǎng)絡的問題,具體排查日志伙菜,主機多IP的情況下绩鸣,需要在配置文件中進行指定,例如:
priority_networks=10.31.1.0/24
還有一個問題识樱,我的FE節(jié)點因為是測試機赠法,已經(jīng)安裝好了MySQL,結果我BE連接過去的時候淑倾,是之前安裝的測試庫馏鹤,安裝FE之前,要卸載掉主機上已安裝的MySQL服務娇哆。
2. BE安裝報錯 - File descriptor number is less than 60000.
BE報錯:
解決方案:
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
-- 修改 /etc/sysctl.conf, 加入這個設置
echo fs.file-max = 6553560 >> /etc/sysctl.conf
ulimit -u 60000
source /etc/profile
3. BE FE一些其它的報錯
安裝過程中湃累,因為配置文件等原因,出現(xiàn)了一些莫名奇妙的錯誤碍讨,此時可以把 $DORIS_HOME目錄下的 be or fe整個目錄全部刪除掉治力,然后從源重新進行拷貝,再進行配置即可勃黍。