doris集群物理部署保姆级教程

news2024/7/4 15:05:19

doris物理安装

1、安装要求

Linux 操作系统版本需求​
查看CentOs版本(>=7.1)
cat /etc/redhat-release
1)设置系统最大打开文件句柄数​

vi /etc/security/limits.conf

  • soft nofile 65536
  • hard nofile 65536

echo ‘’’

  • soft nofile 655360
  • hard nofile 655360
    ‘’’ >> /etc/security/limits.conf
    2)时钟同步(参考指南)​

Doris 的元数据要求时间精度要小于5000ms,所以所有集群所有机器要进行时钟同步,避免因为时钟问题引发的元数据不一致导致服务出现异常。

vi /etc/chrony.conf
3)关闭交换分区(swap)​

Linux交换分区会给Doris带来很严重的性能问题,需要在安装之前禁用交换分区。

使用不重启的方式,禁用swap,立即生效
sudo swap -a
sudo free -m
4)Liunx文件系统​

这里我们推荐使用ext4文件系统,在安装操作系统的时候,请选择ext4文件系统。

查看文件系统 xfs(Cent OS之后)
df -hT

2. 软件需求

查看GCC版本(>=4.8.2)
gcc -v
安装并查看JAVA版本(>=1.8)
rpm -qa | grep java
yum list java*
yum install java-1.8.0-openjdk.x86_64 -y
java - version
集群部署
因为我们采用集群部署,所以每台服务器都需要上传解压。

#################################################################

3、FE部署

1)拷贝 FE 部署文件到指定节点

解压压缩包
cd /data/
tar -xvf apache-doris-fe-2.0.0-alpha1-bin-x86_64.tar.xz
mv apache-doris-fe-2.0.0-alpha1-bin-x86_64 fe

2)配置FE
建元数据路径
mkdir -p /data/doris-meta

配置 FE-Config
vi fe/conf/fe.conf
取消 priority_networks 的注释,修改参数
例如当前节点的 IP 地址为 10.10.2.21,则需要更改为 10.10.2.0/24 填入
这里需要填入的是 IP 子网网段地址,并非 IP 地址
priority_networks = 10.10.2.0/24

#配置文件中指定元数据路径:
meta_dir=/data/doris-meta

保存退出

3)启动 FE​

在 FE 安装目录下执行下面的命令,来完成 FE 的启动。

./bin/start_fe.sh --daemon

查看 FE 运行状态​–等1 min后试:
curl http://127.0.0.1:8030/api/bootstrap
这里 IP 和 端口分别是 FE 的 IP 和 http_port(默认8030),如果是在 FE 节点执行,直接运行上面的命令即可。如果返回结果中带有 “msg”:“success” 字样,则说明启动成功。

4)连接 FE

通过下载免安装的 MySQL 客户端(mysql-client)来连接 Doris FE。

解压刚才下载的 MySQL 客户端,在 bin/ 目录下可以找到 mysql 命令行工具。然后执行下面的命令连接 Doris。
mysql -uroot -P9030 -h127.0.0.1
查看 FE 运行状态(如果 IsMaster、Join 和 Alive 三列均为true,则表示节点正常)
SHOW FRONTENDS\G;

5)停止FE

在 FE 安装目录下执行下面的命令,来完成 FE 的停止。

./bin/stop_fe.sh(doris的fe,be节点没有启动顺序依赖)

#################################################################

4、BE部署

1)拷贝 BE 部署文件到指定节点

解压压缩包
cd /data/
tar -xvf apache-doris-be-2.0.0-alpha1-bin-x86_64.tar.xz
mv apache-doris-be-2.0.0-alpha1-bin-x86_64 be

2)配置BE

#创建data目录
mkdir -p /data/dorisdata

配置 BE-Config
vi be/conf/be.conf
取消 priority_networks 的注释,修改参数
例如当前节点的 IP 地址为 10.10.2.21,则需要更改为 10.10.2.0/24 填入
这里需要填入的是 IP 子网网段地址,并非 IP 地址
priority_networks = 10.10.2.0/24

#配置文件中指定数据存放路径:
storage_root_path=/data/dorisdata
#更快的导入速度,默认为2
flush_thread_num_per_store=5
#修改 BE 的配置文件 be.conf 添加以下配置项,重启BE,以获得更好的查询性能
enable_storage_vectorization=true
enable_low_cardinality_optimize=true

保存退出
3)启动 BE​

在 BE 安装目录下执行下面的命令,来完成 BE 的启动。

