单节点部署doris 安装记录
1台机器,1个FE 1个BE
doris架构说明
Doris整体架构如下图所示,Doris 架构非常简单,只有两类进程
- Frontend(FE),主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。
- Backend(BE),主要负责数据存储、查询计划的执行。
这两类进程都是可以横向扩展的,单集群可以支持到数百台机器,数十 PB 的存储容量。并且这两类进程通过一致性协议来保证服务的高可用和数据的高可靠。这种高度集成的架构设计极大的降低了一款分布式系统的运维成本。
开始安装
下载安装包
1、前往官网: Download - Apache Doris
2、选择 no avx2 版本下载,如图。 (部分旧机器 cpu不支持 avx指令会导致BE启动报错)
"X64 (no AVX2)" 是一个处理器架构的描述,涉及到计算机的硬件特性。让我解释一下其中的术语:
- X64:这是一种处理器架构,也被称为x86-64或AMD64。它是现代计算机中广泛使用的一种架构,用于处理器和操作系统。X64处理器支持64位指令集和寻址空间,允许处理更大的内存范围和处理更复杂的数据。
- AVX2:这是“Advanced Vector Extensions 2”的缩写,是一组处理器指令,用于执行并行浮点运算和矢量化计算。AVX2指令集扩展了处理器的能力,特别是在涉及大规模数据并行处理时,可以显著提高性能。
"X64 (no AVX2)" 意味着该处理器采用了X64架构,但不支持AVX2指令集。这可能是由于一些旧的或较低成本的处理器不支持最新的AVX2指令集。缺少AVX2支持可能会影响某些需要并行浮点计算的任务的性能。
3、传包到主机,解压。
# 传包到 /data/doris
$ cd /data/doris
# 解压 tar.xz 得到tar包
$ xz -d apache-doris-1.2.6-bin-x64-noavx2.tar.xz
# 解压 tar 包 同时创建 doris-meta 和 storage,这两个文件夹后续将分别用于FE和BE的配置。
$ tar -xvf apache-doris-1.2.6-bin-x64-noavx2.tar && mkdir doris-meta && mkdir storage
4、修改配置 FE 和 BE
# 修改 FE 配置
$ vi /data/doris/apache-doris-1.2.6-bin-x64-noavx2/fe/conf/fe.conf
########### 修改第一项 meta_dir 改为如下值。 ###########
meta_dir = /data/doris/doris-meta
########### 修改第二项 priority_networks 改为如下值 ###########
priority_networks = 172.16.10.240/24;
# 修改 BE 配置
$ vi /data/doris/apache-doris-1.2.6-bin-x64-noavx2/be/conf/be.conf
########### 修改第一项 priority_networks 改为如下值。 ###########
storage_root_path = /data/doris/storage
########### 修改第二项 priority_networks 改为如下值。 ###########
priority_networks = 172.16.10.240/24
# 增加 BE 的一些额外配置
# 日志配置
sys_log_dir = ${DORIS_HOME}/log
sys_log_roll_mode = SIZE-MB-1024
sys_log_roll_num = 1
# 回收站清理间隔 24h
trash_file_expire_time_sec = 86400
启动 FE(Frontend)
# 启动fe
$ cd /data/doris/apache-doris-1.2.6-bin-x64-noavx2/fe/bin
# 后台启动
$ ./start_fe.sh --daemon
# 查看启动日志
$ tail -f fe.log -n 199
当看到如下日志时启动成功。
1、进入fe
-- 进入fe
$ mysql -uroot -P9030 -h127.0.0.1
-- 查看FE运行状态 如果 IsMaster、Join 和 Alive 三列均为true,则表示节点正常。
mysql> show frontends\G;
*************************** 1. row ***************************
Name: 172.21.32.5_9010_1660549353220
IP: 172.21.32.5
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
IsMaster: true
ClusterId: 1685821635
Join: true
Alive: true
ReplayedJournalId: 49292
LastHeartbeat: 2022-08-17 13:00:45
IsHelper: true
ErrMsg:
Version: 1.1.2-rc03-ca55ac2
CurrentConnected: Yes
1 row in set (0.03 sec)
2、停止fe
# 停止 fe
$ ./stop_fe.sh
启动BE(Backend)
# 启动be
$ cd /data/doris/apache-doris-1.2.6-bin-x64-noavx2/be/bin
# 后台启动
$ ./start_be.sh --daemon
# 查看启动日志
$ tail -f be.log -n 199
1、添加be节点到集群
-- 进入fe
$ mysql -uroot -P9030 -h127.0.0.1
-- 添加be到集群
-- be_host_ip:这里是你 BE 的 IP 地址,和你在 be.conf 里的 priority_networks 匹配
-- heartbeat_service_port:这里是你 BE 的心跳上报端口,和你在 be.conf 里的 heartbeat_service_port 匹配,默认是 9050。
mysql> ALTER SYSTEM ADD BACKEND "be_host_ip:heartbeat_service_port";
-- 查看be状态 Alive : true表示节点运行正常
mysql> SHOW BACKENDS\G
*************************** 1. row ***************************
BackendId: 10003
Cluster: default_cluster
IP: 172.21.32.5
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2022-08-16 15:31:37
LastHeartbeat: 2022-08-17 13:33:17
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 170
DataUsedCapacity: 985.787 KB
AvailCapacity: 782.729 GB
TotalCapacity: 984.180 GB
UsedPct: 20.47 %
MaxDiskUsedPct: 20.47 %
Tag: {"location" : "default"}
ErrMsg:
Version: 1.1.2-rc03-ca55ac2
Status: {"lastSuccessReportTabletsTime":"2022-08-17 13:33:05","lastStreamLoadTime":-1,"isQueryDisabled":false,"isLoadDisabled":false}
1 row in set (0.01 sec)
2、停止be
# 停止 be
$ ./stop_be.sh
访问管理控制台
http://172.16.10.240:8030/login
root / DQx!wBdV#7 (注意默认密码是空,直接输入root即可登录)
登录成功后可看到如下界面,后面可以使用 navicat 连接。
一些常用SQL操作
-- 修改用户密码
SET PASSWORD FOR 'root' = PASSWORD('DQx!wBdV#7');
-- 创建一个用户
CREATE USER 'admin' IDENTIFIED BY 'DQx!wBdV#7';
-- 创建完成后可以通过如下命令进行登录
mysql -h FE_HOST -P9030 -uadmin -pDQx!wBdV#7
-- 对用户进行授权
GRANT ALL ON example_db TO your_username;
-- 创建数据库
create database demo;
-- 创建数据表
CREATE TABLE IF NOT EXISTS demo.example_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"
);
可能遇到的问题:
①出现 open files 太小的异常。
执行 ulimit -a 65535 修正最大打开限制即可。
或者永久修改:
$ vim /etc/profile
// 在文件末尾加入
ulimit –n 65535
$ source /etc/profile
②timeout RPC异常
解决思路是,用mysql登录到fe中,执行如下sql修改超时时间。
mysql -uroot -P9030 -h127.0.0.1
SHOW VARIABLES LIKE “%query_timeout%”;
SET query_timeout = 10000;
③Failed to initialize JNI: Failed to find the library libjvm.so.
安装新版doris 1.2.0版本后 启动BE节点失败,报错如下:
W1212 05:39:14.999809 117327 doris_main.cpp:382] Failed to initialize JNI: Failed to find the library libjvm.so.
原因是:最新版有个除了BE和FE安装节点外,还有个apache-doris-java-udf-jar-with-dependencies-1.2.0-bin-x86_64.tar.xz文件,需要将这个文件中的jar包解压出来放到BE的lib路径下才能启动BE节点。
④文件最大句柄数太小
解除文件句柄数限制
# 1 编辑系统安全限制配置
vi /etc/security/limits.conf
# 文件末尾添加两行
* soft nofile 204800
* hard nofile 204800
* soft nproc 204800
* hard nproc 204800
# 2 修改/etc/sysctl.conf配置,加入此配置
echo fs.file-max = 6553560 >> /etc/sysctl.conf
# 3 查看是否成功
cat /etc/security/limits.conf
cat /etc/sysctl.conf