一.海量数据实时分析-Doris入门和安装

前言

停了一个月又开始写文章啦,因为公司数据量达到了几十亿,老板需要做实时数据分析,报表看板。这么大的数据量比较好的选择是使用Doris来做,他可以脱离hadoop生态独立使用所以大受企业喜爱,也因为如此就有了这个系列的文章,喜欢的话好评点赞。

认识Doris

1.什么是Doris

Apache Doris 由百度大数据部研发(之前叫百度 Palo,2018 年贡献到 Apache 社区后,更名为 Doris ),在百度内部,有超过 200 个产品线在使用,部署机器超过 1000 台,单一业务最大可达到上百 TB。
Apache Doris 是一个现代化的 MPP(Massively Parallel Processing,即大规模并行处理)分析型数据库产品。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。Apache Doris 的分布式架构非常简洁,易于运维,并且可以支持 10PB 以上的超大数据集。Apache Doris 可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等

2.Doris的架构

Doris 中设计了 FE(Frontend)、BE(Backend)两种角色、他们都有独立的进程,FE、BE 都可线性扩展。

  • FE(Frontend):负责存储、维护集群元数据;负责接收、解析查询请求,规划查询计划,调度查询执行,返回查询结果
    FE分为三个部分:Leader 、 Follower、Observer:前两者主要是用来达到元数据的高可用,保证单节点宕机的情况下,元数据能够实时地在线恢复,而不影响整个服务。而Observer:用来扩展查询节点,同时起到元数据备份的作用。如果在发现集群压力非常大的情况下,需要去扩展整个查询的能力,那么可以加 observer 的节点。observer 不参与任何的写入,只参与读取。
  • BE(Backend):负责物理数据的存储和计算;依据 FE 生成的物理计划,分布式地执行查询。数据的可靠性由 BE 保证,BE 会对整个数据存储多副本或者是三副本。副本数可根据需求动态调整

在这里插入图片描述

  • MySQL Client :Doris 借助 MySQL 协议,用户使用任意 MySQL 的 ODBC/JDBC 以及 MySQL 的客户端,都可以直接访问 Doris。
  • Broker :Broker 为一个独立的无状态进程。封装了文件系统接口,提供 Doris 读取远端存储系统中文件的能力,包括 HDFS,S3,BOS 等。

Doris安装

安装过程还是比较复杂的,需要你有一些细心和耐心,因为Doris堆环境的要求还是比较高的,所以我这里只能以较低的配置进行测试。

1.环境要求

环境要求

系统要求
Centos7.x+
Java1.8+

机器要求 - 测试环境

模块CPU内存磁盘网络实例数量
Frontend8核+8GB+SSD 或 SATA,10GB+ *千兆网卡1
Backend8核+16GB+SSD 或 SATA,50GB+ *千兆网卡1-3 *

机器要求 - 生产环境

模块CPU内存磁盘网络实例数量(最低要求)
Frontend16核+64GB+SSD 或 RAID 卡,100GB+ *万兆网卡1-5 *
Backend16核+64GB+SSD 或 SATA,100G+ *万兆网卡10-100 *

Doris堆环境要求比较高,我们没办法按照真实环境来,这里我使用VMware安装了一个 Centos7.9 的 ,8C , 10G 我们用于单机测试。

2.前置配置

doris要求在linux上面只要要打开65536的句柄数,doris才能正常运行。而linux默认打开的句柄数为1000.所以需要修改。

第一步:vi /etc/security/limits.conf , 在文件最后添加下面几行信息(注意* 也要复制进去)

* soft nofile 65536
* hard nofile 65536 
* soft nproc 65536
* hard nproc 65536

然后执行:ulimit -n 65536 使它临时生效,如果要永久生效需要:reboot 重启系统,如果不修改这个句柄数大于等于60000,启动doris的be节点的时候就会报如下的错:Please set the maximum number of open file descriptors to be 65536 using ‘ulimit -n 65536’.

另外第一次启动的时候可能会报错: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

第二步:设置文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量

sysctl -w vm.max_map_count=2000000

上面命令也是临时的,如果要永久修改需要 :vi /etc/sysctl.conf 然后把 vm.max_map_count=2000000加入到最后一行,执行: sysctl -p 让他永久生效 , 然后通过:
sysctl -a|grep vm.max_map_count 命令检查是否生效。

