Doris【部署 01】Linux部署MPP数据库Doris稳定版(下载+安装+连接+测试)

news2024/11/17 13:52:06

本次安装测试的为稳定版2.0.8官方文档 https://doris.apache.org/zh-CN/docs/2.0/get-starting/quick-start 这个简短的指南将告诉你如何下载 Doris 最新稳定版本,在单节点上安装并运行它,包括创建数据库、数据表、导入数据及查询等。

Linux部署稳定版Doris数据库

  • 1. 环境
  • 2. 下载
  • 3. Doris组件配置
    • 3.1 注意事项
    • 3.2 FE
    • 3.3 BE
    • 3.4 连接 Doris FE
      • 3.4.1 使用MySQL的Client
      • 3.4.2 使用FE WEB
  • 4. 建库建表
    • 4.1 连接 Doris
    • 4.2 建数据库和数据表
    • 4.3 导入数据
      • 4.3.1 使用接口导入
      • 4.3.2 使用Navicat连接并导入
    • 4.4 查询数据
  • 5. 停止 Doris

1. 环境

  • 选择一个 X86-64 上的主流 Linux 环境,推荐 CentOS 7.1 或者 Ubuntu 16.04 以上版本。
  • Java 8 运行环境(非 Oracle JDK 商业授权用户,建议使用免费的 Oracle JDK 8u202,立即下载)。
  • 建议在 Linux 上新建一个 Doris 用户(避免使用 root 用户,以防对操作系统误操作)。

当前的环境信息:

# 1.系统版本
cat /proc/version
Linux version 5.10.0-136.12.0.86.oe2203sp1.x86_64 (root@dc-64g.compass-ci) (gcc_old (GCC) 10.3.1, GNU ld (GNU Binutils) 2.37) #1 SMP Tue Dec 27 17:50:15 CST 2022

# 2.JDK
java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
# JAVA_HOME
echo $JAVA_HOME
/usr/local/jdk1.8.0_241

# 3.用户【使用doris用户无法创建文件夹 实例中使用的是root用户】
sudo useradd -m -s /bin/bash doris
sudo passwd doris

2. 下载

从 https://doris.apache.org/zh-CN/download 下载相应的 Doris 安装包。
image.png
可以通过查看CPU的规格或者使用特定的命令来检测CPU是否支持AVX2指令集。具体方法如下:

  • 在Linux系统中,可以使用命令cat /proc/cpuinfo来查看CPU信息。在输出的信息中查找"avx2"字样,如果存在,则表示CPU支持AVX2指令集。
  • 在Windows系统中,可以通过任务管理器的性能标签页下的CPU信息区域查看支持的指令集。

需要注意的是,AVX2是一种对处理器性能要求较高的指令集,较旧的CPU可能不支持。如果您的CPU不支持AVX2,那么在运行一些需要该指令集的高性能应用时可能会遇到兼容性问题。

cat /proc/cpuinfo | grep avx2

解压重命名:

# 1.下载 Doris 二进制安装包【也可以官网下载】
wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.0.8-bin-x64.tar.gz

# 2.解压安装包
tar -zxvf apache-doris-2.0.8-bin-x64.tar.gz

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

3. Doris组件配置

3.1 注意事项

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

内部默认接口:

Brokerbroker_ipc_port8000FE–>BROKERBE–>BROKERBroker上的thrift server用于接收请求

3.2 FE

  • 配置

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

# 1.增加 JAVA_HOME 配置,指向 JDK8 的运行环境。
JAVA_HOME=/usr/local/jdk1.8.0_241

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

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

# 4.端口配置
http_port = 8034
rpc_port = 9024
query_port = 9034
edit_log_port = 9014
http_port8030FE<–>FE用户<–> FEFE上的http_server端口
rpc_port9020BE–>FEFE<–>FEFE上thirt server端口号
query_port9030用户<–> FEFE上的mysql server端口
edit_log_port9010FE<–>FEFE上bdbje之间通信用的端口
  • 3.2 启动

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

