超详细的Apache Doris 集群部署方案

1,620 阅读4分钟

超详细的Apache Doris 集群部署方案

# 安装JDK

a) 卸载系统自带的OpenJDK以及相关的java文件
[root@localhost ~]# java -version   # 若有OpenJDK,则卸载
[root@localhost ~]# rpm -qa | grep openjdk
[root@localhost ~]# rpm -qa | grep openjdk | xargs rpm -e --nodeps

b) 上传并解压源码包
[root@localhost ~]# mkdir /usr/java
[root@localhost ~]# tar -xzvf jdk-8u211-linux-x64.tar.gz -C /usr/java/

c) 设置jdk环境变量
[root@localhost ~]# vim /etc/profile  
# 进入文档增加如下内容
export JAVA_HOME=/usr/java/jdk1.8.0_211
export JRE_HOME=/usr/java/jdk1.8.0_211/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH

[root@localhost ~]# source /etc/profile
[root@localhost ~]# java -version

集群时钟保持一致

a) 安装ntp服务
[root@localhost ~]# yum -y install ntp ntpdate

b) 设置时区为上海
[root@localhost ~]# rm -rf /etc/localtime
[root@localhost ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

c) 配置时间同步作业
[root@localhost ~]# crontab -e
*/10 * * * * /usr/sbin/ntpdate 172.16.102.2  # 生产环境IP待定

d) 手动同步一下时间
/usr/sbin/ntpdate 172.16.102.2

e) 临时更新机器时间
[root@localhost ~]# date -s "2021-11-03 17:23:45"  # 更改系统时间
[root@localhost ~]# hwclock --show  # 显示硬件时间
[root@localhost ~]# hwclock  -w     # 根据系统时间设置硬件时间

设置打开最大文件数限制

# 参考网页:https://www.e-learn.cn/topic/2959291
[root@localhost ~]# vim /etc/security/limits.conf
# 在末尾增加如下四行
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535

[root@localhost ~]# vim /etc/sysctl.conf
# 在末尾增加如下一行
fs.file-max = 65535

在/etc/security/limits.d/目录下找是否有“xx-nproc.conf”的文件,一般是“20-nproc.conf”或“90-nproc.conf”
[root@localhost ~]# vim /etc/security/limits.d/20-nproc.conf
# 在末尾增加如下两行
* soft nproc 65535
* hard nproc 65535

# 用户退出,重新登录是配置生效

添加用户:doris/doris

a) 添加新用户
[root@localhost ~]# adduser doris
[root@localhost ~]# passwd doris

b) 增加sudo权限
• 修改文件权限,文件默认为只读
[root@localhost ~]# ll /etc/sudoers
[root@localhost ~]# chmod u+w /etc/sudoers 
• 修改文件,在如下位置增加一行
[root@localhost ~]# vim /etc/sudoers
root      ALL=(ALL)   ALL                # 已有行
doris     ALL=(ALL)   NOPASSWD: ALL      # 执行sudo命令(不需要输入密码)
• 将文件权限还原回只读
[root@localhost ~]# chmod u-w /etc/sudoers
[root@localhost ~]# ll /etc/sudoers

安装MySQL客户端(所有节点)

a)将安装包和JDBC驱动上传,共计501_mysql-community-common-5.7.16-1.el7.x86_64.rpm
02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm
03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
04_mysql-community-client-5.7.16-1.el7.x86_64.rpm
mysql-connector-java-5.1.27-bin.jar

b) 卸载自带的Mysql-libs(如果之前安装过mysql,要全都卸载掉)
[doris@localhost ~]$ sudo rpm -qa | grep -i -E mysql\|mariadb | xargs -n1 sudo rpm -e --nodeps

