Apache Doris单机快速安装(已踩坑)

官方文档:https://doris.incubator.apache.org/zh-CN/docs/get-starting/quick-start/
环境:

操作系统:CentOS7.6 X86_64

JDK:Oracle jdk1.8.0_351

1.版本下载

doris.apache.org 下载相应的 Doris 安装包,并且解压。

powershell 复制代码
# 下载 Doris 二进制安装包
wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.0.3-bin-x64.tar.gz

# 解压安装包
tar zxf apache-doris-2.0.3-bin-x64.tar.gz

# 目录重命名为更为简单的 apache-doris 
mv apache-doris-2.0.3-bin-x64 apache-doris

2.安装前操作系统配置

2.1 关闭防火墙

powershell 复制代码
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service

2.2 设置系统最大打开文件句柄数(重启操作系统生效)

powershell 复制代码
vi /etc/security/limits.conf 
* soft nofile 1000000
* hard nofile 1000000

2.3 配置max_map_count

powershell 复制代码
编辑/etc/sysctl.conf
vm.max_map_count=2000000
使更改生效:sudo sysctl -p

2.4 关闭透明大页(会永久生效)

powershell 复制代码
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

2.5 关闭swap分区

powershell 复制代码
临时关闭:swapoff -a
永久关闭:使用 Linux root 账户,注释掉 /etc/fstab 中的 swap 分区,然后重启即可彻底关闭 swap 分区。

2.5 安装JDK

https://blog.csdn.net/taotao_guiwang/article/details/139624776

2.6 安装MySQL客户端

https://download.csdn.net/download/taotao_guiwang/89427702

3.安装

3.1 配置FE

FE 的配置文件为 apache-doris/fe/conf/fe.conf。下面是一些需要关注的核心配置。除了 JAVA_HOME, 需要手动增加,并且指向你的 JDK8 运行环境。其它配置,可以使用默认值,即可支持单机快速体验。

powershell 复制代码
# 增加 JAVA_HOME 配置,指向 JDK8 的运行环境。假如我们 JDK8 位于 /home/doris/jdk8, 则设置如下
JAVA_HOME=/home/doris/jdk8

# FE 监听 IP 的 CIDR 网段。默认设置为空,有 Doris 启动时自动选择一个可用网段。如有多个网段,需要指定一个网段,可以类似设置 priority_networks=92.168.0.0/24
# priority_networks =

# FE 元数据存放的目录,默认是在 DORIS_HOME 下的 doris-meta 目录。已经创建,可以更改为你的元数据存储路径。
# meta_dir = ${DORIS_HOME}/doris-meta

3.2 启动FE

在 apache-doris/fe 下,运行下面命令启动 FE。

powershell 复制代码
# 将 FE 启动成后台运行模式,这样确保退出终端后,进程依旧运行。
/PATH/apache-doris/fe/bin/start_fe.sh --daemon

3.3 配置BE

BE 的配置文件为 apache-doris/be/conf/be.conf。下面是一些需要关注的核心配置。除了 JAVA_HOME, 需要手动增加,并且指向你的 JDK8 运行环境。其它配置,可以使用默认值,即可支持我们的快速体验。

powershell 复制代码
# 增加 JAVA_HOME 配置,指向 JDK8 的运行环境。假如我们 JDK8 位于 /home/doris/jdk8, 则设置如下
JAVA_HOME=/home/doris/jdk8

# BE 监听 IP 的 CIDR 网段。默认设置为空,有 Doris 启动时自动选择一个可用网段。如有多个网段,需要指定一个网段,可以类似设置 priority_networks=192.168.0.0/24
# priority_networks =

# BE 数据存放的目录,默认是在 DORIS_HOME 下的 storage 下,默认已经创建,可以更改为你的数据存储路径
# storage_root_path = ${DORIS_HOME}/storage

3.4 启动BE

在 apache-doris/be 下,运行下面命令启动 BE。

powershell 复制代码
/PATH/apache-doris/be/bin/start_be.sh --daemon

4.使用

4.1 连接 Doris FE

powershell 复制代码
mysql -uroot -P9030 -h127.0.0.1

注意:

这里使用的 root 用户是 Doris 内置的超级管理员用户,具体的用户权限查看 认证和鉴权

-P:这里是我们连接 Doris 的查询端口,默认端口是 9030,对应的是 fe.conf 里的 query_port

-h:这里是我们连接的 FE IP 地址,如果你的客户端和 FE 安装在同一个节点可以使用 127.0.0.1。

4.2 将 BE 节点添加到集群

在 MySQL 客户端执行类似下面的 SQL,将 BE 添加到集群中

powershell 复制代码
 ALTER SYSTEM ADD BACKEND "be_host_ip:heartbeat_service_port";

注意:

be_host_ip:要添加 BE 的 IP 地址

heartbeat_service_port:要添加 BE 的心跳上报端口,可以查看 be.conf 里的 heartbeat_service_port,默认是 9050。

通过 show backends 语句可以查看新添加的 BE 节点。