# 将 FE 启动成后台运行模式,这样确保退出终端后,进程依旧运行。
./bin/start_fe.sh --daemon
# 查看启动情况
jps -l

# 启动成功
3709409 org.apache.doris.DorisFE

登录 FE Web 页面,地址为IP:8034,首页为:
image.png
用户名为root密码为空,登录后:
image.png

3.3 BE

# 设置最大虚拟块的大小
sysctl -w vm.max_map_count=2000000
# 关闭交换空间
swapoff -a
  • 配置

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

# 1.增加 JAVA_HOME 配置,指向 JDK8 的运行环境。
JAVA_HOME=/usr/local/jdk1.8.0_241

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

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

# 4.端口配置
be_port = 9064
webserver_port = 8044
heartbeat_service_port = 9054
brpc_port = 8064
be_prot9060FE–>BEBE上thrift server的端口用于接收来自FE 的请求
webserver_port8040BE<–>FEBE上的http server端口
heartbeat_service_port9050FE–>BEBE上心跳服务端口用于接收来自FE的心跳
brpc_prot8060FE<–>BEBE<–>BEBE上的brpc端口用于BE之间通信
  • 启动

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

# 将 BE 启动成后台运行模式,这样确保退出终端后,进程依旧运行。
./bin/start_be.sh --daemon
# 查看启动情况
jps -l

# 启动成功
3713696 DorisBE

3.4 连接 Doris FE

3.4.1 使用MySQL的Client

通过 MySQL 客户端来连接 Doris FE,下载免安装的 MySQL 客户端。

mysql -uroot -P9030 -h127.0.0.1

-- 提示信息
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.99 Doris version doris-2.0.8-d083188cdd

注意:

  • 这里使用的 root 用户是 Doris 内置的超级管理员用户;
  • -P:这里是我们连接 Doris 的查询端口,默认端口是 9030,对应的是 fe.conf 里的 query_port;
  • -h:这里是我们连接的 FE IP 地址,如果你的客户端和 FE 安装在同一个节点可以使用 127.0.0.1。
  1. 将 BE 节点添加到集群

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

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 节点。
  1. 修改 root 和 admin 的密码

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

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 权限。

3.4.2 使用FE WEB

  1. 将BE节点添加到集群

image.png

4. 建库建表

4.1 连接 Doris

-- 使用 admin 账户连接 Doris FE
mysql -uadmin -P9030 -h127.0.0.1

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

4.2 建数据库和数据表

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');

image.png
image.png

4.3 导入数据

4.3.1 使用接口导入

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

1,0.14,a1,20
2,1.04,b2,21
3,3.14,c3,22
4,4.35,d4,23

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

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

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

