1 docker部署
1.1 安装docker基础环境
1.1.1 卸载旧版本(如果安装过旧版本的话)
此处采用在线安装的方式:
sudo yum remove docker docker-common docker-selinux docker-engine
1.1.2 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
1.1.3 设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
1.1.4 可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
1.1.5 安装docker
sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版
sudo yum install docker-ce-18.03.1.ce #或者直接指定版本
1.1.6 启动并加入开机启动
sudo systemctl start docker
sudo systemctl enable docker
1.1.7 验证安装是否成功
docker version
有client和server两部分表示docker安装启动都成功了
1.1.8 网络需求
Doris 各个实例直接通过网络进行通讯。以下表格展示了所有需要的端口(端口可根据实际情况修改)
实例名称 | 端口名称 | 默认端口 | 通讯方向 | 说明 |
---|---|---|---|---|
BE | be_port | 9060 | FE –> BE | BE 上 thrift server 的端口,用于接收来自 FE 的请求 |
BE | webserver_port | 8040 | BE <–> BE | BE 上的 http server 的端口 |
BE | heartbeat_service_port | 9050 | FE –> BE | BE 上心跳服务端口(thrift),用于接收来自 FE 的心跳 |
BE | brpc_port* | 8060 | FE<–>BE, BE <–> BE | BE 上的 brpc 端口,用于 BE 之间通讯 |
FE | http_port * | 8030 | FE <–> FE,用户 | FE 上的 http server 端口 |
FE | rpc_port | 9020 | BE –> FE, FE <–> FE | FE 上的 thrift server 端口,每个fe的配置需要保持一致 |
FE | query_port | 9030 | 用户 | FE 上的 mysql server 端口 |
FE | edit_log_port | 9010 | FE <–> FE | FE 上的 bdbje 之间通信用的端口 |
Broker | broker_ipc_port | 8000 | FE –> Broker, BE –> Broker | Broker 上的 thrift server,用于接收请求 |
注:
- 当部署多个 FE 实例时,要保证 FE 的 http_port 配置相同。
- 部署前请确保各个端口在应有方向上的访问权限。
1.2 部署步骤
1.2.1 配置主机hosts(可选)
我配置了四个节点
192.168.0.91 doris-node1
192.168.0.92 doris-node2
192.168.0.93 doris-node3
192.168.0.94 doris-node4
1.2.2 上传doris镜像和编译好的doris源码包到服务器,也可以直接在服务器进行编译
doris镜像:doris_v1.tar.gz
doris源码包:Doris_源码包.zip
注:doris官网会持续修复一些bug,所有需要定时关注并更新镜像和源码。
1.2.3 解压源码包
unzip Doris_源码包.zip
1.2.4 导入镜像
docker load -i doris_v1.tar.gz
注:这个镜像可能有问题,如果不行可以直接下载官网的镜像:
docker pull apachedoris/doris-dev:build-env-1.3
使用以上版本安装会出现core dump的问题,这个系统的bug,目前已经修复,使用如下版本安装没有再出现类似问题:
0.14.0.tar.gz
docker pull apachedoris/doris-dev:build-env-1.2
1.2.5 逐个启动容器
docker run -it --name doris-fe -v /home/Doris/incubator-doris/:/var/local/incubator-doris/ --network host --privileged doris:v1.1
或者
docker run -it --name doris-fe -v /home/incubator-doris/:/var/local/incubator-doris/ --network host --privileged apachedoris/doris-dev:build-env-1.3
doris-fe:容器名称,fe和be的名称可自行配置
/home/Doris/incubator-doris/:宿主机挂载目录
/var/local/incubator-doris/:容器对应目录
注:必须使用 host 网络模式以确保 FE 和 BE,以及 BE 之间的连通性
1.2.6 同步时间
先查看时区是否正确,如果是UTC需要修改为CST
mv /etc/localtime /etc/localtime.bak
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
1.2.7 修改FE配置文件
进入容器
docker exec -it 【容器名称/ID】 /bin/bash
vi /var/local/incubator-doris/output/fe/conf/fe.conf
端口配置
http_port = 8130(端口冲突,将默认8030做了修改)
rpc_port = 9020
query_port = 9030
edit_log_port = 9110(端口冲突,将默认9010做了修改)
网络配置
priority_networks = 192.168.0.0/16
docker 虚拟网卡的存在,同一个主机可能存在多个不同的 ip。当前 Doris 并不能自动识别可用 IP,必须通过 priority_networks 配置项来强制指定正确的 IP(BE同理)
存储路径(根据服务器实际情况进行配置)
meta_dir = ${DORIS_HOME}/doris-meta
注:此目录需要手动创建
详细配置参考:http://doris.apache.org/master/zh-CN/administrator-guide/config/fe_config.html
1.2.8 修改BE配置文件
vi /var/local/incubator-doris/output/be/conf/be.conf
端口配置
be_port = 9060
be_rpc_port = 9070
webserver_port = 8140(端口冲突,将默认8040做了修改)
heartbeat_service_port = 9050
brpc_port = 8060
网络配置
priority_networks = 192.168.0.0/16
存储路径(根据服务器实际情况进行配置)
storage_root_path = /var/local/incubator-doris/output/be/data
注:此目录需要手动创建
-
描述:BE数据存储的目录,多目录之间用;分隔。可以通过路径区别存储目录的介质,HDD或SSD。可以添加容量限制在每个路径的末尾,通过,隔开。 eg:storage_root_path=/home/disk1/doris.HDD,50;/home/disk2/doris.SSD,1;/home/disk2/doris
1./home/disk1/doris.HDD, 存储限制为50GB, HDD;
2./home/disk2/doris.SSD,存储限制为1GB,SSD;
3./home/disk2/doris,存储限制为磁盘容量,默认为HDD
默认值:${DORIS_HOME}
实际上并不会去检查使用的是什么存储介质
详细配置参考:http://doris.apache.org/master/zh-CN/administrator-guide/config/be_config.html
1.2.9 启动FE
sh bin/start_fe.sh --daemon
daemon是后台启动的意思
通过mysql客户端连接FE,mysql -h FE_HOST -P9030 -uroot
查看FE状态
SHOW PROC '/frontends';
单节点 FE 是最基本的一种部署方式。一个完整的 Doris 集群,至少需要一个 FE 节点。当只有一个 FE 节点时,这个节点的类型为 Follower,角色为 Master。
如果是集群需要添加FE,添加 FE 流程在https://github.com/apache/incubator-doris/wiki/Doris-Deploy-%26-Upgrade有详细介绍,不再赘述。
通过 ALTER SYSTEM DROP FOLLOWER/OBSERVER
命令即可删除对应类型的 FE。
逐一添加BE节点
ALTER SYSTEM ADD BACKEND "192.168.0.91:9050";
删除节点使用DROPP
查看FE配置: http://192.168.0.92:8130/variable
1.2.10 启动BE
sh bin/start_be.sh --daemon
查看BE状态
SHOW PROC '/backends';
查看BE配置: http://192.168.0.192:8140/variable
2 问题记录
2.1 BE启动失败
2.1.1 服务资源不足
最开始在部署有CDH平台的服务器上面部署Doris,服务器的cpu和内存资源都不够导致BE经常挂掉,换了一台新的服务器部署之后则可以正常启动运行了。
2.1.2 存储目录没有手动创建
如果存储目录没有手动创建也会导致启动失败
2.1.3 修改最大文件句柄数(可选)
如果出现打开文件限制导致启动失败,可以修改最大文件句柄数
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
echo fs.file-max = 6553560 >> /etc/sysctl.conf
查看
cat /etc/security/limits.conf
cat /etc/sysctl.conf
3 数据导入
3.1 Stream load
用户通过 HTTP 协议提交请求并携带原始数据创建导入。主要用于快速将本地文件或数据流中的数据导入到 Doris。导入命令同步返回导入结果。
注:分隔符根据实际情况修改,文本的内容不要带单引号或者双引号,doris会当成字符串和数据直接拼接在一起。比如mysql导出的csv或者txt文件需要全局替换去引号(数据量大的建议在导出的时候就设置去掉引号)。
参考:http://doris.apache.org/master/zh-CN/administrator-guide/load-data/load-manual.html#%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5