4.3 修改 root 和 admin 的密码

在 MySQL 客户端,执行类似下面的 SQL,为 root 和 admin 用户设置新密码

powershell 复制代码
mysql> SET PASSWORD FOR 'root' = PASSWORD('doris-root-password');                                                                                                                                                                                   
Query OK, 0 rows affected (0.01 sec)                                                                                                                                                                                                       
                                                                                                                                                                                                                                           
mysql> SET PASSWORD FOR 'admin' = PASSWORD('doris-admin-password');                                                                                                                                                                                 
Query OK, 0 rows affected (0.00 sec)        

提示:

root 和 admin 用户的区别:

root 和 admin 用户都属于 Doris 安装完默认存在的 2 个账户。其中 root 拥有整个集群的超级权限,可以对集群完成各种管理操作,比如添加节点,去除节点。admin 用户没有管理权限,是集群中的 Superuser,拥有除集群管理相关以外的所有权限。建议只有在需要对集群进行运维管理超级权限时才使用 root 权限。

5.建库建表

5.1 连接 Doris

使用 admin 账户连接 Doris FE。

powershell 复制代码
mysql -uadmin -P9030 -h127.0.0.1

提示:果是在 FE 的同一台机器上的 MySQL 客户端连接 127.0.0.1, 不需要输入密码。

5.2 创建数据库和数据表

sql 复制代码
create database demo;

use demo; 
create table mytable
(
    k1 TINYINT,
    k2 DECIMAL(10, 2) DEFAULT "10.05",    
    k3 CHAR(10) COMMENT "string column",    
    k4 INT NOT NULL DEFAULT "1" COMMENT "int column"
) 
COMMENT "my first table"
DISTRIBUTED BY HASH(k1) BUCKETS 1
PROPERTIES ('replication_num' = '1');

5.3 导入数据

将以下示例数据,保存在本地的 data.csv:

powershell 复制代码
1,0.14,a1,20
2,1.04,b2,21
3,3.14,c3,22
4,4.35,d4,23

通过 Stream Load 方式将上面保存到文件中的数据导入到刚才创建的表里。

powershell 复制代码
curl  --location-trusted -u admin:admin_password -T data.csv -H "column_separator:," http://127.0.0.1:8030/api/demo/mytable/_stream_load

-T data.csv : 要导入的数据文件名

-u admin:admin_password: admin 账户与密码

127.0.0.1:8030 : 分别是 FE 的 IP 和 http_port

执行成功之后我们可以看到下面的返回信息:

powershell 复制代码
{                                                     
    "TxnId": 30,                                  
    "Label": "a56d2861-303a-4b50-9907-238fea904363",        
    "Comment": "",                                       
    "TwoPhaseCommit": "false",                           
    "Status": "Success",                                 
    "Message": "OK",                                    
    "NumberTotalRows": 4,                                
    "NumberLoadedRows": 4,                               
    "NumberFilteredRows": 0,                             
    "NumberUnselectedRows": 0,                          
    "LoadBytes": 52,                                     
    "LoadTimeMs": 206,                                    
    "BeginTxnTimeMs": 13,                                
    "StreamLoadPutTimeMs": 141,                           
    "ReadDataTimeMs": 0,                                 
    "WriteDataTimeMs": 7,                                
    "CommitAndPublishTimeMs": 42                         
} 

NumberLoadedRows: 表示已经导入的数据记录数

NumberTotalRows: 表示要导入的总数据量

Status: Success 表示导入成功

5.4查询数据

在 MySQL 客户端中,执行如下 SQL,可以查询到刚才导入的数据:

sql 复制代码
select * from mytable;

6.停止Doris

6.1 停止 FE

powershell 复制代码
./bin/stop_fe.sh

6.2 停止 BE

powershell 复制代码
./bin/stop_be.sh
相关推荐
IT云清5 小时前
Apache Seata透过源码解决SeataAT模式整合Mybatis-Plus失去MP特性的问题
apache·mybatis
IT云清8 小时前
Apache Seata应用侧启动过程剖析——注册中心与配置中心模块
中间件·apache·seata·分布式事务
Roc-xb8 小时前
Eclipse配置Tomcat时无Apache选项问题
java·eclipse·tomcat·apache
acro_099 小时前
基于python 的动态虚拟主机
运维·服务器·云原生·apache
IT云清10 小时前
Apache Seata Mac下的Seata Demo环境搭建
分布式·macos·apache·seata·分布式事务
阳爱铭11 小时前
深度分析:Maven在软件构建管理中的地位与选型指南
java·后端·架构·maven·apache·intellij-idea·软件构建
众森企服13 小时前
抖音微短剧小程序入驻指南
小程序·apache
acro_0918 小时前
设置单实例Apache HTTP服务器
运维·服务器·http·云原生·apache
acro_0920 小时前
在Apache HTTP服务器上配置 TLS加密
运维·服务器·http·云原生·apache
小强签名设计1 天前
Apache Commons 读写 CSV 文件
apache