文章目录
- CentOS7安装部署Doris
- 一、前言
- 1.简介
- 2.环境
- 二、正文
- 1.Doris基础
- 1)架构图
- 2)通讯端口
- 2.部署服务器
- 3.安装基础环境
- 1)安装JDK 11
- 2)安装GCC
- 3)设置文件句柄数
- 4)关闭交换分区(swap)
- 5)时钟同步
- 6)关闭防火墙
- 4.集群部署
- 1)安装FE
- 2)拷贝BE
- 3)安装BE
- 4)安装MySQL客户端
- 5)测试
- 6)WebUI
- 5.服务自启动
- 1)配置FE自启动
- 2)配置BE自启动
- 3)启动服务
CentOS7安装部署Doris
一、前言
1.简介
Apache Doris是基于MPP架构的新一代开源实时数据仓库,使用更方便,性能更高,适用于大数据分析。
2.环境
- Linux 发行版:CentOS-7-x86_64-DVD-1804.iso
- JDK 版本:Java SE Development Kit 11.0.19
- Doris 版本:1.2.4.1
快速开始
Doris 介绍
标准部署 - Apache Doris
弹性扩缩容 - Apache Doris
Download - Apache Doris
ALTER-SYSTEM-DROP-BACKEND - Apache Doris
弹性扩缩容 - Apache Doris
CentOS基础操作命令
CentOS对换home分区与root分区的存储空间
CentOS7安装部署Java11
CentOS7安装部署MySQL80
二、正文
1.Doris基础
1)架构图
Doris 介绍
-
FE(Frontend)主要负责元数据的管理、存储,以及查询的解析等
-
BE(Backend)则主要负责数据的存储、以及查询计划的执行。BE 中的每个节点都存储有数据的多副本,从而保证数据的高可用和高可靠
2)通讯端口
标准部署 - Apache Doris
- 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 | FE 上的 http server 端口 |
FE | rpc_port | 9020 | BE --> FE, FE <–> FE | FE 上的 thrift server 端口,每个fe的配置需要保持一致 |
FE | query_port | 9030 | 用户 <–> FE | 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 元数据存放位置:
meta_dir = ${DORIS_HOME}/doris-meta
- BE 数据存放目录:
storage_root_path = ${DORIS_HOME}/storage
2.部署服务器
实例 | IP 地址 |
---|---|
FE | 192.168.8.111 |
BE | 192.168.8.112 |
BE | 192.168.8.113 |
3.安装基础环境
在3 台服务器上执行基础环境的安装和配置
1)安装JDK 11
- 参考:CentOS7安装部署Java11
- 安装目录:
/opt/java/jdk-11.0.19
2)安装GCC
yum -y install gcc
gcc --version
3)设置文件句柄数
-
设置系统最大打开文件句柄数
-
编辑
limits.conf
vim /etc/security/limits.conf
- 写入内容
* soft nofile 65536
* hard nofile 65536
* soft nproc 204800
* hard nproc 204800
- 显示当前用户进程可以打开的最大文件描述符数目
ulimit -n
4)关闭交换分区(swap)
- 查询交换分区
swapon --show
- 关闭交换分区
# 备用:打开交换分区:swapon -a
swapoff -a
- 编辑
/etc/fstab
vim /etc/fstab
- 加入注释
# /dev/mapper/centos-swap swap swap defaults 0 0
5)时钟同步
- 安装 rdate 软件包
#安装rdate
yum -y install rdate#同步时间
rdate -s time-b.nist.gov#查看时间是否正确
date
- 安装定时器软件包
yum -y install crontab
- 创建 crontab 任务
crontab -e
- 写入内容:20 秒同步一次
*/20 * * * * /usr/bin/rdate -s time-b.nist.gov > /dev/null 2>&1
- 重启 crontab 服务
service crond reload
- 其它时间同步服务器节点
节点位置 | 节点域名 |
---|---|
东南大学 | s1d.time.edu.cn |
清华大学 | s1e.time.edu.cn |
清华大学 | s2a.time.edu.cn |
清华大学 | s2b.time.edu.cn |
北京邮电大学 | s2c.time.edu.cn |
上海交通大学 | ntp.sjtu.edu.cn |
北京邮电大学 | s1a.time.edu.cn |
北京大学 | s1c.time.edu.cn |
香港中文大学 | clock.cuhk.edu.hk |
6)关闭防火墙
- 可禁用防火墙,或配置开放的端口,后者比较安全
#--关闭防火墙
systemctl stop firewalld.service
#--开机禁用防火墙
systemctl disable firewalld.service
#--防火墙状态
systemctl status firewalld.service
4.集群部署
1)安装FE
FE 服务器:192.168.8.111
- 创建安装目录
mkdir /opt/doris
cd /opt/doris
- 下载安装包,当前安装版本:
1.2.4.1
Download - Apache Doris
wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-1.2.4.1-bin-x86_64.tar.xz
- 解压安装包
tar -xvf apache-doris-1.2.4.1-bin-x86_64.tar.xz
- 移动 FE 文件夹到安装目录:
/opt/doris/
mv /opt/doris/apache-doris-1.2.4.1-bin-x86_64/fe/ /opt/doris/
- 编辑配置文件
vim ./fe/conf/fe.conf
- 修改内容:
- JDK 安装目录
- 绑定服务器 IP
# JAVA_OPTS 上面一行
JAVA_HOME=/opt/java/jdk-11.0.19priority_networks=192.168.8.111/24
- 启动 FE
cd /opt/doris./fe/bin/start_fe.sh --daemon
-
浏览器访问:http://192.168.8.111:8030/api/bootstrap
-
成功提示
{"msg":"success","code":0,"data":{"replayedJournalId":0,"queryPort":0,"rpcPort":0,"version":""},"count":0}
2)拷贝BE
FE 服务器:192.168.8.111
- 拷贝BE安装包至BE服务器
scp -r /opt/doris/apache-doris-1.2.4.1-bin-x86_64/be root@192.168.8.112:/opt/doris
scp -r /opt/doris/apache-doris-1.2.4.1-bin-x86_64/be root@192.168.8.113:/opt/doris
3)安装BE
BE 服务器:192.168.8.112、192.168.8.113
- 创建安装目录
mkdir /opt/doris
cd /opt/doris
- 修改配置文件
vim ./be/conf/be.conf
- 修改内容:
- JDK 安装目录
- 绑定服务器 IP;注意区分不同服务器 IP
# JAVA_OPTS 上面一行
JAVA_HOME=/opt/java/jdk-11.0.19priority_networks=192.168.8.112/24
- 限制一个进程可以拥有的VMA(虚拟内存区域)的数量
vim /etc/sysctl.conf
- 写入内容
vm.max_map_count=2000000
fs.file-max=6553560
- 加载并应用配置文件
sysctl -p
- 启动 BE
./be/bin/start_be.sh --daemon
-
浏览器访问
http://192.168.8.112:8040/api/health
http://192.168.8.113:8040/api/health
-
成功提示
{"status": "OK","msg": "To Be Added"}
4)安装MySQL客户端
可忽略,使用 Navicat 替代
FE 服务器:192.168.8.111
- 创建安装目录
mkdir /opt/mysql
cd /opt/mysql
- 下载安装软件包
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-community-common-8.0.25-1.el7.x86_64.rpm
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-community-libs-8.0.25-1.el7.x86_64.rpm
wget https://cdn.mysql.com/archives/mysql-8.0/mysql-community-client-8.0.25-1.el7.x86_64.rpm
- 安装 RPM 软件包
rpm -Uvh *.rpm --nodeps --force
- MySQL 客户端连接(无密码)
mysql -h 192.168.8.111 -P 9030 -uroot -p
- 新增两个 BE
弹性扩缩容 - Apache Doris
#--备用(删除BE节点):ALTER SYSTEM DROPP BACKEND "192.168.8.112:9050";
ALTER SYSTEM ADD BACKEND "192.168.8.112:9050";
ALTER SYSTEM ADD BACKEND "192.168.8.113:9050";
- 修改密码
SET PASSWORD FOR 'root' = PASSWORD('doris123');
5)测试
- 创建数据库(MySQL 客户端执行)
create database demo;
- 创建数据表
CREATE TABLE IF NOT EXISTS example_tb
(`user_id` LARGEINT NOT NULL COMMENT "用户id",`date` DATE NOT NULL COMMENT "数据灌入日期时间",`city` VARCHAR(20) COMMENT "用户所在城市",`age` SMALLINT COMMENT "用户年龄",`sex` TINYINT COMMENT "用户性别",`last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间",`cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费",`max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间",`min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间"
)
AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `sex`)
DISTRIBUTED BY HASH(`user_id`) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 1"
);
- 输出表结构
desc example_tb;
- 插入数据
insert into example_tb values
(10000,"2017-10-01","北京",20,0,"2017-10-01 06:00:00",20,10,10),
(10000,"2017-10-01","北京",20,0,"2017-10-01 07:00:00",15,2,2),
(10001,"2017-10-01","北京",30,1,"2017-10-01 17:05:45",2,22,22),
(10002,"2017-10-02","上海",20,1,"2017-10-02 12:59:12",200,5,5),
(10003,"2017-10-02","广州",32,0,"2017-10-02 11:20:00",30,11,11),
(10004,"2017-10-01","深圳",35,0,"2017-10-01 10:00:15",100,3,3),
(10004,"2017-10-03","深圳",35,0,"2017-10-03 10:20:22",11,6,6);
- 查询数据
SELECT * FROM example_tb;
6)WebUI
- 浏览器访问:http://192.168.8.111:8030
- 账号:root
- 密码:输入客户端修改的密码(doris123);默认无密码
5.服务自启动
服务自动拉起
1)配置FE自启动
- 编辑
doris-fe.service
vim /etc/systemd/system/doris-fe.service
- 写入内容(根据实际情况修改
ExecStart
和ExecStop
)
[Unit]
Description=Doris FE
After=network-online.target
Wants=network-online.target[Service]
Type=forking
User=root
Group=root
LimitCORE=infinity
LimitNOFILE=200000
Restart=on-failure
RestartSec=30
StartLimitInterval=120
StartLimitBurst=3
KillMode=none
ExecStart=/opt/doris/fe/bin/start_fe.sh --daemon
ExecStop=/opt/doris/fe/bin/stop_fe.sh[Install]
WantedBy=multi-user.target
2)配置BE自启动
- 编辑
doris-be.service
vim /etc/systemd/system/doris-be.service
- 写入内容(根据实际情况修改
ExecStart
和ExecStop
)
[Unit]
Description=Doris BE
After=network-online.target
Wants=network-online.target[Service]
Type=forking
User=root
Group=root
LimitCORE=infinity
LimitNOFILE=200000
Restart=on-failure
RestartSec=30
StartLimitInterval=120
StartLimitBurst=3
KillMode=none
ExecStart=/opt/doris/be/bin/start_be.sh --daemon
ExecStop=/opt/doris/be/bin/stop_be.sh[Install]
WantedBy=multi-user.target
3)启动服务
- 重新加载配置
systemctl daemon-reload
- 启动服务
systemctl start doris-fe
systemctl start doris-be
- 设置开机自启动
systemctl enable doris-fe
systemctl enable doris-be
- 查询服务状态
systemctl status doris-fe
systemctl status doris-be