当前位置:   article > 正文

搭建环境06:部署Doris_doris部署

doris部署

目录

1.Doris简介

 2.集群规划

2.1硬盘空间计算

2.2集群规划

3.部署FE

4.部署BE

4.集群扩容

4.1.BE扩缩容

4.2.FE扩缩容

4.3.FE负载均衡


1.Doris简介

        Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库。Doris整体架构如下图所示,Doris 架构非常简单,只有两类进程

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

        Doris 采用 MySQL 协议,高度兼容 MySQL 语法,支持标准 SQL,用户可以通过各类客户端工具来访问 Doris,并支持与 BI 工具的无缝对接。

 2.集群规划

2.1硬盘空间计算

        在 Doris 集群中,FE 主要用于元数据存储,包括元数据 edit log 和 image。BE 的磁盘空间主要用于存放数据,需要根据业务需求计算。

组件磁盘空间说明
FE元数据一般在几百 MB 到几 GB,建议不低于 100GB
BEDoris 默认 LZ4 压缩方式进行存储,压缩比在 0.3 - 0.5 左右磁盘空间需要按照总数据量 * 3(3 副本)计算需要预留出 40% 空间用作后台 compaction 以及临时数据的存储
Broker如需部署 Broker,通常情况下可以将 Broker 节点与 FE / BE 节点部署在同一台机器上

2.2集群规划

机器服务
192.168.179.131 (01.weisx.com)FE、BE
192.168.179.132 (02.weisx.com)FE、BE
192.168.179.133 (03.weisx.com)FE、BE
  • FE 角色分为 Follower 和 Observer(Leader 为 Follower 组中选举出来的一种角色)。FE 节点至少1 个 Follower(FFollower 的数量必须为奇数,Observer 数量随意)。当部署 1 个 Follower 和 1 个 Observer 时,可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。
  • FE 角色分为 Mix(混合节点)和Computation(计算节点)。BE节点默认是混合节点,该类型的节点既可以参与计算,也负责 Doris 数据的存储;计算节点作为一种特殊类型的 BE 节点,没有数据存储能力,只负责数据计算,主要使用场景是查询外部数据源。
  • Doris的性能与节点数量及配置正相关。在最少4台机器(一台 FE,三台 BE,其中一台 BE 混部一个 Observer FE 提供元数据备份),以及较低配置的情况下,依然可以平稳的运行 Doris。

        如果 FE 和 BE 混部,需注意资源竞争问题,并保证元数据目录和数据目录分属不同磁盘。

以下第3到4步在192.168.179.131上操作

3.部署FE

1)解压安装

拷贝Doris安装包到01节点~/tools/目录
解压到~/opt/目录
     tar -zxf apache-doris-2.0.0-bin-x64.tar.gz -C /home/weisx/opt/ 
创建Doris软链接    
   ln -s /home/weisx/opt/apache-doris-2.0.0-bin-x64 /home/weisx/opt/doris

2)创建FE元数据存储路径

3)修改FE配置文件,指定元数据存储路径及FE绑定IP

vi fe/conf/fe.conf

# 增加 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

4)启动FE

./fe/bin/start_fe.sh --daemon

5)访问FE端口,用户名:root 密码为空

http://192.168.179.131:8030/login

6)连接FE

通过MySQL客户端连接Doris FE: mysql -h192.168.179.131 -P9030 -uroot

7)查看 FE 运行状态

8)停止FE节点

./fe/bin/stop_fe.sh

4.部署BE

1)创建BE数据存储路径

2)修改BE配置文件,指定数据存储路径及BE绑定IP

vi be/conf/be.conf

# 增加 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}/storagea

3)启动BE

./be/bin/start_be.sh --daemon

如果提示:Please set vm.max_map_count to be 2000000 under root using 'sysctl -w vm.max_map_count=2000000'.需要先配置之后再启动。

4)添加 BE 节点到集群
通过MySQL 客户端连接到 FE 之后执行下面的 SQL,将 BE 添加到集群中。

ALTER SYSTEM ADD BACKEND "192.168.179.131:9050";

5)停止BE

./be/bin/stop_be.sh

6)测试建库、建表

create database demo;

        7)修改 root 和 admin 的密码

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

# 在 MySQL 客户端,执行类似下面的 SQL,为 root 和 admin 用户设置新密码
SET PASSWORD FOR 'root' = PASSWORD('doris-root-password');
SET PASSWORD FOR 'admin' = PASSWORD('doris-admin-password');   

4.集群扩容

4.1.BE扩缩容

1)将192.168.179.131服务器上的doris文件同步到新节点服务器上