./bin/start_be.sh --daemon
查看 BE 运行状态​
#cat ./log/be.INFO
I1025 20:59:59.367655 26241 data_dir.cpp:350] start to load tablets from /data/dorisapp/newinstall/dorisdata
I1025 20:59:59.367910 26241 data_dir.cpp:343] successfully check incompatible old format meta /data/dorisapp/newinstall/dorisdata
I1025 20:59:59.367916 26241 data_dir.cpp:361] begin loading rowset from meta

启动报错

[root@xlucas4 apache-doris-be-1.2.3-bin-x86_64-noavx2]# bin/start_be.sh --daemon
Please set vm.max_map_count to be 2000000 under root using ‘sysctl -w vm.max_map_count=2000000’.
解决方案:sysctl -w vm.max_map_count=2000000

再次启动报错

[root@xlucas2 apache-doris-be-1.2.3-bin-x86_64-noavx2]# bin/start_be.sh
Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/doris/udf/JniUtil
Caused by: java.lang.ClassNotFoundException: org.apache.doris.udf.JniUtil
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
WARNING: Logging before InitGoogleLogging() is written to STDERR
W0416 01:53:45.238514 2901 doris_main.cpp:382] Failed to initialize JNI: [INTERNAL_ERROR]Failed to find JniUtil class.
原因:安装Java UDF 函数因为从 1.2 版本开始支持 Java UDF 函数,需要从官网下载 Java UDF 函数的 JAR 包放到 BE 的 lib 目录下,否则可能会启动失败。在官网下载依赖的jar包。下载完成后拷贝到BE的lib目录下即可

将包scp到BE节点:scp ./java-udf-jar-with-dependencies.jar root@192.168.18.134:/root/doris/apache-doris-be-1.2.3-bin-x86_64-noavx2/lib

注意:如果不是安装doris-1.2.0以后的版本可以不用下载该jar包

由于端口占用修改be.conf: webserver_port = 8049 curl http://127.0.0.1:8049/api/health

curl http://127.0.0.1:8040/api/health
如果返回: {“status”: “OK”,“msg”: “To Be Added”} 则表示启动成功,其余情况,则可能存在问题。

4)停止BE

在 BE 安装目录下执行下面的命令,来完成 BE 的停止。

./bin/stop_be.sh

#################################################################

5、组建集群

(集群规模两台FE节点,一个follower,二个observer,三台BE节点,一台broker节点)
默认一个集群,只能有一个 Leader,可以有多个 Follower 和 Observer。
其中 Leader 和 Follower 组成一个 Paxos 选择组
如果 Leader 宕机,则剩下的 Follower 会自动选出新的 Leader,保证写入高可用。
Observer 同步 Leader 的数据,但是不参加选举。
如果只部署一个 FE,则 FE 默认就是 Leader
FE 节点的数量:
FE 角色分为 Follower 和 Observer,(Leader 为 Follower 组中选举出来的一种角色,以下统称 Follower)。
FE 节点数据至少为1(1 个 Follower)。当部署 1 个 Follower 和 1 个 Observer 时,可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。
Follower 的数量必须为奇数,Observer 数量随意。
根据以往经验,当集群可用性要求很高时(比如提供在线业务),可以部署 3 个 Follower 和 1-3 个 Observer。如果是离线业务,建议部署 1 个 Follower 和 1-3 个 Observer

0、配置环境变量
vim /etc/profile
#添加如下内容
echo ‘’’
export DORIS_HOME=/data/dorisapp
export PATH= P A T H : PATH: PATH:DORIS_HOME/be/apache-doris-be-2.0.0-alpha1-bin-x86_64/bin:$DORIS_HOME/fe/apache-doris-fe-2.0.0-alpha1-bin-x86_64/bin
‘’’ >> /etc/profile

source /etc/profile

1、启动FE、BE
./bin/start_fe.sh --daemon
(第一台fe什么都不需要加,后边的fe启动命令为:start_fe.sh --helper leader_fe_host:edit_log_port --daemon)
10.@@@.9 start_fe.sh --daemon (leader)

2、组群配置
在第一台启动的fe节点执行(10.@@@.9为LEADER):
mysql -uroot -P9030 -h10.@@@.9 (第一次进去不用填密码,默认密码为空,修改密码)

#修改密码
SET PASSWORD FOR ‘root’ = PASSWORD(‘123456’);

添加一个FE(FOLLOWER)节点
#添加FOLLOWER
ALTER SYSTEM ADD FOLLOWER “10.@@@.12:9010”;
#删除FOLLOWER
ALTER SYSTEM DROP FOLLOWER “10.@@@.12:9010”