{
"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 表示导入成功

4.3.2 使用Navicat连接并导入

  • 文件内容

image.png

  • 连接并导入

image.png
image.png

4.4 查询数据

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

mysql> select * from mytable;

+------+------+------+------+
| k1   | k2   | k3   | k4   |
+------+------+------+------+
|    1 | 0.14 | a1   |   20 |
|    2 | 1.04 | b2   |   21 |
|    3 | 3.14 | c3   |   22 |
|    4 | 4.35 | d4   |   23 |
+------+------+------+------+
4 rows in set (0.01 sec)

image.png

5. 停止 Doris

# 停止 FE 在 apache-doris/fe 下,运行下面命令停止 FE。
./bin/stop_fe.sh

# 停止 BE 在 apache-doris/be 下,运行下面命令停止 BE。
./bin/stop_be.sh

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

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

相关文章

【Python】PYQT5详细介绍

本专栏内容为&#xff1a;Python学习专栏 通过本专栏的深入学习&#xff0c;你可以了解并掌握Python。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;Python &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &#x1f3…

Array.map解析

map方法会创建一个新数组。该方法会循环数组中的每个值&#xff0c;如果仅仅是想循环数组不需要返回值使用数组的forEach方法就可以。原数组中的每个元素都调用一次提供的函数后的返回值组成。Array.map 它接收一个函数 这个函数可以接收三个参数 数组的每个值item 这个值的索引…

ICode国际青少年编程竞赛- Python-4级训练场-嵌套for循环入门

ICode国际青少年编程竞赛- Python-4级训练场-嵌套for循环入门 1、 for i in range(3):Dev.step(3)for j in range(3):Dev.turnLeft()Dev.step(-2)Dev.turnLeft()2、 for i in range(3):Dev.turnLeft()Dev.step(4)Dev.turnRight()Dev.step(2)for i in range(4):Dev.step(2)D…

ardupilot开发 --- opencv 篇

0. 一些概念 官网&#xff1a;https://opencv.org/ 1. 卸载 sudo apt-get --purge remove libopencv sudo apt-get --purge remove libopencv-dev sudo apt-get --purge remove libopencv* sudo apt-get --purge remove opencv sudo apt-get --purge remove *opencv* sudo a…

视频剪辑达人分享:一键批量置入随机封面,创意无限

在数字化媒体飞速发展的今天&#xff0c;视频内容已经成为我们表达创意、分享故事、传递信息的主要方式之一。而在视频制作过程中&#xff0c;封面作为视频的“脸面”&#xff0c;往往决定了观众是否愿意点击观看。因此&#xff0c;为视频选择合适的封面变得至关重要。 在大量…

3D数字化解决方案助力文博行业转型,让文物“活”起来!

博物馆是保护和传承人类文明的重要殿堂&#xff0c;是连接过去、现在、未来的桥梁&#xff0c;为了进一步加强文物及藏品保护&#xff0c;不断提高博物馆服务和科普宣传水平&#xff0c;博物馆数字化转型已是当下发展趋势。 在科技的“加持”下&#xff0c;不少博物馆凭借强大的…

LeetCode-258. 各位相加【数学 数论 模拟】

LeetCode-258. 各位相加【数学 数论 模拟】 题目描述&#xff1a;解题思路一&#xff1a;循环解题思路二&#xff1a;进阶 O(1)解题思路三&#xff1a; 题目描述&#xff1a; 给定一个非负整数 num&#xff0c;反复将各个位上的数字相加&#xff0c;直到结果为一位数。返回这个…

Linux下VMamba 环境复现+环境测试

# 1. 创建自己的虚拟环境 conda create -n VMamba python3.10.13 conda activate VMamba # 2. cuda-11.8 conda install cudatoolkit11.8 -c nvidia # 3. torch torchvision torchaudio 与 官网命令一致 pip install torch2.1.1 torchvision0.16.1 torchaudio2.1.1 --index-url…

OpenGL入门第四步:摄像机视角变换与交互

OpenGL入门第一步:创建窗口、重写虚函数-CSDN博客 OpenGL入门第二步:颜色、纹理设置(解析)-CSDN博客 OpenGL入门第三步:矩阵变换、坐标系统-CSDN博客 目录 函数解析 具体代码 函数解析 相机视角变换需要与鼠标键盘进行交互,需要重写鼠标和键盘响应函数。 初始化 …

获取Android开发板已连接WiFi密码

硬件/软件环境&#xff1a; 1&#xff09;全志芯片开发板A40i 2&#xff09;Android Studio Giraffe | 2022.3.1 Patch 3 连接条件&#xff1a; 1)两端都是USB-A接口线&#xff0c;一端插入电脑端USB接口&#xff0c;另一端插入开发板USB接口&#xff1b; 2&#xff09;Andr…

【向信而行 笃行致远】2024·C3合作伙伴大会即将启幕

向信而行&#xff0c;笃行致远。2024C3合作伙伴大会将于5月17日在南京拉开帷幕。 数字机遇&#xff0c;智能变革。在数智化的澎湃浪潮中&#xff0c;唯有聚合众力&#xff0c;方能乘风破浪&#xff0c;驶向更远的未来。 2023年&#xff0c;我们直面企业数字转型的需求与挑战&…

BUU-[GXYCTF2019]Ping Ping Ping

考察点 命令执行 题目 解题 简单测试 ?ip应该是一个提示&#xff0c;那么就测试一下?ip127.0.0.1 http://0c02a46a-5ac2-45f5-99da-3d1b0b951307.node4.buuoj.cn:81/?ip127.0.0.1发现正常回显 列出文件 那么猜测一下可能会有命令执行漏洞&#xff0c;测试?ip127.0.…

Pikachu 靶场 CSRF 通关解析

前言 Pikachu靶场是一种常见的网络安全训练平台&#xff0c;用于模拟真实世界中的网络攻击和防御场景。它提供了一系列的实验室环境&#xff0c;供安全专业人士、学生和爱好者练习和测试他们的技能。 Pikachu靶场的目的是帮助用户了解和掌握网络攻击的原理和技术&#xff0c;…

vue3.0(六) toRef,toValue,toRefs和toRow,markRaw

文章目录 toReftoValuetoRefstoRowmarkRawtoRef和toRefs的区别toRaw 和markRaw的用处 toRef toRef 函数可以将一个响应式对象的属性转换为一个独立的 ref 对象。返回的是一个指向源对象属性的 ref 引用&#xff0c;任何对该引用的修改都会同步到源对象属性上。使用 toRef 时需…

ue引擎游戏开发笔记(37)——实现敌人接收攻击伤害,并作出反应

1.需求分析&#xff1a; 现在已经显示造成实际伤害&#xff0c;但敌人对实际伤害并未产生反馈&#xff0c;例如还击&#xff0c;或者死亡倒地等等&#xff0c;实现敌人对于受击的反馈。 2.操作实现&#xff1a; 1.思路&#xff1a;在动画蓝图中添加死亡动画&#xff0c;并通过…

QT6 android程序界面强制横屏显示不旋转

QT6开发的Android程序有时候旋转后程序会变形&#xff0c;比如想让其固定位横屏显示&#xff0c;就需要进行特殊设置&#xff0c;本文提供一种简便的设置方法。 一.AndroidManifest.xml文件介绍 Android的Manifest.xml文件是一个重要的配置文件&#xff0c;用于描述应用程序的…

Hive 特殊的数据类型 Array、Map、Struct

Array 数组类型&#xff0c;存储数据类型一致的列表数据。 我们可以使用 array 方法来创建一个数组&#xff0c;如下所示&#xff1a; select array(1,2,3,4,5);如果其中的数据类型不一致&#xff0c;那么它会转换成统一的数据类型&#xff08;前提是能够进行转换&#xff0…

[leetcode] 68. 文本左右对齐

文章目录 题目描述解题方法贪心java代码复杂度分析 题目描述 给定一个单词数组 words 和一个长度 maxWidth &#xff0c;重新排版单词&#xff0c;使其成为每行恰好有 maxWidth 个字符&#xff0c;且左右两端对齐的文本。 你应该使用 “贪心算法” 来放置给定的单词&#xff…

QT day5 作业

服务器头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> //服务器类 #include <QTcpSocket> //客户端类 #include <QList> //链表类 #include <QMessageBox> //消息对话框类 #include <QDebu…

建筑、室内设计师如何利用AI绘画辅助完成一套设计工作流?超长干货深度好文建议收藏!

2023年是AI人工智能突然大爆发的元年 所有行业都受到了AI的冲击 对设计师来说也迎来了新一轮的效率革命 新事物的到来 有人热情学习和接受 也有人担忧害怕和拒绝 担心自己被取代 其实 取代你的并不是AI 而是会使用AI的设计师 常用的AI工具有哪些&#xff1f; 对于设…