2)在新节点服务器上创建BE数据存储路径

3)修改新节点上的BE配置文件,指定数据存储路径及BE绑定IP

4)启动新节点上的BE

5)将新节点上的BE加入集群

ALTER SYSTEM ADD BACKEND "192.168.179.132:9050";

6)检查新节点BE集群情况

show backends\G;

7)参照以上1到6步添加新的BE节点

8)删除集群中的BE节点

     删除 BE 节点有两种方式:DROP 和 DECOMMISSION

  1. DROP 语句如下:

        ALTER SYSTEM DROP BACKEND "be_host:be_heartbeat_service_port";

        注意:DROP BACKEND 会直接删除该 BE,并且其上的数据将不能再恢复!!!所以我们强烈不推荐使用 DROP BACKEND 这种方式删除 BE 节点。当你使用这个语句时,会有对应的防误操作提示。

  1. DECOMMISSION 语句如下:

        ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";

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

4.2.FE扩缩容

    官方建议:

  1. Follower FE(包括 Master)的数量必须为奇数,建议最多部署 3 个组成高可用(HA)模式即可。
  2. 当 FE 处于高可用部署时(1个 Master,2个 Follower),我们建议通过增加 Observer FE 来扩展 FE 的读服务能力。当然也可以继续增加 Follower FE,但几乎是不必要的。


1)将192.168.179.131服务器上的doris文件同步到新节点服务器上(如果以存在则忽略)

2)在新节点服务器上创建FE元数据存储路径

3)修改新节点上的FE配置文件,指定元数据存储路径及FE绑定IP

4)启动新节点上的FE

        ./fe/bin/start_fe.sh --helper 192.168.179.131:9010 --daemon

        --helper leader_fe_host:edit_log_port

        其中 leader_fe_host 为 Master 所在节点 ip, edit_log_port 在 Master 的配置文件 fe.conf 中。--helper 参数仅在 follower 和 observer 第一次启动时才需要。

5)将新节点上的FE加入集群

        将 Follower 或 Observer 加入到集群。使用 mysql-client 连接到已启动的 FE,并执行:

        ALTER SYSTEM ADD FOLLOWER "192.168.179.132:9010";

        或

        ALTER SYSTEM ADD OBSERVER "192.168.179.132:9010";

6)检查新节点FE集群情况

        show frontends\G;

7)参照以上1到6步添加新的FE节点

8)删除集群中的FE节点

        使用以下命令删除对应的 FE 节点:
        ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";

        FE 缩容注意事项:

  • 删除 Follower FE 时,确保最终剩余的 Follower(包括 Leader)节点为奇数。

4.3.FE负载均衡

当部署多个 FE 节点时,用户可以在多个 FE 之上部署负载均衡层来实现 Doris 的高可用。

  • 方式1:JDBC Connector

    如果使用 mysql jdbc connector 来连接 Doris,可以使用 jdbc 的自动重试机制:jdbc:mysql:loadbalance://[host:port],[host:port].../[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue

  • 方式2:Nginx TCP反向代理方式

   1)安装nginx时,配置--with-stream参数使nginx支持TCP协议

./configure --prefix=/usr/local/nginx --with-stream --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module

    2)配置反向代理

  1. stream {
  2. #mysql连接负载均衡
  3. upstream doris-mysql{
  4. hash $remote_addr consistent;
  5. server 192.168.179.131:9030 weight=1 max_fails=2 fail_timeout=60s;
  6. server 192.168.179.132:9030 weight=1 max_fails=2 fail_timeout=60s;
  7. server 192.168.179.133:9030 weight=1 max_fails=2 fail_timeout=60s;
  8. ##注意这里如果是多个FE,加载这里就行了
  9. }
  10. ###这里是配置代理的端口,超时时间等
  11. server {
  12. listen 19030;
  13. proxy_connect_timeout 300s;
  14. proxy_timeout 300s;
  15. proxy_pass doris-mysql;
  16. }
  17. }
  18. http {
  19. #web UI 负载均衡
  20. upstream doris-web{
  21. server 172.22.197.238:8030 weight=3;
  22. server 172.22.197.239:8030 weight=4;
  23. server 172.22.197.240:8030 weight=4;
  24. ip_hash;
  25. }
  26. server {
  27. listen 18030;
  28. if ($request_uri ~ _load) {
  29. return 307 http://$host$request_uri ;
  30. }
  31. location / {
  32. proxy_pass http://doris-web;
  33. proxy_redirect default;
  34. }
  35. error_page 500 502 503 504 /50x.html;
  36. location = /50x.html {
  37. root html;
  38. }
  39. }
  40. }

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号