添加二个FE(OBSERVER)节点
#添加OBSERVER
ALTER SYSTEM ADD OBSERVER “10.@@@.10:9010”;
ALTER SYSTEM ADD OBSERVER “10.@@@.11:9010”;
#删除OBSERVER
ALTER SYSTEM DROP OBSERVER “10.@@@.12:9010”;

添加三个BE节点
#添加be
ALTER SYSTEM ADD BACKEND “10.@@@.9:9050”;
ALTER SYSTEM ADD BACKEND “10.@@@.10:9050”;
ALTER SYSTEM ADD BACKEND “10.@@@.11:9050”;
#删除be
ALTER SYSTEM DROP BACKEND “10.@@@.12:9050”;

添加一个broker节点 (暂时没用到)
#添加broker
ALTER SYSTEM ADD BROKER broker_name “0.0.0.0:0000”;
#删除broker
ALTER SYSTEM DROP BROKER broker_name “0.0.0.0:0000”;

3、启动其余服务
10.@@@.10 start_fe.sh --helper 10.@@@.9:9010 --daemon (leader_fe_host:edit_log_port --daemon)
10.@@@.11 start_fe.sh --helper 10.@@@.9:9010 --daemon

start_be.sh --daemon (3台)

4、查看运行状态
访问doris 页面:http://10.@@@.9:8030/home

在第一台启动的fe节点执行(10.@@@.9为LEADER):
mysql -uroot -P9030 -h10.@@@.9

#查看fe
SHOW PROC ‘/frontends’;
SHOW PROC ‘/frontends’\G;
#检查fe
http://10.@@@.9:8030/api/bootstrap
curl http://127.0.0.1:8030/api/bootstrap

#查看be
SHOW PROC ‘/backends’;
SHOW PROC ‘/backends’\G;
#检查be
http://10.@@@.9:8040/api/health
http://10.@@@.10:8040/api/health
http://10.@@@.11:8040/api/health
curl http://127.0.0.1:8040/api/health

#查看broker(暂时没用到)
SHOW PROC “/brokers”;
SHOW PROC ‘/brokers’\G;

6、doris使用

验证:
两个表union,minus一个,找差异

#mysql-client连接doris
mysql -uroot -P9030 -h10.@@@.9
#修改密码
SET PASSWORD FOR ‘root’ = PASSWORD(‘123456’);
#使用密码登陆
mysql -uroot -P9030 -h10.@@@.9 -p123456
#创建一个普通用户
CREATE USER ‘dorisuser’ IDENTIFIED BY ‘123123’;
#数据库授权给用户
CREATE DATABASE dorisdb;
GRANT ALL ON dorisdb to “dorisuser”;
#使用dorisuser用户进行登录并查看数据库
mysql -udorisuser -P9030 -h10.@@@.9 -p123123
MySQL> SHOW DATABASES;

select * from (select 1 from tables union select 2 from tables) as ttt limit 1;

select * from (select TABLE_NAME from columns union all select TABLE_NAME from tables) as untable limit 10;

set enable_profile = true;

set exec_mem_limit = 8G;
set compaction_task_num_per_disk = 4;
set streaming_load_json_max_mb = 150;
set max_segment_num_per_rowset = 500;
set enable_sql_cache = true;
set enable_partition_cache = true;
set enable_pipeline_engine = true;
set parallel_fragment_exec_instance_num = 16;

调优:

############################################FE############################################
stream_load_default_timeout_second: Default stream load timeout,insert into [streaming] 失败时可以设置
sys_log_verbose_modules: 打印debug日志的模块 sys_log_verbose_module=org.apache.doris 代表全部

############################################BE############################################
mem_limit:be最多使用部署机器的内存百分比,默认80%
sys_log_verbose_module: 打印debug日志的模块 sys_log_verbose_module=*代表全部
doris_max_scan_key_num:doris会将可枚举的类型拆分查询,比如id=5 and date>=‘2019-01-01’ and date<='2019-01-31’的查询,doris会将其拆分成31个小查询分别查询[5,2019-01-01]…[5,2019-01-31],但是会有一个阈值(doris_max_scan_key_num),超过这个阈值后不再拆分,可根据业务调整

############################################variable############################################
exec_mem_limit:单条查询最多使用的be内存
query_timeout:查询超时,单位秒
time_zone:时区

1、增大内存
内存不够时, 查询可能会出现‘Memory limit exceeded’, 这是因为doris对每个用户默认设置内存限制为2g
SHOW VARIABLES LIKE “%mem_limit%”;
exec_mem_limit 的单位是 byte,可以通过 SET 命令改变 exec_mem_limit 的值。如改为 8GB。
SET exec_mem_limit = 8589934592;
上述设置仅仅在当前session有效, 如果想永久有效, 需要添加 global 参数
SET GLOBAL exec_mem_limit = 8589934592;

