Mac使用docker安装Doris
一、编译源码
(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目录下
![](https://img2023.cnblogs.com/blog/2350829/202307/2350829-20230706160835093-306993725.png)
二、Docker镜像创建 -FE和BE
(1)准备资料
把编译好的fe和be拷贝到项目下docker目录中,从各自的output目录拷贝到docker目录下
下载linux版jdk1.8版本---jdk1.8.0_291,放入docker目录下
(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.2 3237bb924c1a
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.3 f05b9866555a
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.4 26318fd81365
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
docker exec -it 3237bb924c1a /bin/bash
(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 DECOMMISSION BACKEND "172.17.0.3: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