第三步骤:时钟同步,ntpdate是一个向互联网上的时间服务器进行时间同步的软件

yum install ntpdate -y

安装之后,执行: ntpdate ntp.sjtu.edu.cn 进行时间同步

第四步:关闭交换分区(swap): swapoff -a ,交换分区是linux用来当做虚拟内存用的磁盘分区;linux可以把一块磁盘分区当做内存来使用(虚拟内存、交换分区);Linux使用交换分区会给Doris带来很严重的性能问题,建议在安装之前禁用交换分区;

1、查看 Linux 当前 Swap 分区
free -m
2、关闭 Swap 分区
swapoff -a[root@doitedu01 app]# free -mtotal        used        free      shared  buff/cache   available
Mem:           5840         997        4176           9         666        4604
Swap:          6015           0        6015
[root@doitedu01 app]# swapoff -a3.验证是否关闭成功
[root@doitedu01 app]# free -m   total        used        free      shared  buff/cache   available
Mem:           5840         933        4235           9         671        4667
Swap:             0           0           0

注意事项:

  • FE 的磁盘空间主要用于存储元数据,包括日志和 image。通常从几百 MB 到几个GB 不等。
  • BE 的磁盘空间主要用于存放用户数据,总磁盘空间按用户总数据量* 3(3 副本)计算,然后再预留额外 40%的空间用作后台 compaction 以及一些中间数据的存放。
  • 一台机器上可以部署多个 BE 实例,但是只能部署一个 FE。如果需要 3 副本数 据,那么至少需要 3 台机器各部署一个 BE 实例(而不是 1 台机器部署 3 个 BE 实例)。多 个 FE 所在服务器的时钟必须保持一致(允许最多 5 秒的时钟偏差)
  • 测试环境也可以仅适用一个 BE 进行测试。实际生产环境,BE 实例数量直接决定了整体查询延迟。
  • 所有部署节点关闭 Swap。
  • FE 节点数据至少为 1(1 个 Follower)。当部署 1 个 Follower 和 1 个 Observer 时,可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。
  • Follower 的数量必须为奇数,Observer 数量随意。
  • 根据以往经验,当集群可用性要求很高时(比如提供在线业务),可以部署 3 个Follower 和 1-3 个 Observer。如果是离线业务,建议部署 1 个 Follower 和 1-3 个 Observer。
  • Broker 是用于访问外部数据源(如 HDFS)的进程。通常,在每台机器上部署一个 broker 实例即可。

3.前置软件安装

  • 第一步:安装好JDK,自己百度一篇文章进行安装,这里省略,我使用的是JDK1.8版本
  • 第二步:安装好Mysql,因为Doris使用的是Mysql的客户端,所以要提前安装好,自己百度一篇文章去安装,我这里使用的是Mysql
    5.7

4.安装FE

去官网下载源码包 : https://doris.incubator.apache.org/zh-CN/download/ ,我这里使用的是1.2.5
在这里插入图片描述
有1个多G,下载好之后上传到Linux服务器上,执行下面命令进行解压

tar -xvf apache-doris-1.2.5-bin-x86_64.tar.xz

我的解压路径是 /root/doris/apache-doris 然后去修改 fe.conf 文件: vi /root/doris/apache-doris/fe/conf/fe.conf

#配置文件中指定元数据路径: 注意这个文件夹要自己创建
meta_dir = /root/doris/apache-doris/fe/doris-meta#修改绑定 ip(每台机器修改成自己的 ip) 
priority_networks = 机器IP/24

注意需要手动创建元数据目录: mkdir -p /root/doris/apache-doris/fe/doris-meta

接着就是配置环境变量了,执行: vi /etc/profile ,在文件后面加入下面内容后,执行 : source /etc/profile 让其生效

#doris_fe
export DORIS_FE_HOME=/root/doris/apache-doris/fe
export PATH=$PATH:$DORIS_FE_HOME/bin

接着就是做集群分发,我这里是单机测试所以不需要做集群分发 ,下面的 hadoop02 和 hadoop03指的是另外2台机器