c) 安装MySQL依赖和客户端
[doris@localhost ~]$ sudo rpm -ivh 01_mysql-community-common-5.7.16-1.el7.x86_64.rpm
[doris@localhost ~]$ sudo rpm -ivh 02_mysql-community-libs-5.7.16-1.el7.x86_64.rpm
[doris@localhost ~]$ sudo rpm -ivh 03_mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
[doris@localhost ~]$ sudo rpm -ivh 04_mysql-community-client-5.7.16-1.el7.x86_64.rpm

安装MySQL的ODBC Driver

# 安装mysql-connector-odbc(所有节点)
[doris@localhost ~]$ sudo yum install mysql-connector-odbc.x86_64
# 上传并解压 mysql-connector-odbc-5.3.13-linux-glibc2.12-x86-64bit.tar.gz
[doris@localhost ~]$ tar -zxvf mysql-connector-odbc-5.3.13-linux-glibc2.12-x86-64bit.tar.gz
[doris@localhost ~]$ mv mysql-connector-odbc-5.3.13-linux-glibc2.12-x86-64bit mysql-connector-odbc-5.3.13
# 复制文件到指定目录
[doris@localhost ~]$ cd mysql-connector-odbc-5.3.13
[doris@localhost mysql-connector-odbc-5.3.13]$ sudo cp -r bin/* /usr/local/bin/
[doris@localhost mysql-connector-odbc-5.3.13]$ sudo cp -r lib/* /usr/local/lib/
# 远程拷贝文件到其它各个节点
[doris@localhost mysql-connector-odbc-5.3.13]$ scp -r bin/*  root@172.16.102.142:/usr/local/bin/
[doris@localhost mysql-connector-odbc-5.3.13]$ scp -r lib/*  root@172.16.102.142:/usr/local/lib/

# 执行myodbc-installer(所有节点)
[doris@localhost mysql-connector-odbc-5.3.13]$ cd /usr/local/bin/
[doris@localhost bin]$ sudo ./myodbc-installer -a -d -n "MySQL ODBC 5.3 Driver" -t "Driver=/usr/local/lib/libmyodbc5w.so"
[doris@localhost bin]$ sudo ./myodbc-installer -a -d -n "MySQL ODBC 5.3" -t "Driver=/usr/local/lib/libmyodbc5a.so"
# 查看是否安装成功
[doris@localhost bin]$ myodbc-installer -d -l
PostgreSQL
MySQL
MySQL ODBC 5.3 Driver
MySQL ODBC 5.3

部署规划

测试环境:

服务172.16.102.20172.16.102.21172.16.102.22172.16.102.23172.16.102.24
DorisFE(Leader)FE(Follower)FE(Follower)
DorisBEBEBEBEBE
SupervisorSupervisorSupervisorSupervisorSupervisorSupervisor

生产环境:

服务101.188.98.29101.188.98.30101.188.98.31101.188.98.32101.188.98.33
DorisFE(Follower)FE(Follower)FE(Leader)
DorisBEBEBEBEBE
SupervisorSupervisorSupervisorSupervisorSupervisorSupervisor

创建目录并赋权(所有节点)

0) 查看看磁盘情况,若有数据盘,则修改对应的路径参数!!!

a) 创建软件安装目录
[doris@localhost ~]$ sudo mkdir -p /opt/soft/
[doris@localhost ~]$ sudo chmod 777 /opt/soft/

b) 创建Doris运行时目录
[doris@localhost ~]$ sudo mkdir /data
[doris@localhost ~]$ sudo chmod 777 /data

[doris@localhost ~]$ mkdir /data/doris-meta
[doris@localhost ~]$ mkdir /data/doris-data
[doris@localhost ~]$ mkdir -p /data/logs/doris/audit
[doris@localhost ~]$ mkdir -p /data/logs/doris/sys

c) 创建Supervisor需要的目录
[doris@localhost ~]$ mkdir -p /data/supervisor/conf.d
[doris@localhost ~]$ mkdir -p /data/logs/supervisor/

安装Doris服务

a) 任一节点上上传PALO-0.14.13.1-release-binary.tar.gz安装包
b) 解压到指定安装目录
[doris@localhost ~]$ tar -zxvf PALO-0.14.13.1-release-binary.tar.gz -C /opt/soft/
c) 修改目录名称
[doris@localhost ~]$ cd /opt/soft/
[doris@redis_01 soft]$ mv PALO-0.14.13.1-release-binary/ doris-palo-0.14.13.1
d) 复制到其它所有节点
[doris@localhost ~]$ scp -r doris-palo-0.14.13.1/ 172.16.102.142:$PWD

e) 修改配置文件
• 修改FE节点的配置
[doris@localhost ~]$ vim /opt/soft/doris-palo-0.14.13.1/fe/conf/fe.conf
LOG_DIR = /data/logs/doris               # 25行
meta_dir = /data/doris-meta              # 42行
priority_networks = 172.16.102.141/24    # 55行
sys_log_dir = /data/logs/doris/sys       # 59行
audit_log_dir = /data/logs/doris/audit   # 62行
• 修改BE节点的配置
[doris@localhost ~]$ vim /opt/soft/doris-palo-0.14.13.1/be/conf/be.conf
PPROF_TMPDIR="/data/logs/doris"          # 18行
priority_networks = 172.16.102.141/24    # 35行
storage_root_path = /data/doris-data     # 50行
sys_log_dir = /data/logs/doris/sys       # 53行
• 修改BE节点的配置
[doris@localhost ~]$ vim /opt/soft/doris-palo-0.14.13.1/be/conf/odbcinst.ini
# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL ODBC 5.3 Unicode Driver]
Description     = ODBC for MySQL
Driver          = /usr/local/lib/libmyodbc5a.so
FileUsage       = 1

安装Supervisor服务

a) 任一节点上上传supervisor.tar.gz安装包并解压
[doris@localhost ~]$ tar -zxvf supervisor.tar.gz
[doris@localhost ~]$ cd supervisor/
[doris@localhost supervisor]$ unzip setuptools-39.1.0.zip
[doris@localhost supervisor]$ tar -zxvf meld3-0.6.10.tar.gz
[doris@localhost supervisor]$ tar -zxvf supervisor-3.3.4.tar.gz

b) 复制到其它所有节点
[doris@localhost ~]$ cd ~/
[doris@localhost ~]$ scp -r supervisor/ 172.16.102.249:$PWD

c) 安装依赖-setuptools(所有节点)
[doris@localhost ~]$ cd /home/doris/supervisor/setuptools-39.1.0/
[doris@localhost setuptools-39.1.0]$ sudo python setup.py build
[doris@localhost setuptools-39.1.0]$ sudo python setup.py install

d) 安装依赖-meld3(所有节点)
[doris@localhost ~]$ cd /home/doris/supervisor/meld3-0.6.10/
[doris@localhost meld3-0.6.10]$ sudo python setup.py install

e) 安装-supervisor(所有节点)
[doris@localhost ~]$ cd /home/doris/supervisor/supervisor-3.3.4/
[doris@localhost supervisor-3.3.4]$ sudo python setup.py install

配置Supervisor

新建Supervisor配置文件(所有节点)

[doris@localhost ~]$ vim /data/supervisor/supervisord.conf
# 配置一下内容
[supervisord]
logfile = /data/logs/supervisor/supervisord.log
logfile_maxbytes = 50MB
logfile_backups=10
loglevel = info
pidfile = /data/supervisor/supervisord.pid
nodaemon = false
#nodaemon = true
minfds = 1024
minprocs = 200
umask = 022
user = doris
identifier = supervisor
directory = /data/supervisor/
nocleanup = true
childlogdir = /data/logs/supervisor/
strip_ansi = false
[supervisorctl]
serverurl = unix:///data/supervisor/supervisord.sock
prompt = supervisor
chmod = 0777
[unix_http_server]
file=/data/supervisor/supervisord.sock
chmod=0700
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[include]
files=conf.d/*.conf

新建Supervisor监控BE进程的配置文件(BE节点)

[doris@localhost ~]$ vim /data/supervisor/conf.d/doris_be.conf
# 配置以下内容
[program:doris_be]
command=/opt/soft/doris-palo-0.14.13.1/be/bin/start_be.sh
process_name=%(program_name)s
numprocs=1
directory=/opt/soft/doris-palo-0.14.13.1/be
umask=022
priority=999
autostart=true
autorestart=true
startsecs=10
startretries=20
exitcodes=0,2
stopsignal=TERM
stopasgroup=true
killasgroup=true
stopwaitsecs=10
user=doris
redirect_stderr=true
stdout_logfile=/data/logs/supervisor/%(program_name)s.log

新建Supervisor监控FE进程的配置文件(FE节点)

[doris@localhost ~]$ vim /data/supervisor/conf.d/doris_fe.conf
# 配置以下内容
[program:doris_fe]
command=/opt/soft/doris-palo-0.14.13.1/fe/bin/start_fe.sh
process_name=%(program_name)s
numprocs=1
directory=/opt/soft/doris-palo-0.14.13.1/fe
umask=022
priority=999
autostart=true
autorestart=true
startsecs=10
startretries=20
exitcodes=0,2
stopsignal=TERM
stopasgroup=true
killasgroup=true
stopwaitsecs=10
user=doris
redirect_stderr=true
stdout_logfile=/data/logs/supervisor/%(program_name)s.log

# 备注:第二行在“FE Follower”节点修改为如下:
# command=/opt/soft/doris-palo-0.14.13.1/fe/bin/start_fe.sh --helper ${FE Leader IP}:9010 
# 并在集群启动完成后需要删除--helper参数

启动Supervisor和Doris

启动Supervisor服务

a) 先启动Supervisor服务(每个节点)
[doris@localhost ~]$ supervisord -c /data/supervisor/supervisord.conf

b) 使用MySQL客户端连接FE Leader,添加节点,初始化集群
[doris@localhost ~]$ mysql -h172.16.102.141 -P9030 -uroot
mysql> ALTER SYSTEM ADD BACKEND "${BE IP}:9050";
mysql> SHOW PROC '/backends';

mysql> ALTER SYSTEM ADD FOLLOWER "${FE Follower IP}:9010";
mysql> SHOW PROC '/frontends';

c) 观察各节点的状态
mysql> SHOW PROC '/backends';
mysql> SHOW PROC '/frontends';

d) 设置参数
mysql> show variables;  -- 查看所有参数
mysql> show variables like '%mem_limit%';  -- 查看BE内存限制
mysql> set global exec_mem_limit = 26843545600;  -- 25G,按实际情况分配
mysql> set global enable_insert_strict=true;     -- 设置完全无法容忍错误
mysql> set global query_timeout=1800;            -- 设置查询超时时间为30分钟
mysql> set global forward_to_master=true;        -- 设置follower指向master,这样连每个FE效果都一样

收尾操作

a) 删除FE Follower节点/data/supervisor/conf.d/doris_fe.conf中“--helper”参数

b) FE Follower节点supervisorctl命令行停止进程
[doris@localhost ~]$ supervisorctl -c /data/supervisor/supervisord.conf
supervisor> stop doris_be
supervisor> stop doris_fe

c) FE Follower节点doris进程是否已关闭
[doris@localhost ~]$ ps -ef | grep doris

d) FE Follower节点supervisorctl命令行重载进程
[doris@localhost ~]$ supervisorctl -c /data/supervisor/supervisord.conf
supervisor> reload
supervisor> status

e) Supervisor服务加入开机启动
echo '/usr/bin/su - doris -c "/usr/bin/supervisord -c /data/supervisor/supervisord.conf"' >> /etc/rc.local
chmod +x /etc/rc.d/rc.local