一、編譯源碼
(1)拉取編譯鏡像docker pull apache/incubator-doris:build-env-1.2
(2)Mac電腦上拉取源碼git clone https://github.com/apache/incubator-doris.git
切換到指定分支git fetch origin branch-0.12:branch-0.12
git checkout branch-0.12
(3)建議使用Docker掛載Mac電腦上的源碼編譯,這樣產出的二進制文件在宿主機上。同時將本地.m2目錄掛載到Docker,這樣Docker不用重新下載Maven依賴庫
編譯鏡像id e847e7ed9a3c
加速編譯 build.sh 中的 PARALLEL 參數調整為 4 根據編譯機子性能適當調整
(4)運行編譯Docker
docker run -it -v /Users/mac/.m2:/root/.m2 -v /Users/mac/JavaProject/incubator-doris:/root/incubator-doris apache/incubator-doris:build-env-1.2
(5)Docker里進入項目目錄執行編譯FE和BE
sh build.sh --fe --be --clean
(可選)編譯broker
cd fs_brokers/apache_hdfs_broker/ && sh build.sh
編譯成功后如下所示,文件在output目錄下
二、Docker鏡像創建 -FE和BE
(1)准備資料
把編譯好的fe和be拷貝到項目下docker目錄中,從各自的output目錄拷貝到docker目錄下
下載linux版jdk1.8版本---jdk1.8.0_291,放入docker目錄下
把webroot目錄拷貝到fe目錄下,前端靜態文件
(2)在項目的docker目錄下創建Docker FE鏡像,名稱Dockerfile_fe
構建Docker鏡像:docker build -t lenmom/doris:fe-0.9.0 -f Dockerfile_fe .
FROM centos:centos7.5.1804 RUN mkdir /home/palo/run/ -p # copy jdk and palo binary COPY jdk1.8.0_291/ /home/palo/run/jdk1.8.0_291/ COPY fe/ /home/palo/run/fe/ # set java home ENV JAVA_HOME /home/palo/run/jdk1.8.0_291/ # set fe port: http/thrift/mysql/bdbje EXPOSE 8030 9020 9030 9010 # fe log and meta-data #VOLUME ["/home/palo/run/fe/conf" i"/home/palo/run/fe/log" "/home/palo/run/fe/palo-meta"] WORKDIR /home/palo/run/fe/ #CMD ["/bin/sh","/home/palo/run/fe/bin/start_fe.sh"]
(3)在項目的docker目錄下創建Docker BE鏡像,名稱Dockerfile_be
構建Docker鏡像:docker build -t lenmom/doris:be-0.9.0 -f Dockerfile_be .
FROM centos:centos7.5.1804 #FROM ubuntu:18.04 RUN mkdir -p /home/palo/run/ RUN yum -y update \ && yum install -y binutils-devel \ && yum -y clean all \ && rm -rf /var/cache/yum # copy be COPY be/ /home/palo/run/be/ # set be port: thrift/rpc/http/heartbeat EXPOSE 9060 9070 8040 9050 # be log,conf and data #VOLUME ["/home/palo/run/be/conf", "/home/palo/run/be/log", "/home/palo/run/be/data/"] WORKDIR /home/palo/run/be/ RUN ldd lib/palo_be #CMD ["/bin/sh","/home/palo/run/be/bin/start_be.sh"]
三、創建Docker鏡像
(1)創建並運行三個BE容器
創建BE容器。
注:查看Docker容器地址方式docker inspect --format='{{.NetworkSettings.IPAddress}}' doris-be1,需要先運行容器
IP地址:172.17.0.4
docker run -it --name doris-be1 -p 9051:9050 -p 8041:8040 -p 9061:9060 -p 9071:9070 lenmom/doris:be-0.9.0
IP地址:172.17.0.5
docker run -it --name doris-be2 -p 9052:9050 -p 8042:8040 -p 9062:9060 -p 9072:9070 lenmom/doris:be-0.9.0
IP地址:172.17.0.6
docker run -it --name doris-be3 -p 9053:9050 -p 8043:8040 -p 9063:9060 -p 9073:9070 lenmom/doris:be-0.9.0
注:每個Docker容器需要修改信息
[1]創建目錄
創建 mkdir -p /home/palo/run/be/storage
[2]項目目錄下修改conf/be.conf
修改為容器IP地址/子網掩碼:priority_networks=容器IP/24
啟動BE:bin/start_be.sh --daemon
停止BE:bin/stop_be.sh --daemon
(2)創建並運行一個FE容器。
注:因為FE需要知道BE地址,所以在之后創建
注:查看Docker容器地址方式docker inspect --format='{{.NetworkSettings.IPAddress}}' doris-fe,需要先運行容器
docker run -it --name doris-fe -p 9030:9030 -p 8030:8030 -p 9010:9010 -p 9020:9020 --link doris-be1 --link doris-be2 --link doris-be3 lenmom/doris:fe-0.9.0
注:每個Docker容器需要修改信息
[1]創建目錄
創建
mkdir -p /opt/fe/doris-meta
創建
mkdir -p /home/palo/run/fe/log
[2]修改conf/fe.conf
修改為容器IP地址/子網掩碼:
priority_networks=容器IP/24
修改
meta_dir=
/opt/fe/doris-meta
開啟物化視圖支持 enable_materialized_view=true
[3] JAVA_OPTS 默認 java 最大堆內存為 4GB,建議生產環境調整至 8G 以上
啟動FE: bin/start_fe.sh --daemon
開啟Fe的Report:mysql執行 set is_report_success=true;
(3)(可選)鏡像導入導出
鏡像保存到本地
sudo docker save -o doris-fe-0.9.0-docker.img lenmom/doris:fe-0.9.0
導入本地鏡像
sudo docker load --input doris-be-0.9.0-docker.img
(4)安裝Mysql客戶端,連接測試用
FE容器更新yum yum update
yum install mysql
初始化mysql密碼
mysql -h 127.0.0.1 -P 9030 -uroot
SET PASSWORD FOR 'root' = PASSWORD('root');
(5)FE中添加刪除BE節點(mysql操作)
在FE中查看BE節點信息:SHOW PROC '/backends'
添加BE:
ALTER SYSTEM ADD BACKEND "172.17.0.2:9050";
ALTER SYSTEM ADD BACKEND "172.17.0.3:9050";
ALTER SYSTEM ADD BACKEND "172.17.0.4:9050";
刪除BE(不推薦):
ALTER SYSTEM DROP BACKEND "172.17.0.3:9050";
四、測試
(1)建數據庫 CREATE DATABASE test;
(2)建表
CREATE TABLE test.table_hash ( k1 TINYINT, k2 DECIMAL(10, 2) DEFAULT "10.5", v1 CHAR(10) REPLACE, v2 INT SUM ) ENGINE=olap AGGREGATE KEY(k1, k2) COMMENT "my first doris table" DISTRIBUTED BY HASH(k1) BUCKETS 32;
(3)查詢
select * from test.table_hash limit 1;
其它操作備注
本機拷貝內容到docker:docker cp /Users/mac/JavaProject/test fe:/opt/fe
