Doris-1.2.0安装部署详细流程

news2025/1/8 5:03:30

doris介绍

Doris是一个MPP的OLAP系统,以较低的成本提供在大数据集上的高性能分析和报表查询功能。
MPP (Massively Parallel Processing),即大规模并行处理。简单来说,MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到终的结果(与Hadoop相似)。
Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 能够较好的满足报表分析、即席查询、统一数仓构建、数据湖联邦查询加速等使用场景,用户可以在此之上构建用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。

doris 使用场景

如下图所示,数据源经过各种数据集成和加工处理后,通常会入库到实时数仓 Doris 和离线湖仓(Hive, Iceberg, Hudi 中),Apache Doris 被广泛应用在以下场景中。
在这里插入图片描述

  1. 报表分析
    ① 实时看板 (Dashboards)
    ② 面向企业内部分析师和管理者的报表
    ③ 面向用户或者客户的高并发报表分析(Customer Facing Analytics)。比如面向网站主的站点分析、面向广告主的广告报表,并发通常要求成千上万的 QPS,查询延时要求毫秒级响应。著名的电商公司京东在广告报表中使用 Apache Doris ,每天写入 100 亿行数据,查询并发 QPS上万,99 分位的查询延时 150ms。

  2. 即席查询(Ad-hoc Query)
    面向分析师的自助分析,查询模式不固定,要求较高的吞吐。小米公司基于 Doris 构建了增长分析平台(Growing
    Analytics,GA),利用用户行为数据对业务进行增长分析,平均查询延时 10s,95 分位的查询延时 30s 以内,每天的 SQL
    查询量为数万条。

  3. 统一数仓构建
    一个平台满足统一的数据仓库建设需求,简化繁琐的大数据软件栈。海底捞基于 Doris 构建的统一数仓,替换了原来由
    Spark、Hive、Kudu、Hbase、Phoenix 组成的旧架构,架构大大简化。

  4. 数据湖联邦查询
    通过外表的方式联邦分析位于Hive、Iceberg、Hudi 中的数据,在避免数据拷贝的前提下,查询性能大幅提升。

doris架构

Doris整体架构如下图所示,Doris 架构非常简单,只有两类进程

Frontend(FE),主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。

Backend(BE),主要负责数据存储、查询计划的执行。

这两类进程都是可以横向扩展的,单集群可以支持到数百台机器,数十 PB 的存储容量。并且这两类进程通过一致性协议来保证服务的高可用和数据的高可靠。这种高度集成的架构设计极大的降低了一款分布式系统的运维成本。
在这里插入图片描述

1 整体部署架构

节点角色
192.x.x.31FE
192.x.x.32BE
192.x.x.33BE
192.x.x.34BE
192.x.x.35BE

2 前期准备

1)Doris 运行在 Linux 环境中,推荐 CentOS 7.x 或者 Ubuntu 16.04 以上版本
2)JDK最低版本要求是8
3)GCC版本4.8.2+
GCC版本可以通过如下命令查看:

gcc -v

在这里插入图片描述
4)设置最大打开文件句柄数 – 集群所有节点均需操作

vi /etc/security/limits.conf 
* soft nofile 65536
* hard nofile 65536

5) 时钟同步

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

6)关闭交换分区(swap)-- 集群所有节点均需操作

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

① 执行如下命令

swapoff /mnt/swap

② 删除 /mnt/swap swap swap defaults 0 0 这一行或者注释掉这一行

vim /etc/fstab

③ 确认swap是否关闭

free -mh

如果swap行值都为0,则表示关闭成功
在这里插入图片描述
调整 swappiness 参数

# 临时生效
echo 0 > /proc/sys/vm/swappiness   
 # 永久生效
vim /etc/sysctl.conf                          
# 修改 vm.swappiness 的修改为 0
vm.swappiness=0
# 使配置生效
sysctl -p                                          

在这里插入图片描述
7) Liunx文件系统

doris推荐使用ext4文件系统,在安装操作系统的时候,请选择ext4文件系统

  1. 需要安装mysql客户端用与访问和连接doris
  2. 下载doris版本:

https://archive.apache.org/dist/doris/

注:这里需要根据当前安装环境是否支持 avx2指令,选择对应的下载版本。查看当前环境是否支持 avx2命令

cat /proc/cpuinfo |grep flags

发现没有avx2则说明不支持该指令
在这里插入图片描述
不支持avx2指令时选择的安装包应选择带有noavx2字段的安装包,如:
在这里插入图片描述
这里的x86和arm指的是CPU的架构,根据服务器的情况选择,大多数情况下是x86的架构。