> scp /et/profile hadoop02:/etc/profile
> scp -r /root/doris/apache-doris/ hadoop02:/root/doris/apache-doris/> scp /et/profile hadoop03:/etc/profile
> scp -r /root/doris/apache-doris/ hadoop03:/root/doris/apache-doris/

接着就是启动 fe ,进入到fe的bin目录下执行下面命令,该脚本以守护(daemon)模式运行

[root@xx bin]# ./start_fe.sh --daemon

通过:jps 命令查看是否有启动的进程

问题:在这里我一开始只用./start_fe.sh 启动,进程一直结束不了。使用ctrl+C跳出后,进程也随之结束了。

原因这可能是因为在非守护(daemon)模式下,该命令在前台运行,占用了终端并阻塞了你的输入。通过使用 --daemon 参数,你将该命令转为在后台以守护进程的形式运行,不再与当前终端关联,因此可以正常结束终端而不影响该进程的运行。

生产环境强烈建议单独指定目录不要放在 Doris 安装目录下,最好是单独的磁盘(如果有 SSD 最好)。 如果机器有多个 ip, 比如内网外网, 虚拟机 docker 等, 需要进行 ip 绑定,才能正确识别。 JAVA_OPTS 默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上。

5.安装BE

进入到doris安装目录下的 be目录下修改配置:/root/doris/apache-doris/be/conf/be.conf ,修改内容如下

#配置文件中指定数据存放路径: 
storage_root_path = /root/doris/apache-doris/be/storage.HDD;/root/doris/apache-doris/be/storage.SSD#修改绑定 ip(每台机器修改成自己的 ip) 
priority_networks = 机器IP/24 

第一次启动的时候可能会报错: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

另外记得下面两个目录需要手动创建

mkdir -p /root/doris/apache-doris/be/storage.HDD
mkdir -p /root/doris/apache-doris/be/storage.SSD

接着就是给BE添加环境变量,执行: vi /etc/profile ,在文件后面加入下面内容后,执行 : source /etc/profile 让其生效

#doris_Be
export DORIS_BE_HOME=/root/doris/apache-doris/be
export PATH=$PATH:$DORIS_BE_HOME/bin

启动BE,进入到be/bin目录执行下面命令, 执行后可以通过 :jps查看是否启动成功

[root@xx bin]# ./start_be.sh --daemon 

6.让BE加入FE

目前我们安装好了BE和FE,但是他们2个是独立的应用,我们需要通过Mysql的客户端把BE加入FE,接下来我们登录FE

mysql -h 机器IP -P 9030 -uroot -p

第一次进去后是没有密码的,登录之后需要设置密码,如下

mysql > SET PASSWORD FOR 'root' = PASSWORD('123456');

修改密码后重新登录:mysql -h 机器IP -P 9030 -uroot -p123456 ,然后把BE加入FE,执行命令

ALTER SYSTEM ADD BACKEND "192.168.220.253:9050";

加入之后,通过 :show proc '/backends' \G 来查看是否成功,如果Active:true那就是OK的了

show proc '/backends' \G; --以文本的形式展示所有的be节点
show proc '/frontends' \G;  --以文本的形式展示所有的fe节点

Alive so为 false 表示该 BE 节点还是死的
Alive 为 true 表示该 BE 节点存活。
在这里插入图片描述
另外我们也可以通过可视化界面查看:http://192.168.220.253:8030/ ,用户名和密码是:root/123456,登录后点击:system -> backends 即可查看
在这里插入图片描述

7.部署FS_broker(可选)

Broker以插件的形式,独立于Doris部署。如果需要从第三方存储系统导入数据,需要部署相应的Broker,默认提供了读取HDFS、百度云BOS及Amazon S3的fs broker。.fs broker是无状态的,建议每一个FE和BE节点都部署一个Broker。

第一步:我们需要启动fs_broker ,进入目录:cd /root/doris/apache-doris/extensions/apache_hdfs_broker/bin,然后执行启动命令

[root@192 bin]# ./start_broker.sh --daemon

第二步:使用Mysql客户端把fs_broker 加入到 FE

mysql -h 192.168.220.253 -P 9030 -uroot -p123456
ALTER SYSTEM ADD BROKER fs_broker "192.168.220.253:8000";

