| Linux 系统 | 版本 |
|---|---|
| CentOS | 7.1 及以上 |
| Ubuntu | 16.04 及以上 |
虽然要求centos7以上,但是实测在centos8安装会出现某些依赖一直安装不上的问题,因此建议安装在centos7上
软件需求| 软件 | 版本 |
|---|---|
| Java | 1.8 及以上 |
| GCC | 4.8.2 及以上 |
| 模块 | CPU | 内存 | 磁盘 | 网络 | 实例数量 |
|---|---|---|---|---|---|
| Frontend | 8核+ | 8GB+ | SSD 或 SATA,10GB+ * | 千兆网卡 | 1 |
| Backend | 8核+ | 16GB+ | SSD 或 SATA,50GB+ * | 千兆网卡 | 1-3 * |
| 模块 | CPU | 内存 | 磁盘 | 网络 | 实例数量(最低要求) |
|---|---|---|---|---|---|
| Frontend | 16核+ | 64GB+ | SSD 或 RAID 卡,100GB+ * | 万兆网卡 | 1-5 * |
| Backend | 16核+ | 64GB+ | SSD 或 SATA,100G+ * | 万兆网卡 | 10-100 * |
注1:
FE 的磁盘空间主要用于存储元数据,包括日志和 image。通常从几百 MB 到几个 GB 不等。
BE 的磁盘空间主要用于存放用户数据,总磁盘空间按用户总数据量 * 3(3副本)计算,然后再预留额外 40% 的空间用作后台 compaction 以及一些中间数据的存放。
一台机器上可以部署多个 BE 实例,但是只能部署一个 FE。如果需要 3 副本数据,那么至少需要 3 台机器各部署一个 BE 实例(而不是1台机器部署3个BE实例)。多个FE所在服务器的时钟必须保持一致(允许最多5秒的时钟偏差
)
测试环境也可以仅适用一个 BE 进行测试。实际生产环境,BE 实例数量直接决定了整体查询延迟。
所有部署节点关闭 Swap。
1. 创建用户(非必要选项)注2:FE 节点的数量
FE 角色分为 Follower 和 Observer,(Leader 为 Follower 组中选举出来的一种角色,以下统称 Follower,具体含义见 元数据设计文档)。
FE 节点数据至少为1(1 个 Follower)。当部署 1 个 Follower 和 1 个 Observer 时,可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。
Follower 的数量必须为奇数,Observer 数量随意。
根据以往经验,当集群可用性要求很高是(比如提供在线业务),可以部署 3 个 Follower 和 1-3 个 Observer。如果是离线业务,建议部署 1 个 Follower 和 1-3 个 Observer。
useradd sudouser
设置密码
passwd sudouser
赋予超级用户权限
# 2、赋予root权限 # 方法一: 修改 /etc/sudoers 文件,找到%wheel一行,把前面的注释(#)去掉 ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL # 然后修改用户,使其属于root组(wheel),命令如下: usermod -g root sudouser # 修改完毕,现在可以用sudouser帐号登录,然后用命令 sudo su - ,即可获得root权限进行操作。 # 方法二: 修改 /etc/sudoers 文件,找到root一行,在root下面添加一行,如下所示: ## Allow root to run any commands anywhere root ALL=(ALL) ALL sudouser ALL=(ALL) ALL # 修改完毕,现在可以用sudouser帐号登录,然后用命令 sudo su - ,即可获得root权限进行操作。2.创建执行环境&设置环境变量 创建执行环境
sudo yum groupinstall 'Development Tools' && sudo yum install cmake3 byacc flex automake libtool bison binutils-devel zip unzip ncurses-devel curl git wget python2 glibc-static libstdc++-static java-1.8.0-openjdk npm设置环境变量 Maven
wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz --no-check-certificate tar -xzvf apache-maven-3.8.4-bin.tar.gz mv apache-maven-3.8.4 /usr/lib/ # 环境变量 vi /etc/profile # maven export MAVEN_HOME=/usr/lib/apache-maven-3.8.4/ export PATH=$PATH:$MAVEN_HOME/bin source /opt/rh/devtoolset-7/enablecmake
要用cmake3
ln -s /usr/bin/cmake3 /usr/bin/cmakejava
vi /etc/profile export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib export PATH=$PATH:$JAVA_HOME/binpython
要用python2
npm1).安装gcc
yum install gcc gcc-c++
2).下载node国内镜像(推荐)
wget https://npm.taobao.org/mirrors/node/v10.14.1/node-v10.14.1-linux-x64.tar.gz
3).解压并重命名文件夹
tar -xvf node-v10.14.1-linux-x64.tar.gz mv node-v10.14.1-linux-x64 /usr/local/node
4).添加环境变量
vi /etc/profile
在文件最后添加以下配置:
# npm export NODE_HOME=/usr/local/node export PATH=$NODE_HOME/bin:$PATH
5).刷新配置
source /etc/profile
6).验证结果:
node -v npm -v3.拉取源码
下载源码
wget https://dlcdn.apache.org/incubator/doris/0.14.0-incubating/apache-doris-0.14.0-incubating-src.tar.gz tar -xzvf apache-doris-0.14.0-incubating-src.tar.gz4.安装第三方依赖
在这一步之前,建议首先跳到第6步,可能出现的问题,检查一下是否有依赖版本不符合要求
cd thirdparty
第三方依赖下载连接错误、失效等问题
Doris 所依赖的第三方库的下载连接都在 thirdparty/vars.sh 文件内。随着时间推移,一些下载连接可能会失效。如果遇到这种情况。可以使用如下两种方式解决:
1) 手动修改 thirdparty/vars.sh 文件 手动修改有问题的下载连接和对应的 MD5 值。 2) 使用第三方下载仓库(推荐): export REPOSITORY_URL=https://doris-thirdparty-repo.bj.bcebos.com/thirdparty sh build-thirdparty.sh REPOSITORY_URL 中包含所有第三方库源码包和他们的历史版本。5.编译
sh build.sh # 此步骤会把FE与BE都编译完毕 # 此步骤会根据网速不同,速度不同,但是大约需要一小时左右
编译之后输出至output目录,有3个子目录:be、fe、udf,只需要拷贝output目录到其他服务器即可
6.遇到的问题 6.1 GCC版本过低:升级到gcc 7.3
yum -y install centos-release-scl yum -y install devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-binutils scl enable devtoolset-7 bash
需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 7.3的话:
echo "source /opt/rh/devtoolset-7/enable" >>/etc/profile6.2 Failed to download DataTables.zips2n-0.10.0.tar.gz
except-md5 f7f18a9f39d692ec33b5536bff617232 actual-md5 7698e7ae6c1d53d5e1f256b4fc8d5a44 /root/data/apache-doris-0.14.0-incubating-src/thirdparty/src/DataTables.zip Archive DataTables.zip will be removed and download again. Failed to download DataTables.zip
vi var.sh 将DataTables.zip的MD5值进行替换6.3 Failed to unzip DataTables.zip
需要在本地进行解压后上传到服务器对应位置,并进行更名
~/src/DataTables-1.10.25 vi var.sh # 将DataTables的名称由DataTables-1.10.23改为DataTables-1.10.25 vi var.sh # 将s2n的名称由s2n-0.10.0改为s2n-tls-0.10.0cd6.4 CMake 3.1 or higher is required. You are running version xxxx
yum remove cmake yum install cmake3 #创建软连接 ln -s /usr/bin/cmake3 /usr/bin/cmake6.5 有可能会报Bootstrap3.3.7/与jQuery3.3.1/目录无法找到的问题
其实就是路径没找对,只需要去Bootstrap
7.部署因为是测试环境,所以此次部署1个FE,3个BE。
| 机器01 | 机器02 | 机器03 |
|---|---|---|
| FE、BE | BE | BE |
在机器01上创建目标目录
mkdir /data/serve/doris配置 FE
将编译完的output/ 下的fe目录拷贝至该目录下。
配置文件为 fe/conf/fe.conf。其中注意:meta_dir:元数据存放位置。默认在 fe/doris-meta/下。需手动创建该目录。
注意:生产环境强烈建议单独指定目录不要放在Doris安装目录下,最好是单独的磁盘(如果有SSD最好),测试开发环境可以使用默认配置
fe.conf中JAVA_OPTS默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上。
cd /data/software/doris/fe mkdir doris-meta启动FE
sh bin/start_fe.sh --daemon
FE进程启动进入后台执行。日志默认存放在 fe/log/ 目录下。如启动失败,可以通过查看 fe/log/fe.log或者 fe/log/fe.out 查看错误信息。
有可能的错误一:
edit_log_port 9010端口被占用,重新更换edit_log_port端口
vi conf/fe.conf
有可能的错误二 :
单节点FE迁移启动失败
vi conf/fe.conf # 增加一行配置后重新启动 metadata_failure_recovery=true连接FE
可以用查看本机的hostname来进行连接,也可以使用本机的私有IP进行连接
mysql -uroot -hkbox101 -P9030
能连上说明FE配置成功
配置&启动BE拷贝 BE 部署文件到所有要部署 BE 的节点
将源码编译生成的 output 下的 be 文件夹拷贝到 BE 的节点的指定部署路径下。
修改 be/conf/be.conf。主要是配置 storage_root_path:数据存放目录。默认在be/storage下,需要手动创建该目录。多个路径之间使用英文状态的分号 ; 分隔(最后一个目录后不要加 ;)。可以通过路径区别存储目录的介质,HDD或SSD。可以添加容量限制在每个路径的末尾,通过英文状态逗号,隔开。
注意:如果是SSD磁盘要在目录后面加上.SSD,HDD磁盘在目录后面加.HDD
*** 错误信息可以在be.info中查看***
错误一:
Check failed: s.ok() Internal error: tcp listen failed, errno=98, errmsg=Address already in use
BE webserver_port端口配置:
如果 be 部署在 hadoop 集群中,注意调整 be.conf 中的 webserver_port = 8040 ,以免造成端口冲突
启动BEsh bin/start_be.sh --daemon添加BE
ALTER SYSTEM ADD BACKEND "kbox101:9050";查看BE运行情况
SHOW PROC '/backends'G
显示结果:
*************************** 1. row ***************************
BackendId: 12002
Cluster: default_cluster
IP: xx.xx.xx.xx
HostName: kbox101
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8085
BrpcPort: 8060
LastStartTime: 2021-11-23 15:14:09
LastHeartbeat: 2021-11-23 15:24:50
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 0
DataUsedCapacity: .000
AvailCapacity: 1.000 B
TotalCapacity: .000
UsedPct: 0.00 %
MaxDiskUsedPct: 0.00 %
ErrMsg:
Version: 0.14.0-release-Unknown
Status: {"lastSuccessReportTabletsTime":"N/A"}
1 row in set (0.03 sec)
Alive的值为true,说明连接成功。
8.可参考的技术文档Doris12版安装编译部署(docker编译)
记录apache doris使用过程中出现的问题
集群部署
Apache Doris 环境安装部署