3 安装部署注意事项

3.1 FE

① FE 的磁盘空间主要用于存储元数据,包括日志和 image。通常从几百 MB 到几个 GB 不等。
② BE> 的磁盘空间主要用于存放用户数据,总磁盘空间按用户总数据量 * 3(3副本)计算,然后再预留额外 40% 的空间用作后台 compaction> 以及一些中间数据的存放。
③ 一台机器上可以部署多个 BE 实例,但是只能部署一个 FE。如果需要 3 副本数据,那么至少需要 3
台机器各部署一个 BE 实例(而不是1台机器部署3个BE实例)。多个FE所在服务器的时钟必须保持一致(允许最多5秒的时钟偏差)
④ 测试环境也可以仅适用一个 BE 进行测试。实际生产环境,BE 实例数量直接决定了整体查询延迟。 所有部署节点关闭 Swap。

3.2 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。

3.3 Broker 部署

Broker 是用于访问外部数据源(如 hdfs)的进程。通常,在每台机器上部署一个 broker 实例即可

3.4 网络要求

Doris 各个实例直接通过网络进行通讯。以下表格展示了所有需要的端口
在这里插入图片描述
注:

① 当部署多个 FE 实例时,要保证 FE 的 http_port 配置相同。
② 部署前请确保各个端口在应有方向上的访问权限。

4 安装部署Doris

4.1 解压

tar -xvf apache-doris-be-1.2.0-bin-x86_64-noavx2.tar.xz
tar -xvf apache-doris-fe-1.2.0-bin-x86_64.tar.xz

4.2 修改配置文件

cd apache-doris-x.x.x/fe

修改 FE 配置文件 conf/fe.conf ,这里我们主要修改两个参数:priority_networks 及 meta_dir
在这里插入图片描述

4.2.1 添加priority_networks 参数

priority_networks=172.23.16.0/24

注意:
这个参数我们在安装的时候是必须要配置的,特别是当一台机器拥有多个IP地址的时候,我们要为 FE 指定唯一的IP地址。
这里假设你的节点 IP 是 172.23.16.32,那么我们可以通过掩码的方式配置为 172.23.16.0/24。

4.3 启动FE

bin/start_fe.sh --daemon

查看日志,可看到如下内容,说明FE已经启动成功
在这里插入图片描述

4.4 设置BE

需要安装BE的节点,将BE的安装包拷贝到节点上

4.4.1 修改BE配置文件

修改 be/conf/be.conf。主要是配置 storage_root_path:数据存放目录。默认在be/storage下,需要手动创建该目录。多个路径之间使用英文状态的分号 ; 分隔(最后一个目录后不要加 ‘;’)
在这里插入图片描述

4.5 FE节点启动mysql客户端

附加:mysql客户端安装方式

首先,获取rpm包:

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 -ivh mysql-community-common-8.0.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.25-1.el7.x86_64.rpm

mysql -h fe_host -P query_port -uroot

fe_host为FE节点
query_port为在FE节点conf/fe.conf中设置的端口号

mysql -h 192.x.x.31 -P 9030 -uroot

在这里插入图片描述
登录后,执行以下命令来添加每一个 BE:

ALTER SYSTEM ADD BACKEND "be_host:heartbeat-service_port";

其中 be_host 为 BE 所在节点 ip;heartbeat_service_port 在 be/conf/be.conf 中。
在这里插入图片描述

4.6 在BE节点启动BE

bin/start_be.sh --daemon

启动报错如下
在这里插入图片描述
在每个BE节点执行

sysctl -w vm.max_map_count=2000000

再次启动报错如下:
在这里插入图片描述
原因:安装Java UDF 函数因为从 1.2 版本开始支持 Java UDF 函数,需要从官网下载 Java UDF 函数的 JAR 包放到 BE 的 lib 目录下,否则可能会启动失败。在官网下载依赖的jar包。下载完成后拷贝到BE的lib目录下即可
在这里插入图片描述
注意:如果不是安装doris-1.2.0以后的版本可以不用下载该jar包

再次启动BE,看到如下内容,说明启动正常
在这里插入图片描述
注意:如果 be 部署在 hadoop 集群中,注意调整 be.conf 中的 webserver_port = 8040 (hadoop集群中,nodemanager进程默认使用的是8040端口号),以免造成端口冲突。否则会报如下错误:
在这里插入图片描述

4.7 查看BE状态

方式一:使用 mysql-client 连接到 FE,并执行

SHOW PROC '/backends';