注意:fs_broker是一个名字可以自定义,通过:SHOW PROC '/brokers'查看,也可以通过界面查看
在这里插入图片描述

8.扩容缩容

另外说一点:Doris还支持扩容和缩容,如果机器不够用时就可以进行扩容,进行扩容比较简单,比如我们再增加第二台,第三台机器,都安装并启动好be,fe;第一次启动需要增加helper 来指定主节点

start_fe.sh --daemon --helper linux01:9010
start_be.sh --daemon

然后在第一台机器执行命令把其他节点加入进来,如下

alter system add backend 'linux02:9050';
alter system add backend 'linux03:9050';
alter system add follower 'linux03:9010';
alter system add follower 'linux02:9010';

如果要缩容的话,先将该台机器的fe进程停掉 然后执行下面命令移除

alter system drop follower/observer "doitedu01:9010"; 

对于be也一样,先将该台机器的be进程停掉,然后移除

//直接删除,可能会造成数据的误删,丢失,不建议使用
alter system drop backend "doitedu01:9050"; 
//先备份后删除
alter system decommission backend "doitedu01:9050"; 

该命令用于安全删除 BE 节点。命令下发后,Doris 会尝试将该 BE 上的数据向其 他 BE 节点迁移,当所有数据都迁移完成后,Doris 会自动删除该节点。

9.在Navcat中连接

在这里插入图片描述

文章结束,如果对你有帮助请点赞收藏哦!!!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot学习11 (菜品缓存redis)

缓存逻辑分析 目的:减轻数据库压力每个分类下的菜品保存一份缓存数据数据库中菜品数据有变更时清理缓存数据 keyvaluedish_1string(...)dish_2string(...)dish_3string(...) GetMapping("/list")ApiOperation("根据分类id查询菜品")public Res…

敏捷需求管理,推动敏捷项目成功——Leangoo领歌敏捷工具

在敏捷项目管理中,需求管理是决定项目成功的关键环节。准确捕捉和高效管理需求,不仅能避免项目偏航,还能确保最终交付的产品与客户预期高度契合。Leangoo领歌敏捷工具,正是为此而生,助力团队轻松实现需求管理的每一步。…

分贝通助力元气森林企业支出一体化降本提效

凭借着“0糖0脂0卡”这句广告语,元气森林几乎是一锤砸中了年轻消费者的内心,让“好喝不胖”深入人心,成为了国内饮品消费的新风向标。如果我们从近两年的快消饮品中选出几款深受消费者喜爱的“国货品牌”的话,相信「元气森林」一定上榜。 元气森林成立于2016年,旗下拥有元气森林…

C语言典型例题59

《C程序设计教程(第四版)——谭浩强》 题目: 例题4.11 译密码。为使电文保密,往往按一定规律将其转换为密码,收报人再按约定的规律将其译回原文。 例如,可以按以下规律将电文变为密码: 将字母A…

Harbor部署docker私人仓库

1、新建虚拟机rhel9 2、配置网络 #修改内核参数使网卡名称为ethxxx grubby --update-kernel ALL --args net.ifnames0reboot #配置网络 vim /etc/NetworkManager/system-connections/eth0.connection 内容为:[connection] ideth0 typeethernet interface-nameeth0…

储能电站变流器设计与仿真研究(文章复现matlab)

为了有效解决交流子网与直流子网间的功率传输, 降低电流谐波, 基于三相电压源型变流器及变流器的控制方法, 在 MATLAB R2018a 环境下搭建了储能变流器的整体仿真模型。 电路主要由三相电网、 三相 PWM 变流器、Buck/Boost 变换器和蓄电池构成…

使用Dify搭建企业知识库聊天机器人

本文简介 在当今数字化时代,企业知识库的建设和维护对于提升工作效率和服务质量至关重要。AI聊天机器人作为知识库的交互界面,可以提供24/7的即时服务。 本文将介绍如何使用 Dify 这一工具快速搭建企业知识库聊天机器人,它可以当你企业的职…

sqli-libs第四关详解

首先判断是数字型注入还是字符型注入 正常显示,说明是字符型注入,那么尝试单引号闭合 还是正常显示,尝试双引号闭合 有报错信息,含有括号,这时就应该想到,sql代码是("$id")这样写的了。直接采取闭…

