Docker编译Apache Doris

原创
08/05 14:15
阅读数 341

0、安装JDK11

# 下载 jdk-11.0.16.tar.gz

# 解压 
tar -zxvf jdk-11.0.16.tar.gz

# 配置环境变量
vi /etc/profile

# 文件最后一行后输出java路径,保存
export JAVA\_HOME=/usr/soft/jdk-11.0.16 
export PATH=$JAVA\_HOME/bin:$PATH

# 重新加载配置文件
source /etc/profile

# 测试 
java -version

1、下载 Docker 镜像

docker pull apache/doris:build-env-ldb-toolchain-latest

2、运行镜像

docker run -it apache/doris:build-env-ldb-toolchain-latest

建议挂载本地Doris源码目录,这样编译产出二进制文件存储在本地

docker run -it -v /home/soft/doris:/root/doris apache/doris:build-env-ldb-toolchain-latest

3、下载源码

本文基于apache-doris-1.1.1    源码Git仓库

进入容器后下载源码,若挂载本地源码,则忽略。

cd /root/doris

wget https://dist.apache.org/repos/dist/dev/doris/{version}/apache-doris-{version}-src.tar.gz 
or 
git clone https://github.com/apache/doris.git

4、编译 Doris

解压tar.gz文件

cd /root/doris 

tar -zxvf apache-doris-{version}-src.tar.gz

是否支持avx2指令集

cat /proc/cpuinfo | grep avx2

若不支持,则执行如下命令

USE_AVX2=0 sh build.sh

若支持,则执行如下命令

sh build.sh

...... 等待编译

5、拷贝至各个节点

编译完成后,产出文件在 output/ 目录

将编译好的包拷贝到各个节点

6、部署

退出容器,进入映射目录/home/soft/doris

新建目录

# doris-meta:元数据
# doris-storage:用户数据

mkdir doris-meta doris-storage

注意:

1. FE 的磁盘空间主要用于存储元数据,包括日志和 image。通常从几百 MB 到几个 GB 不等。

2. BE 的磁盘空间主要用于存放用户数据,总磁盘空间按用户总数据量 * 3(3 副本)计算,然后再预留额外 40% 的空间用作后台 compaction 以及一些中间数据的存放。一台机器上可以部署多个 BE 实例,但是只能部署一个 FE。如果需要 3 副本数据,那么至少需要 3 台机器各部署一个 BE 实例(而不是 1 台机器部署 3 个 BE 实例)。

3. 多个 FE 所在服务器的时钟必须保持一致(允许最多 5 秒的时钟偏差)

4. 所有部署节点关闭 Swap。

5. FE 角色分为 Follower 和 Observer,(Leader 为 Follower 组中选举出来的一种角色)。FE 节点数据至少为 1(1 个 Follower)。当部署 1 个 Follower 和 1 个 Observer 时,可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。

6. Follower 的数量必须为奇数,Observer 数量随意。

按照一台服务器:一个FE、一个BE开始部署,进入 output目录

注意:

1. 设置文件最大打开数: ulinit -n 65500

2. 启动fe报错(log/fe.out):“java.io.IOException: the self host 192.168.0.158 does not equal to the host in ROLE file 172.17.0.1. You need to set 'priority_networks' config in fe.conf to match the host 172.17.0.1”,修改 doris-meta/ROLE中172.17.0.1为192.168.0.158

6.1 部署FE节点

修改 fe.conf

vi fe.conf

多网卡需要配置网段

meta_dir:元数据存储目录

执行启动脚本

# 对于leader节点

sh fe/bin/start_fe.sh --daemon

# 对于其他fe节点,执行 (--helper:指定leader ip)

sh fe/bin/start_fe.sh --helper leader_ip:9010 --daemon

启动成功

tail -f fe/log/fe.log

6.2 部署BE节点

修改 be.conf

vi be.conf

多网卡需要配置网段

storage_root_path:用户数据存储目录

30:存储数据大小限制,单位GB

执行启动脚本

# 启动be节点

sh be/bin/start_be.sh --daemon

6.3 添加节点到集群

1. 使用 mysql 客户端连接 fe 节点

mysql -h 192.168.0.158 -P 9030 -uroot

# 修改密码

mysql> SET PASSWORD FOR 'root' = PASSWORD('1234.abcd');

2. 添加 be 节点

mysql> ALTER SYSTEM ADD BACKEND "192.168.0.158:9050"

3. 添加 fe 点(可选)

-- 添加observer节点

mysql> ALTER SYSTEM ADD OBSERVER "192.168.0.159:9010"

4. 查看节点状态

mysql> SHOW PROC '/frontends'; 
mysql> SHOW PROC '/backends';

6.4 HTTP访问

http://192.168.0.158:8030    (密码上面设置的数据库密码)

6.5 自打包Docker镜像

将FE、BE打包成Docker镜像,并推送到Docker Hub,方便大家直接使用,跳过漫长的编译。。。

Doris-FE

Doris-BE

6.6 实践测试

1. 运行doris-fe

docker run --name doris-fe -p 8030:8030 -p 9030:9030 -d -v /home/soft/doris/doris-meta:/doris-meta -v /home/soft/doris/log/doris-fe:/code/log jiangcs/doris-fe:11.111

2. 运行doris-be

docker run --name doris-be -p 8040:8040 -v /home/soft/doris/doris-storage:/doris-storage -v /home/soft/doris/log/doris-be:/code/log -d jiangcs/doris-be:11.111

确保两个容器运行正常后,查看容器IP:

doris-fe:172.17.0.2

doris-be:172.17.0.3

3. 测试服务是否正常

4. 添加BE至FE中

5. 查看数据库信息

6. 修改数据库root密码

7. 数据库工具连接

8. 访问WebUI

Doris Web UI

6.7 自荐

我的Gitee,欢迎来虐

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
1 评论
0 收藏
0
分享
返回顶部
顶部