2、修改超时时间
doris默认最长查询时间为300s, 如果仍然未完成, 会被cancel掉
SHOW VARIABLES LIKE “%query_timeout%”;
可以修改为60s
SET query_timeout = 60;
如果需要全局生效需要添加参数 global
set global query_timeout = 60;

3、Broadcast/Shuffle Join
doris在join操作的时候时候, 默认使用broadcast的方式进行join, 即将小表通过广播的方式广播到大表所在的节点, 形成内存hash, 然后流式读出大表数据进行hashjoin
但如果小表的数据量也很大的时候, 就会造成内存溢出, 此时需要通过shuffle join的方式进行, 也被称为partition join. 即将大表小表都按照join的key进行hash, 然后进行分布式join
使用 Broadcast Join(默认)
select sum(table1.pv) from table1 join table2 where table1.siteid = 12;
显示指定braodcast
select sum(table1.pv) from table1 join [broadcast] table2 where table1.siteid = 12;
使用suffle join
select sum(table1.pv) from table1 join [shuffle] table2 where table1.siteid = 12;

9 10 11 划个300G存储,存介质

主机信息:
10.@@@.18
10.@@@.19
10.@@@.20
10.@@@.21
ocdp/Ocdp@1uC2016

fe:
10.@@@.18:8030
be :
10.@@@.18:9050
10.@@@.19:9050
10.@@@.20:9050
10.@@@.21:9050

doris 页面:
http://10.@@@.18:8030/home 用户密码: root 123456

mysql入口:
mysql -uroot -P9030 -h10.@@@.18 密码: 123456

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1886330.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高考志愿填报,AI搜索商业化的第一个金矿?

文&#xff1a;互联网江湖 作者&#xff1a;志刚 前几天高考放榜&#xff0c;很多朋友都在忙着给孩子或者亲戚家孩子报志愿&#xff0c;高考志愿咨询也火得一塌糊涂&#xff0c;张雪峰的志愿咨询产品也卖出了天价。 今年高考前夕&#xff0c;网红张雪峰旗下的“峰学蔚来”APP…

用Vue3和Plotly.js打造一个3D图在线展示

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 三维网格图的绘制 应用场景 三维网格图广泛应用于科学可视化、医学成像、工程设计等领域&#xff0c;用于展示复杂的数据结构和空间分布。 基本功能 本代码使用 Plotly.js 库创建了一个交互式三维网格图&am…

IDEA 好用的插件,必备的插件

1. GitToolBox 菜单栏显示git分支信息 2.MyBatisx 快速定位找到sql的xml文件 3.RestfulToolkit-fix 快速定位接口的插件 默认快捷键: CtrlAltN 4.EasyCamelQSM 字符串转驼峰 默认快捷键: Ctrl Alt Q 5.Maven Helper 检查maven冲突&#xff0c;图形化展示maven依赖的插…

非静压模型SWASH学习(8)——三维孤立波在锥形岛屿上的爬坡过程(Runup of solitary waves on a conical island)

三维孤立波在锥形岛屿上的爬坡过程&#xff08;Runup of solitary waves on a conical island&#xff09; 算例简介模型配置网格及参数设置网格与地形初始条件与边界条件数值求解方法输出设置模拟时间 波浪&#xff08;孤立波&#xff09;入射边界的时间序列.bnd文件模拟结果注…

调试支付分回调下载平台证书

之前的原生代码放到webman里面&#xff0c;死活跑不通 没办法&#xff0c;只能用esayWeChat6.7 &#xff08;自行下载&#xff09; 它里面配置要用到平台证书 平台证书又要用到 composer require wechatpay/wechatpay 但是请求接口之前&#xff0c;你先要用到一个临时的平台…

[Python学习篇] Python函数

定义函数 语法&#xff1a;使用关键字 def def 函数名(参数): 代码1 代码2 ...... 调用函数 语法&#xff1a; 函数名(参数) 注意&#xff1a;不同的需求&#xff0c;参数可有可无。在Python中&#xff0c;函数必须先定义后使用 示例&#xff1a; # 定义函数 d…

边缘计算网关在现代工业企业中的作用-天拓四方

随着工业4.0时代的到来&#xff0c;数字化转型已经成为工业企业发展的必然趋势。在这一过程中&#xff0c;边缘计算网关以其独特的优势&#xff0c;正逐渐成为工业企业实现智能化、高效化运营的关键技术。 边缘计算网关是一种部署在网络边缘的设备&#xff0c;它集成了计算、存…

