0.系统与版本要求
Linux 操作系统版本需求
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。
注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。
1. 创建用户(非必要选项)
useradd sudouser
设置密码
passwd sudouser
赋予超级用户权限
# 修改 /etc/sudoers 文件,找到root一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
vi /etc/sudoers
root ALL=(ALL) ALL
sudouser ALL=(ALL) ALL
# 修改完毕,现在可以用sudouser帐号登录,然后用命令 sudo su - ,即可获得root权限进行操作。
# 修改用户的sftp权限,首先找到下面文件的位置(一般都在/usr/libexec/openssh/sftp-server)
find / -name sftp-server -print
# 编辑/etc/sudoers 文件
# 在刚刚加入的一行下面再加一句
visudo
sudouser ALL=NOPASSWD:/usr/libexec/openssh/sftp-server
# 同时,将文件中的如下一行注释掉(如果有的话):
Defaults requiretty
2.创建执行环境&设置环境变量
更改句柄数:
vi /etc/security/limits.conf
# 修改下面参数的值
* soft nofile 655360 # open files (-n)
* hard nofile 655360
* soft nproc 655650
* hard nproc 655650 # max user processes (-u)
vi /etc/security/limits.d/20-nproc.conf
# 修改参数的值
* soft nproc 655350
root soft nproc unlimited
# 修改 /etc/sysctl.conf, 加入
echo fs.file-max = 6553560 >> /etc/sysctl.conf
# 修改两个文件的值
/etc/systemd/system.conf #modify hard limit
/etc/systemd/user.conf #modify soft limit
# 在Manager下增加
[Manager]
DefaultLimitNOFILE=655350
DefaultLimitNPROC=655350
需要重新登录,或者重新打开ssh客户端连接,永久生效
设置yum源
cd /etc/yum.repos.d/
# 备份
mkdir repo_bak
mv *.repo repo_bak/
wget http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
# 清除系统yum缓存并生成新的yum缓存
yum clean all
yum makecache
# 安装epel
yum install -y epel-release
wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 查看目前系统的yum源
yum repolist all
创建执行环境
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 npm
设置环境变量
java
# 最新的官网地址:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
# 把jdk-8u171-linux-x64.tar.gz下载到本地
cd /usr/lib
mkdir java
# 创建/usr/lib/java目录
cd java
# 进入java目录
# 用Xftp把jdk-8u311-linux-x64.tar.gz上传到此目录
# 解压
tar -xzvf jdk-8u311-linux-x64.tar.gz
vim /etc/profile
# 配置系统环境变量
vi /etc/profile
export JAVA_HOME=/usr/lib/java/jdk1.8.0_311
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
chmod 755 -R /usr/lib/java/jdk1.8.0_311
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 /etc/profile
# 配置maven镜像源
cd /usr/lib/apache-maven-3.8.4/conf
vi settings.xml
# 增加源
# 阿里云Maven镜像:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
#或开源中国maven镜像
<mirror>
<id>nexus-osc</id>
<mirrorOf>*</mirrorOf>
<name>Nexus osc</name>
<url>http://maven.oschina.net/content/groups/public/</url>
</mirror>
chmod 755 -R /usr/lib/apache-maven-3.8.4/
cmake
要用cmake3
ln -s /usr/bin/cmake3 /usr/bin/cmake
# 验证
cmake --version
python
要用python2
npm
1).安装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 -v
升级到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/profile
3.拉取源码(如果已经有编译好的output/目录可以直接进行第5步的分发)
下载源码
wget https://archive.apache.org/dist/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.gz
4.安装第三方依赖
cd ~/apache-doris-0.14.0-incubating-src/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目录到其他服务器即可
分发至其他服务器
例如:
scp -R ./serve sudouser@10.32.21.10:~/
分发完毕之后更改一下目录所属权限,顺便把fe/doris-meta/与be/storage/目录删除,否则会影响后续启动。
# 更改目录或文件所属用户
sudo chown -R sudouser /home/sudouser/serve/doris-0.14.0/
# 更改目录或文件所属用户组
sudo chgrp -R sudouser /home/sudouser/serve/doris-0.14.0/
# 更改权限
sudo chmod -R 775 /home/sudouser/serve/doris-0.14.0/
注意:FOLLOWER角色的数量要为奇数
6.集群部署
因为是测试环境,所以此次部署1个FE,3个BE。
机器01 | 机器02 | 机器03 |
---|---|---|
FE、BE | BE | BE |
在机器01上创建目标目录
mkdir /data/serve/doris
6.1 配置 FE
将编译完的output/
下的fe
目录拷贝至该目录下。
配置文件为 fe/conf/fe.conf
。其中注意:meta_dir:元数据存放位置。默认在 fe/doris-meta/
下。需手动创建该目录。
注意:生产环境强烈建议单独指定目录不要放在Doris安装目录下,最好是单独的磁盘(如果有SSD最好),测试开发环境可以使用默认配置
fe.conf
中JAVA_OPTS
默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上。
cd /data/softcware/doris/fe
# 首先需要创建doris-meta
mkdir doris-meta
- 配置priority_network
参考下面这个文档:https://blog.youkuaiyun.com/qq_37865420/article/details/114253083
这个非必选项
- 启动FE–master