HTML5有格调的个人介绍网站源码

文章目录 1.设计来源1.1 主界面1.2 个人信息界面1.3 项目统计界面1.4 我的相册界面1.5 朋友评价界面1.6 保持联系界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,在线沟通 作者:xcLeigh 文章地址&a…

第L2周:机器学习-线性回归

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目标: 学习简单线性回归模型和多元线性回归模型通过代码实现:通过鸢尾花花瓣长度预测花瓣宽度 具体实现: (一&…

【JS】事件捕获和事件冒泡的区别

事件捕获和事件冒泡是指在 DOM 树中处理事件时的两种不同的传播方式。它们之间的主要区别在于事件传播的方向和顺序: 事件捕获(Capture) 方向: 从最外层的祖先元素向目标元素传播。顺序: 事件首先从最外层的祖先元素…

随机化 bbr probebw cycle phase

常打磨常新,bbr 和 inflight 守恒算法的模型和仿真也在不断优化。 再次给出 bbr 模型,这次修改了 d x d t \dfrac{dx}{dt} dtdx​ 的表达式,由 g 2 ⋅ x ⋅ r m i n g_2\cdot x\cdot r_{min} g2​⋅x⋅rmin​计算。同时加入了微观建模 pro…

5.注册中心的其他实现-Nacos

文章目录 1.Nacos简介2.Nacos的安装2.1Nacos Windows本地启动不成功?2.2Linux环境下载并启动 3. Nacos的使用4.Nacos的负载均衡5.Nacos 健康检查6.Nacos 环境隔离7.Nacos 配置中心7.1为什么需要配置中心7.2 Nacos配置中心使用7.3 Data id7.4Nacos 上Linux部署服务7.…

XSS LABS - Level 13 过关思路

关注这个靶场的其他相关笔记:XSS - LABS —— 靶场笔记合集-CSDN博客 0x01:过关流程 进入靶场,老样子,右击,查看页面源码,找找不同: 可以看到,本关又多了一个新字段 t_cook&#xf…

#C++ 笔记二

四、运算符重载 1.友元 1.1 概念 类实现了数据的隐藏和封装,类的数据成员一般定义为私有成员,仅能通过类的公有成员函数才能进行读写。 如果数据成员定义成公共的,则又破坏了封装性。但是在某些情况下,需要频繁的读写数据成员…

【Transformer】基本概述

文章目录 提出背景核心思想—注意力机制流程解析参考资料 提出背景 在Transformer模型出现之前,循环神经网络(RNN)及其变体,如长短期记忆网络(LSTM)和门控循环单元(GRU),…

Ethercat设备数据 转IEC61850项目案例

目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 5 设置网关采集ETHERCAT数据 5 6 用IEC61850协议转发数据 7 7 网关使用多个逻辑设备和逻辑节点的方法 9 8 安装NPCAP 10 9 案例总结 11 1 案例说明 设置网关采集EtherCAT设备数据把采集的数据转成IEC61850协议转发给其…

Ollydbg提示:xxxxxx可能不是一个 32 位 PE 文件,无论如何都尝试载入吗?

原标题:OD提示C:\Users\XuanRan\Desktop\xxxx.exe’可能不是一个个 32 位 PE 文件,无论如何都尝试载入吗? 它的意思就是告诉你,OD现在只能用于32位软件。 如果要调试64位程序,去使用x64dbg x64dbg下载链接: https://github.com…

记一次ssh伪终端修改为shell

问题 用户ssh进行连接后,默认为伪终端。 解决办法,可以先拿到终端shell,查看用户是否为/bin/bash: 不是/bin/bash,使用如下命令进行修改: chsh -s /bin/bash rootservice sshd restart

【WPF】WPF学习之【二】布局学习

WPF布局学习 常用布局Grid网格布局StackPanel 布局CanvasDockPanel布局WrapPanel布局 常用布局 1、StackPanel: 学习如何使用StackPanel进行垂直和水平布局。 2、Grid: 掌握Grid的网格布局技术。 3、Canvas: 了解Canvas的绝对定位布局。 4、DockPanel: 学习DockPanel的停靠…