每日一题——Python实现PAT乙级1100 校庆(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码结构和逻辑 时间复杂度分析 空间复杂度分析 总结 我要更强 方法一…

RK3568驱动指南|第十五篇 I2C-第181章使用GPIO模拟I2C驱动

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

一个能让渲染性能提高100倍的办法

GPU 光线追踪是当今的热门话题&#xff0c;所以让我们来谈谈它&#xff01;今天我们将光线追踪一个单个球体。 使用片段着色器。 是的&#xff0c;我知道。并不特别花哨。你可以在 Shadertoy 上搜索并获得数百个示例(https://www.shadertoy.com/results?querysphere)。甚至已…

速通RK3568开发板多网口网线直连测试

开源鸿蒙硬件方案领跑者 触觉智能 本文适用于在EVB3568开发板上进行多网口网线直连。触觉智能的EVB3568主板基于瑞芯微RK3568处理器&#xff0c;采用22nm先进工艺制程&#xff0c;四核A55 CPU&#xff0c;主频高达2.0GHz&#xff0c;支持高达8GB高速LPDDR4&#xff0c;1T算力N…

Linux miniconda 安装tensorflow-gpu遇到找不到GPU问题

背景&#xff1a; Linux Miniconda python3.9 安装步骤 1、 pip install tensorflow-gpu2.8.0 -i https://pypi.tuna.tsinghua.edu.cn/simple 2、报错如下&#xff1a; 更换镜像源&#xff0c;单独安装 pip install tf-estimator-nightly2.8.0.dev2021122109 -i https:/…

【C语言】typedef 关键字

在C语言中&#xff0c;typedef关键字用于给现有的数据类型起一个新的名字。它在提高代码可读性、简化复杂类型声明、增强可维护性方面非常有用。typedef通常用于定义结构体、指针、函数指针以及其他复杂类型。 基本用法 typedef int MyInt; MyInt x 10;在这个例子中&#xf…

42、nginx之nginx.conf

nginx----web服务器 一、nginx http就是apache&#xff0c;在国内很少。 nginx是开源的&#xff0c;是一款高性能&#xff0c;轻量级的web服务软件。 稳定性高&#xff0c;而且版本迭代比较快&#xff08;修复bug速度比较快&#xff0c;安全性快&#xff09; 消耗系统资源…

中日区块链“大比拼”!中国蚂蚁加大区块链押注资本!日本索尼进军加密货币市场!

科技巨头在区块链和加密货币领域的动作越来越频繁。近期&#xff0c;中国金融科技巨头蚂蚁集团进一步加大了在区块链业务上的投资&#xff0c;而日本电子科技巨头索尼集团则正式进军加密货币交易领域。这些举措反映了两国对于区块链和加密资产领域的不同态度和布局。 蚂蚁集团加…

Load Tensor to local Nvidia GPU

0. 安装Nvidia驱动 ubuntu24.04的安装非常简单&#xff0c;在安装界面&#xff0c;选择为"图形化和其他硬件安装驱动"&#xff0c;重启后即有原版Nvidia驱动(如图Nvidia X xxx) 1.确定电脑上是否有NvidiaGPU且安装好Nvidia驱动 import torch print(torch.version…

LInux SSH Server远程代码执行漏洞 (CVE-2024-6387)处理

一、漏洞描述 2024年7月1日&#xff0c;OpenSSH Server中存在的一个RCE远程代码执行漏洞&#xff08;CVE-2024-6387&#xff0c;又被称为regreSSHion&#xff09;细节被公开&#xff0c;该漏洞影响基于glibc的Linux系统上的OpenSSH Server (sshd)。 默认配置下的OpenSSH Serve…

MIX OTP——依赖项和总体项目

在本章中&#xff0c;我们将讨论如何管理 Mix 中的依赖项。 我们的 kv 应用程序已经完成&#xff0c;现在是时候实现处理我们在第一章中定义的请求的服务器了&#xff1a; 但是&#xff0c;我们不会向 kv 应用程序添加更多代码&#xff0c;而是将 TCP 服务器构建为另一个应用程…

Linux系统之安装Firefox浏览器

Linux系统之安装Firefox浏览器 一、Firefox浏览器介绍1.1 Firefox浏览器介绍1.2 Firefox浏览器特点 二、环境介绍二、本次实践环境介绍2.1 环境规划2.2 本次实践介绍 三、安装firefox浏览器3.1 安装epel3.2 检查yum仓库状态3.3 安装Firefox浏览器3.4 查看Firefox版本 四、在命令…

win11电源设置

把钩子去掉以后 win11的电脑关机才有用 否则&#xff0c;关机了&#xff0c;电脑也实际上一直在运行