查看 BE 运行情况。如一切正常,isAlive 列应为 true
在这里插入图片描述
方式二:访问url

http://be_host:be_http_port/api/health

be_host FE节点ip
be_http_port FE安装节点conf/fe.conf中配置的端口
返回如下页面说明FE状态正常
在这里插入图片描述

4.8 查看FE状态是否正常

方法一:访问url

http://fe_host:fe_http_port/api/bootstrap

fe_host FE节点ip
fe_http_port FE安装节点conf/fe.conf中配置的端口
返回如下页面说明FE状态正常
在这里插入图片描述
方式二:查看FE端日志
最终会看到 thrift server started 日志,并且可以通过 mysql 客户端连接到 FE,则表示 FE 启动成功。

4.9 mysql客户端检查

4.9.1 检查FE

show frontends\G;

在这里插入图片描述

4.9.2 检查BE

SHOW BACKENDS\G;

在这里插入图片描述

4.10 WEBUI

直接在浏览器输入

http://fe_host:fe_http_port

在这里插入图片描述

用户名默认为root,没有密码,点击登录,可以看到如下页面
在这里插入图片描述

5 doris使用示例

5.1 创建一个数据库

create database demo;

5.2 创建数据库表

use 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"
);

在这里插入图片描述

5.3 示例数据

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

将上面的数据保存在test.csv文件中。

5.4 导入数据

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

curl  --location-trusted -u root: -T test.csv -H "column_separator:," http://127.0.0.1:8030/api/demo/example_tbl/_stream_load

-T test.csv : 这里使我们刚才保存的数据文件,如果路径不一样,请指定完整路径
-u root : 这里是用户名密码,我们使用默认用户root,密码是空
127.0.0.1:8030 : 分别是 fe 的 ip 和 http_port

执行成功之后我们可以看到下面的返回信息
在这里插入图片描述

NumberLoadedRows: 表示已经导入的数据记录数
NumberTotalRows: 表示要导入的总数据量 Status
Success 表示导入成功

到这里我们已经完成的数据导入,下面就可以根据我们自己的需求对数据进行查询分析了

5.5 查询数据

进入doris页面,执行sql

select * from example_tbl;

在这里插入图片描述

select * from example_tbl where city='北京';

在这里插入图片描述

select date, sum(cost) as total_cost from example_tbl group by date;

在这里插入图片描述

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

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

相关文章

Power BI中创建父子层级二:父级单独产生值

一、父子层级 在数据分析中,经常会遇到父子层级问题,通常来说,父子层级又可以分为两种情况,一种为图1,江苏中烟的销量就是南京品牌和苏烟品牌的销量之和,南京品牌的销量就是南京(硬红&#xff…

cocos开发微信小游戏ci机器人实践

1.cocos使用命令行发布微信小游戏项目 1.1 先编辑微信小游戏构建发布配置,然后导出配置,会生成一个buildConfig_wechatgame.json的配置文件 1.2 使用命令行构建微信小游戏项目 D:\CocosDashboard\resources.editors\Creator\3.4.2\CocosCreator.exe --…

硅烷试剂1873-77-4_Tris(trimethylsilyl)silane_三(三甲基硅基)硅烷

●中文名:三(三甲基硅基)硅烷,三(三甲硅基)硅烷●英文名:TRIS(TRIMETHYLSILYL)SILANE,Tris(trimethylsilyl)Silane,Tris(trimethylsilyl)silaneTris(trimethylsilyl)silane中含有硅烷基&#xf…

JavaScript 中清空数组的几种方法

目录 Array.prototype.splice() 将 length 设置为 0 分配新的空数组 length 0和 Array [] 之间的差异? JavaScript 中清空数组的几种方法多少人都想走出浪浪山 🧨🧨🧨 Array.prototype.splice() let course [HTML, CSS, Java…

第四章.神经网络—线性神经网络,Delta学习规则

第四章.神经网络 4.2 线性神经网络与Delta学习规则 线性神经网络在结构上与感知器非常相似,只是激活函数不同。在模型训练时把原来的sign函数改成purelin函数:y x 1.激活函数 2.线性神经网络示例 1).题目: 假设平面坐标系上有四个点,(3,3)…

基于python的二手房数据分析,思路+代码范例

本篇博客将基于 Python ,梳理二手房数据分析的整体过程。 文章目录思路整理数据分析步骤的示例代码基于 Python 的二手房分析 | 另一种代码思路整理 数据收集:从网站或其他数据源收集二手房数据,并将其存储在 CSV 或其他数据格式中。数据清洗…

Python连接Liunx中mysql数据库-多表查询【10个经典案例】

关于Python连接liunx中mysql数据库的方式在这一篇文章 Python连接Liunx中mysql数据库-保姆级教程 关于Python针对liunx中的mysql数据库进行增删改查操作的文章在这一篇可以看一下 Python连接Liunx中mysql数据库-增删改查 对于单表查询的学习可以看这一篇文章 Python对liunx中my…

帆软FineReport 实现省市区树形联动

在项目数据展示中,涉及到行政区划,省市区三级联动,运用帆软FineReport该如何实现,记录下来,方便备查。 第一步、树形数据准备 行政区划主要分为三级,即省市区,特殊的包含四个直辖市&#xff0…

【人机交互】COMP5517 HCI 课程笔记

人机交互Class 1: Overview of Human Computer Interaction人机交互的目标What does HCI involveClass 1 ContentImportance of HCISteps of HCISome HCI ProductsClass 1: Overview of Human Computer Interaction 人机交互的目标 Methods for grounding the design in real…

Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jan 2023)

