Doris-Docker环境搭建

文章详细介绍了如何在Docker容器中搭建Doris环境,包括CentOS服务器上安装Docker的步骤,Docker环境的配置,以及DorisFE和BE节点的创建与测试。重点提到了Docker网络配置、MySQL的版本差异以及启动和检查Doris服务是否成功的关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Doris-Docker环境搭建

安装环境介绍

  • 服务器:腾讯云2核8G云服务器
  • OS:centos8.2
  • Docker:20.10.21
  • Doris:1.1.4
  • FE-Num:1
  • BE-Num:3
  • Mysql:8.0.26

需要注意的是,mysql8系列跟以前5系列配置过程略有不同

在初始化mysql之后需要在日志中找到mysql密码,具体参考mysql官方文档

参考链接:https://developer.aliyun.com/article/920530#slide-10

步骤

1. 安装Docker环境

  • Docker 要求 CentOS 系统的内核版本高于3.10 ,首先查看系统内核版本是否满足
uname -r
  • 使用 root 权限登录系统,确保 yum 包更新到最新
sudo yum update -y
  • 假如安装过旧版本,先卸载旧版本
sudo yum remove docker  docker-common docker-selinux docker-engine
  • 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  • 设置yum源(加速yum下载速度)
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 查看所有仓库中所有docker版本,并选择特定版本安装,一般可直接安装最新版
yum list docker-ce --showduplicates | sort -r
  • 安装docker
    • 安装最新稳定版本
sudo yum install docker-ce -y  #安装的是最新稳定版本,因为repo中默认只开启stable仓库
    • 安装指定版本
sudo yum install <FQPN> -y
# 例如:
sudo yum install docker-ce-20.10.11.ce -y
  • 启动并加入开机启动
sudo systemctl start docker #启动docker
sudo systemctl enable docker #加入开机自启动
  • 查看Version,验证是否安装成功
docker -version
  • 若出现Client和Server两部分内容,则证明安装成功(无需在意Experimental参数异常)

    此参数为实验特性是否开启

    具体开启方法参考此链接(与本次议题无关):https://www.kancloud.cn/docker_practice/docker_practice/2002046

