Doris–基础–2.3–部署–单机部署
前提
使用hd用户登陆
完成基础环境搭建
https://blog.csdn.net/zhou920786312/article/details/118212302
1、介绍
1.1、主要内存
- 单机部署Doris
- 创建数据库、数据表、导入数据及查询
1.2、机器
主机名 | 操作系统版本 | IP | CPU | 内存 | 硬盘 |
---|---|---|---|---|---|
node01 | Centos/7.9 | 192.168.187.101 | 8C | 8G | 20G |
2、公共操作
2.1、下载
https://doris.apache.org/zh-CN/download/
2.2、上传
cd
# 创建目录
mkdir doris
2.3、解压
cd /home/hd/doris
# 解压到指定目录
tar zxf apache-doris-be-1.1.2-bin-x86_64-noavx2.tar.gz
tar zxf apache-doris-fe-1.1.2-bin.tar.gz
# 重命名
mv apache-doris-be-1.1.2-bin-x86_64-noavx2 be
mv apache-doris-fe-1.1.2-bin fe
# 删除压缩包
rm -rf apache-doris-be-1.1.2-bin-x86_64-noavx2.tar.gz
rm -rf apache-doris-fe-1.1.2-bin.tar.gz
2.3、修改主机名(root用户)
hostnamectl set-hostname node01
2.4、设置系统参数(root用户)
vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
nofile 表示 每个进程可以打开的文件数的限制
nproc 表示 每个用户创建的进程数的限制
2.5、时钟同步(root用户)
Doris 的元数据要求时间精度要小于5000ms,所以所有集群所有机器要进行时钟同步,避免因为时钟问题引发的元数据不一致导致服务出现异常。
2.5.1、时间同步
# 安装ntpdate
yum install -y ntpdate
# 时间同步
ntpdate cn.pool.ntp.org
2.5.2、编辑计划任务,每小时做一次同步
[root@node01 ~]# crontab -e
内容
* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
2.5.3、重启crond服务
service crond restart
2.6、关闭交换分区(root用户)
# 临时禁用
swapoff -a
# 永久禁用,/etc/fstab中注释掉swap那一行。
sed -i 's/.*swap.*/#&/' /etc/fstab
2.7、配置hosts文件
cat >> /etc/hosts <<EOF
192.168.187.101 node01
EOF
2.8、重启系统,让配置生效
reboot
3、FE安装
3.1、创建元数据目录
cd /home/hd/doris/fe
mkdir -p ./data
3.2、修改配置
cd /home/hd/doris/fe/fe/conf
vim fe.conf
修改内容
# 必须配置,特别是当一台机器拥有多个IP地址的时候,我们要为 FE 指定唯一的IP地址。
# 这里假设你的节点 IP 是 192.168.187.101,那么我们可以通过掩码的方式配置为 192.168.187.101/24
# 具体配置可通过 ip a 命令查到
priority_networks=192.168.187.101/24
# 添加元数据目录
# 这里你可以不配置,默认是在你的Doris FE 安装目录下的 doris-meta
# 单独配置元数据目录,需要你提前创建好你指定的目录
meta_dir=/home/hd/doris/fe/data
# 修改JVM参数
JAVA_OPTS="-Xmx8192m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$DORIS_HOME/log/fe.gc.log.$DATE"
3.3、启动
# 启动
~/doris/fe/fe/bin/start_fe.sh --daemon
# 停止
~/doris/fe/fe/bin/stop_fe.sh
3.4、查看是否安装成功
3.4.1、方式1
curl http://127.0.0.1:8030/api/bootstrap
3.4.2、方式2
http://192.168.187.101:8030/login
默认用户:root
默认密码:无
这是一个 Doris 的管理界面,只能拥有管理权限的用户才能登录,普通用户不能登录。
3.5、通过mysql客户端 连接FE(root)
3.5.1、下载mysql客户端
yum install mysql -y
3.5.2、连接
mysql -uroot -P9030 -h127.0.0.1
说明
-uroot:
1. 是内置的默认用户
2. 是超级管理员用户
-P9030:
1. 连接 Doris 的查询端口
2. 默认端口是 9030
3. 对应的是fe.conf里的 query_port
-h127.0.0.1:
1. FE的IP地址
2. 如果你忘记 root 密码,可以通过这种方式不需要密码直接连接登录,进行对 root 密码进行重置
3.5.3、查看 FE 运行状态
show frontends\G;
4、BE安装
4.1、创建数据目录
cd /home/hd/doris/be
mkdir -p ./data
4.2、修改配置
cd /home/hd/doris/be/be/conf
vim be.conf
修改内容
# 必须配置,特别是当一台机器拥有多个IP地址的时候,我们要为 BE 指定唯一的IP地址。
# 这里假设你的节点 IP 是 192.168.187.101,那么我们可以通过掩码的方式配置为 192.168.187.101/24
# 具体配置可通过 ip a 命令查到
priority_networks=192.168.187.101/24
# 添加数据目录(建议放到根目录下)
# 默认目录在 BE安装目录的 storage 目录下
# BE 配置的存储目录必须先创建好
# 如果数据目录有多个,那么使用; 分隔,比如:storage_root_path=/home/hd/doris/be/data,10;/home/hd/doris/be/data2
# 上面的10表示/home/hd/doris/be/data目录的空间最大为10G
storage_root_path=/home/hd/doris/be/data
4.4、添加 BE 节点到集群
# 连接FE
mysql -uroot -P9030 -h127.0.0.1
# 执行下面的 SQL,将 BE 添加到集群中
# ALTER SYSTEM ADD BACKEND "be_host_ip:heartbeat_service_port";
ALTER SYSTEM ADD BACKEND "192.168.187.101:9050";
说明
be_host_ip:
1. BE 的 IP 地址
2. 和你在 be.conf 里的 priority_networks 匹配
heartbeat_service_port:
1. BE 的心跳上报端口
2. 和你在 be.conf 里的 heartbeat_service_port 匹配
3. 默认是 9050。
4.3、启动
# 启动
~/doris/be/be/bin/start_be.sh --daemon
# 停止
~/doris/be/be/bin/stop_be.sh
netstat -ntlp
4.5、查看 BE 运行状态
SHOW BACKENDS\G
5、测试(可以不做)
5.1、初始化数据
5.1.1、创建库和表
-- 创建一个数据库
create database demo;
-- 创建数据表
use demo;
CREATE TABLE IF NOT EXISTS demo.expamle_tbl
(
`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"
);
5.1.2、插入数据
insert into demo.expamle_tbl values(10000,'2017-10-01','北京',20,0,'2017-10-01 06:00:00',20,10,10);
insert into demo.expamle_tbl values(10001,'2017-10-01','北京',30,1,'2017-10-01 17:05:45',2,22,22);
insert into demo.expamle_tbl values(10002,'2017-10-02','上海',20,1,'2017-10-02 12:59:12',200,5,5);
insert into demo.expamle_tbl values(10003,'2017-10-02','广州',32,0,'2017-10-02 11:20:00',30,11,11);
insert into demo.expamle_tbl values(10004,'2017-10-01','深圳',35,0,'2017-10-01 10:00:15',100,3,3);
insert into demo.expamle_tbl values(10004,'2017-10-03','深圳',35,0,'2017-10-03 10:20:22',11,6,6);
insert into demo.expamle_tbl values(10000,'2017-10-01','北京',20,0,'2017-10-01 07:00:00',15,2,2);
5.2、查询分析
根据我们自己的需求对数据进行查询分析了
select * from expamle_tbl;
select * from expamle_tbl where city='上海';
select city, sum(cost) as total_cost from expamle_tbl group by city;