Windows 11, version 22H2,2023 年 1 月 更新,持续更新中… 请访问原文链接:https://sysin.org/blog/windows-11/,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org 最新发布 &#x1f449…

分布式session

目录 1.什么是session 2.session共享问题 2.1.session复制同步 2.2.存在客户端 2.3.一致性hash 2.4.统一存储 1.什么是session HTTP是无状态的,session是一种会话保持技术,目的就是以一种方式来记录http请求之间需要传递、交互的数据。 不是每次…

vite配置CDN和文件压缩

例子,vue3导入element-plus 打包大小 1.加载插件cdn-import yarn add vite-plugin-cdn-import -D 2.配置vite vite.config.js import { defineConfig } from "vite"; import vue from "vitejs/plugin-vue"; import { autoComplete, Plugin as importTo…

PPI数据集示例项目学习图神经网络

目录PPI数据集:算法原理:代码实现:训练过程PPI数据集: 参考:https://blog.csdn.net/weixin_43580130/article/details/116449062 PPI(生物化学结构) 网络是蛋白质相互作用(Protein-Protein Interaction,P…

若依配置教程(四)代码生成

文章目录一、在数据库中新建表(代码生成的数据表)二、打开若依系统,进入代码生成界面三、编辑字段和基本信息四、解压文件夹,放到相关目录一、在数据库中新建表(代码生成的数据表) 建议在表中必须加的字段…

通信原理笔记—脉冲编码调制(PCM)

目录 脉冲编码调制(PCM): PCM概念: A、μ律的PCM编码: A律对数压缩特性的十三折线法近似: A律正输入值编码表: A、μ率的PCM编码方法: A 率的PCM译码方法: 脉冲编码调制(PCM):…

VUE 中项目启动没有问题,代码中 script 标签有蓝色波浪线标注

项目场景: VUE 中项目启动没有问题,代码中 script 标签有蓝色波浪线标注: 并且有相关的 提示信息 Virtual script not found, may missing <script lang“ts“> / “allowJs“: true / jsconfig.json.volar 问题描述…

ESP32设备驱动-Si7021温度传感器驱动

Si7021温度传感器驱动 文章目录 Si7021温度传感器驱动1、Si7021介绍2、硬件准备3、软件准备4、驱动实现1、Si7021介绍 Si7021 I2C 湿度和温度传感器是一款集成了湿度和温度传感器元件、模数转换器、信号处理、校准数据和 I2C 接口的单片 CMOS IC。 Si7021 提供精确、低功耗、工…

Springboot美容院管理系统 java idea mysql

config:主要用来存储配置文件,以及其他不怎么动用的信息 controller:项目的主要控制文件 dao: 主要用来操作数据库 entity: 实体,用来放与数据库表里对应的实体类,表中的字段对应类中的属性值,并…

【10w字】超详细【百分百拿offer】的面试教程,集合5000多家软件测试公司面试题。

一、引言 1.1 文档目的 【百分百解决在面试中遇到的些问题】 1.2 背景 此文档历经1年的时间,基本概括了深圳与广州,上干家公司的面试问题并结合基本盖了,95%以上的面试问题,文章内容比较多耐心看完必能拿下心仪的offer。在这里…

webpack 配置时包与包版本不对应导致无法启动项目

经常在配置 webpack 时因不指定具体版本导致 npm 下载下来的依赖之间互相不对应。 (简述:webpack 配置时包与包的版本对应问题,报错了去 npm 找包,链接到 github 上查看 package.json 的 peerDependencies 依赖) 例如&…