[root@master ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.7
 Git commit:        baeda1f
 Built:             Tue Oct 25 18:02:19 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.7
  Git commit:       3056208
  Built:            Tue Oct 25 18:00:24 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.9
  GitCommit:        1c90a442489720eec95342e1789ee8a5e1b9536f
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

2. 容器创建及测试

在官网获取最新编译好的文件:https://doris.apache.org/zh-CN/download

  • 解压BE/FE
# 解压be,fe同理
tar -zxvf apache-doris-be-1.1.4-bin-x86_64.tar.gz
  • 拉取Doris编译镜像做测试(本地)
# 拉取
docker pull apache/incubator-doris:build-env-ldb-toolchain-latest
  • 创建Doris-Docker的文件,包括元数据文件夹(本地)
mkdir -p /opt/docker/doris
  • 将编译好的FE和BE拷贝至Docker文件群内(本地)
cp -r Doris-fe/ /opt/docker/doris/
cp -r Doris-be/ /opt/docker/doris/be-01
cp -r Doris-be/ /opt/docker/doris/be-02
cp -r Doris-be/ /opt/docker/doris/be-03
  • 启动FE-Docker(本地)
docker run -it -p 8030:8030 -p 9030:9030 -d --name=doris-fe -v /opt/docker/doris/fe:/opt/doris/fe -v /opt/docker/doris/doris-meta:/opt/doris/doris-meta apache/incubator-doris:build-env-ldb-toolchain-latest
  • 进入FE-Docker(本地)以及安装组件(FE-Docker)
# 进入fe-docker
docker exec -ti doris-fe /bin/bash
# 在FE-Docker中安装net-tools用于查看IP
yum install net-tools -y
  • 修改FE配置(FE-Docker)
# 查看fe-docker的IPv4地址
ifconfig
# 修改配置文件
vim /opt/doris/fe/conf/fe.conf
# 取消priority_networks的注解,并根据Docker的网段进行配置
priority_networks = 172.17.0.0/16 #这里要根据你Docker的IP确定
  • 切换Docker-JDK版本(FE-Docker)
# 切换Java版本为JDK1.8,该镜像默认为JDK11
alternatives --set java java-1.8.0-openjdk.x86_64
alternatives --set javac java-1.8.0-openjdk.x86_64
export JAVA_HOME=/usr/lib/jvm/java-1.8.0
# 校验是否切换版本成功
java -version
  • 配置FE-Docker的环境变量(FE-Docker)
# 配置环境变量
vim /etc/profile.d/doris.sh
export DORIS_HOME=/opt/doris/fe/
export PATH=$PATH:$DORIS_HOME/bin
# 保存并source
source /etc/profile.d/doris.sh
  • 启动Doris-FE(FE-Docker)
start_fe.sh --daemon
  • 检查FE是否启动成功
  1. 检查是否启动成功,JPS命令下有没有PaloFe进程
  2. FE 进程启动后,会首先加载元数据,根据 FE 角色的不同,在日志中会看到 transfer from UNKNOWN to MASTER/FOLLOWER/OBSERVER。最终会看到 thrift server started 日志,并且可以通过 mysql 客户端连接到 FE,则表示 FE 启动成功。
  3. 也可以通过如下连接查看是否启动成功:
    http://fe_host:fe_http_port/api/bootstrap
    如果返回:
    {"status":"OK","msg":"Success"}
    则表示启动成功,其余情况,则可能存在问题。
  4. 外网环境访问http://fe_host:fe_http_port 查看是否可以访问WebUI界面,登录账号默认为root/admin,密码为空,第一次登录WebUI界面会有较长时间加载时间
  5. ctrl + D 退出docker

注:如果在 fe.log 中查看不到启动失败的信息,也许在 fe.out 中可以看到。

  • 安装MySQL客户端(本地)
wget -c http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-5.7/mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
tar -xvf mysql-5.7.37-1.el7.x86_64.rpm-bundle.tar
rpm -ivh mysql-community-common-5.7.37-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.37-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.37-1.el7.x86_64.rpm
  • 连接FE并修改密码(本地)
mysql -h FE-Docer的IP -P 9030 -uroot
SET PASSWORD FOR 'root' = PASSWORD('your_password');
# 也可以创建新用户
CREATE USER 'test' IDENTIFIED BY 'test_passwd';
  • 后续链接时需要使用如下格式(本地)
mysql -h FE_HOST -P9030 -uusername -ppassword
  • 添加BE节点注册信息(本地)
ALTER SYSTEM ADD BACKEND "host:port";
# 其中 host 为 BE 所在节点 ip;port 为 be/conf/be.conf 中的 heartbeat_service_port,默认9050。
  • 启动BE-Docker(本地)
docker run -it -p 9061:9060 -d --name=doris-be-01 -v /opt/docker/doris/be-01:/opt/doris/be apache/incubator-doris:build-env-ldb-toolchain-latest
docker run -it -p 9062:9060 -d --name=doris-be-02 -v /opt/docker/doris/be-02:/opt/doris/be apache/incubator-doris:build-env-ldb-toolchain-latest
docker run -it -p 9063:9060 -d --name=doris-be-03 -v /opt/docker/doris/be-03:/opt/doris/be apache/incubator-doris:build-env-ldb-toolchain-latest
  • 进入BE-Docker(本地)以及安装组件(BE-Docker)
# 进入be-docker,以01为例
docker exec -ti doris-be-01 /bin/bash
# 安装net-tools用于查看IP
yum install net-tools -y
  • 修改BE配置(BE-Docker)
# 查看fe-docker的IPv4地址
ifconfig
# 修改配置文件
vim /opt/doris/be/conf/be.conf
# 取消priority_networks的注解,并根据Docker的网段进行配置
priority_networks = 172.17.0.0/16 #这里要根据你Docker的IP确定
  • 配置BE-Docker的环境变量(BE-Docker)
# 配置环境变量
vim /etc/profile.d/doris.sh
export DORIS_HOME=/opt/doris/be/
export PATH=$PATH:$DORIS_HOME/bin
# 保存并source
source /etc/profile.d/doris.sh
  • 启动Doris-BE(BE-Docker)
start_be.sh --daemon
  • 检查BE是否启动成功
  1. BE 进程启动后,如果之前有数据,则可能有数分钟不等的数据索引加载时间。
  2. 如果是 BE 的第一次启动,或者该 BE 尚未加入任何集群,则 BE 日志会定期滚动 waiting to receive first heartbeat from frontend 字样。表示 BE 还未通过 FE 的心跳收到 Master 的地址,正在被动等待。这种错误日志,在 FE 中 ADD BACKEND 并发送心跳后,就会消失。如果在接到心跳后,又重复出现 master client, get client from cache failed.host: , port: 0, code: 7 字样,说明 FE 成功连接了 BE,但 BE 无法主动连接 FE。可能需要检查 BE 到 FE 的 rpc_port 的连通性。
  3. 如果 BE 已经被加入集群,日志中应该每隔 5 秒滚动来自 FE 的心跳日志:get heartbeat, host: xx.xx.xx.xx, port: 9020, cluster id: xxxxxx,表示心跳正常。
  4. 其次,日志中应该每隔 10 秒滚动 finish report task success. return code: 0 的字样,表示 BE 向 FE 的通信正常。
  5. 同时,如果有数据查询,应该能看到不停滚动的日志,并且有 execute time is xxx 日志,表示 BE 启动成功,并且查询正常。
  6. 也可以通过如下连接查看是否启动成功:
    http://be_host:be_http_port/api/health
    如果返回:
    {"status": "OK","msg": "To Be Added"}
    则表示启动成功,其余情况,则可能存在问题。
    注:如果在 be.INFO 中查看不到启动失败的信息,也许在 be.out 中可以看到。
  • 测试连通性(本地)
# 登录FE-MySQL
mysql -h FE_HOST -P9030 -uusername -ppassword
# 执行命令查看BE运行情况。如一切正常,isAlive 列应为 true。
SHOW PROC '/backends';
  • 若连通性测试成功,则循环完成其他BE节点的部署即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值