Doris - MPP高性能、实时的分析型mysql数据库 mysql doris


https://hub.docker.com/r/apache/doris

https://github.com/apache/doris/releases

https://doris.apache.org/download/

https://doris.apache.org/zh-CN/docs/get-starting/quick-start/

https://hub.docker.com/r/selectdb/doris.fe-ubuntu

https://hub.docker.com/r/selectdb/doris.be-ubuntu


# 3

docker run -d --name fe1 --hostname fe1  --restart always  --privileged=true --user=root  --network mgr  --ip 172.18.0.211  -e TZ='Asia/Shanghai'   --ulimit nofile=262144:262144  -p 8031:8030 -p 9031:9030 -e FE_SERVERS='fe1:172.18.0.211:9010,fe2:172.18.0.212:9010,fe3:172.18.0.213:9010'  -e FE_ID='1'   -v /etc/localtime:/etc/localtime:ro  -v /data/site:/data/site  -v  /data/site/docker/data/doris/fe1:/opt/apache-doris/fe/doris-meta -v /data/site/docker/env/mysql/doris/fe/fe.conf:/opt/apache-doris/fe/conf/fe.conf:ro   -v /data/file/logs/doris/fe1:/opt/apache-doris/fe/log   selectdb/doris.fe-ubuntu

-web

http://g.htmltoo.com:8031

admin - 空


docker run -d --name fe2 --hostname fe2  --restart always  --privileged=true --user=root  --network mgr  --ip 172.18.0.212  -e TZ='Asia/Shanghai'   --ulimit nofile=262144:262144    -p 8032:8030 -p 9032:9030  -e FE_SERVERS='fe1:172.18.0.211:9010,fe2:172.18.0.212:9010,fe3:172.18.0.213:9010'  -e FE_ID='2'  -v /etc/localtime:/etc/localtime:ro -v /data/site:/data/site -v  /data/site/docker/data/doris/fe2:/opt/apache-doris/fe/doris-meta -v /data/site/docker/env/mysql/doris/fe/fe.conf:/opt/apache-doris/fe/conf/fe.conf:ro  -v /data/file/logs/doris/fe2:/opt/apache-doris/fe/log    selectdb/doris.fe-ubuntu


docker run -d --name fe3 --hostname fe3  --restart always  --privileged=true --user=root  --network mgr  --ip 172.18.0.213  -e TZ='Asia/Shanghai'   --ulimit nofile=262144:262144   -p 8033:8030 -p 9033:9030  -e FE_SERVERS='fe1:172.18.0.211:9010,fe2:172.18.0.212:9010,fe3:172.18.0.213:9010'  -e FE_ID='3'  -v /etc/localtime:/etc/localtime:ro -v /data/site:/data/site -v  /data/site/docker/data/doris/fe3:/opt/apache-doris/fe/doris-meta -v /data/site/docker/env/mysql/doris/fe/fe.conf:/opt/apache-doris/fe/conf/fe.conf:ro  -v /data/file/logs/doris/fe3:/opt/apache-doris/fe/log    selectdb/doris.fe-ubuntu


docker run -d --name be1 --hostname be1  --restart always  --privileged=true --user=root  --network mgr  --ip 172.18.0.221  -e TZ='Asia/Shanghai'   --ulimit nofile=262144:262144  -p 8041:8040  -e FE_SERVERS='fe1:172.18.0.211:9010,fe2:172.18.0.212:9010,fe3:172.18.0.213:9010'  -e BE_ADDR='172.18.0.221:9050'  -v /etc/localtime:/etc/localtime:ro -v /data/site:/data/site  -v  /data/site/docker/data/doris/be1:/opt/apache-doris/be/storage -v /data/site/docker/env/mysql/doris/be/be.conf:/opt/apache-doris/be/conf/be.conf -v /data/file/logs/doris/be1:/opt/apache-doris/be/log   selectdb/doris.be-ubuntu


docker run -d --name be2 --hostname be2  --restart always  --privileged=true --user=root  --network mgr  --ip 172.18.0.222  -e TZ='Asia/Shanghai'   --ulimit nofile=262144:262144  -p 8042:8040 -e FE_SERVERS='fe1:172.18.0.211:9010,fe2:172.18.0.212:9010,fe3:172.18.0.213:9010'  -e BE_ADDR='172.18.0.222:9050'   -v /etc/localtime:/etc/localtime:ro -v /data/site:/data/site  -v  /data/site/docker/data/doris/be2:/opt/apache-doris/be/storage -v /data/site/docker/env/mysql/doris/be/be.conf:/opt/apache-doris/be/conf/be.conf  -v /data/file/logs/doris/be2:/opt/apache-doris/be/log   selectdb/doris.be-ubuntu


docker run -d --name be3 --hostname be3  --restart always  --privileged=true --user=root  --network mgr  --ip 172.18.0.223  -e TZ='Asia/Shanghai'   --ulimit nofile=262144:262144  -p 8043:8040   -e FE_SERVERS='fe1:172.18.0.211:9010,fe2:172.18.0.212:9010,fe3:172.18.0.213:9010'  -e BE_ADDR='172.18.0.223:9050'   -v /etc/localtime:/etc/localtime:ro -v /data/site:/data/site  -v  /data/site/docker/data/doris/be3:/opt/apache-doris/be/storage -v /data/site/docker/env/mysql/doris/be/be.conf:/opt/apache-doris/be/conf/be.conf  -v /data/file/logs/doris/be3:/opt/apache-doris/be/log   selectdb/doris.be-ubuntu


mkdir -p  /data/site/docker/data/doris/{fe1,fe2,fe3}

mkdir -p  /data/site/docker/data/doris/{be1,be2,be3}

mkdir -p  /data/file/logs/doris/{fe1,fe2,fe3}

mkdir -p  /data/file/logs/doris/{be1,be2,be3}

fe1  fe2  fe3  be1  be2  be3

rm  -rf  /data/site/docker/data/doris/fe1/* /data/site/docker/data/doris/fe2/*  /data/site/docker/data/doris/fe3/*  /data/site/docker/data/doris/be1/*  /data/site/docker/data/doris/be2/*   /data/site/docker/data/doris/be3/*  


-Doris 内置 root,密码默认为空。

mysql  -h 172.18.0.211 -P9030 -uroot  --skip-ssl

ALTER SYSTEM ADD BACKEND "172.18.0.221:9050";

ALTER SYSTEM ADD BACKEND "172.18.0.222:9050";

ALTER SYSTEM ADD BACKEND "172.18.0.223:9050";

SHOW BACKENDS\G

-配置fe

docker cp fe1:/opt/apache-doris/fe/conf/fe.conf  /data/site/docker/env/mysql/doris/fe/

vim  /data/site/docker/env/mysql/doris/fe/fe.conf

priority_networks = 172.18.0.0/16;172.17.0.0/16

docker exec -it  fe1  /bin/bash

show frontends\G;

-配置be

docker cp be1:/opt/apache-doris/be/conf/be.conf  /data/site/docker/env/mysql/doris/be/

vim  /data/site/docker/env/mysql/doris/be/be.conf

priority_networks = 172.18.0.0/16;172.17.0.0/16

docker exec -it  be1  /bin/bash

docker exec -it  be2  /bin/bash

docker exec -it  be3  /bin/bash

-be加上mysql密码启动

sed -i "s/mysql -uroot -P9030/mysql -uroot -P9030  -p'wdqdmm@r'/" /usr/local/bin/entry_point.sh

sed -i "s/mysql -uroot -P9030/mysql -uroot -P9030  -p'wdqdmm@r'/" /usr/local/bin/init_be.sh

-权限

chmod -R 777  /data/site/docker/env/mysql/doris/


# 1FE & 1BE

docker run -d \

--name=fe \

--env FE_SERVERS="fe1:${当前机器的内网IP}:9010" \

--env FE_ID=1 \

-p 8030:8030 \

-p 9030:9030 \

-v /data/fe/doris-meta:/opt/apache-doris/fe/doris-meta \

-v /data/fe/log:/opt/apache-doris/fe/log \

--net=host \

apache/doris:2.0.0_alpha-fe-x86_64


docker run -d \

--name=be \

--env FE_SERVERS="fe1:${当前机器的内网IP}:9010" \

--env BE_ADDR="${当前机器的内网IP}:9050" \

-p 8040:8040 \

-v /data/be/storage:/opt/apache-doris/be/storage \

-v /data/be/log:/opt/apache-doris/be/log \

--net=host \

apache/doris:2.0.0_alpha-be-x86_64


# 3fe_3be

docker network create --driver bridge --subnet=172.20.80.0/24 doris-network

docker run -itd \
    --name=fe-01 \
    --env FE_SERVERS="fe1:172.20.80.2:9010,fe2:172.20.80.3:9010,fe3:172.20.80.4:9010" \
    --env FE_ID=1 \
    -p 8031:8030 \
    -p 9031:9030 \
    -v /data/fe-01/doris-meta:/opt/apache-doris/fe/doris-meta \
    -v /data/fe-01/log:/opt/apache-doris/fe/log \
    --network=doris-network \
    --ip=172.20.80.2 \
    apache/doris:2.0.0_alpha-fe-x86_64
    
docker run -itd \
    --name=fe-02 \
    --env FE_SERVERS="fe1:172.20.80.2:9010,fe2:172.20.80.3:9010,fe3:172.20.80.4:9010" \
    --env FE_ID=2 \
    -p 8032:8030 \
    -p 9032:9030 \
    -v /data/fe-02/doris-meta:/opt/apache-doris/fe/doris-meta \
    -v /data/fe-02/log:/opt/apache-doris/fe/log \
    --network=doris-network \
    --ip=172.20.80.3 \
    apache/doris:2.0.0_alpha-fe-x86_64
    
docker run -itd \
    --name=fe-03 \
    --env FE_SERVERS="fe1:172.20.80.2:9010,fe2:172.20.80.3:9010,fe3:172.20.80.4:9010" \
    --env FE_ID=3 \
    -p 8033:8030 \
    -p 9033:9030 \
    -v /data/fe-03/doris-meta:/opt/apache-doris/fe/doris-meta \
    -v /data/fe-03/log:/opt/apache-doris/fe/log \
    --network=doris-network \
    --ip=172.20.80.4 \
    apache/doris:2.0.0_alpha-fe-x86_64
    
docker run -itd \
    --name=be-01 \
    --env FE_SERVERS="fe1:172.20.80.2:9010,fe2:172.20.80.3:9010,fe3:172.20.80.4:9010" \
    --env BE_ADDR="172.20.80.5:9050" \
    -p 8041:8040 \
    -v /data/be-01/storage:/opt/apache-doris/be/storage \
    -v /data/be-01/log:/opt/apache-doris/be/log \
    --network=doris-network \
    --ip=172.20.80.5 \
    apache/doris:2.0.0_alpha-be-x86_64
    
docker run -itd \
    --name=be-02 \
    --env FE_SERVERS="fe1:172.20.80.2:9010,fe2:172.20.80.3:9010,fe3:172.20.80.4:9010" \
    --env BE_ADDR="172.20.80.6:9050" \
    -p 8042:8040 \
    -v /data/be-02/storage:/opt/apache-doris/be/storage \
    -v /data/be-02/log:/opt/apache-doris/be/log \
    --network=doris-network \
    --ip=172.20.80.6 \
    apache/doris:2.0.0_alpha-be-x86_64
    
docker run -itd \
    --name=be-03 \
    --env FE_SERVERS="fe1:172.20.80.2:9010,fe2:172.20.80.3:9010,fe3:172.20.80.4:9010" \
    --env BE_ADDR="172.20.80.7:9050" \
    -p 8043:8040 \
    -v /data/be-03/storage:/opt/apache-doris/be/storage \
    -v /data/be-03/log:/opt/apache-doris/be/log \
    --network=doris-network \
    --ip=172.20.80.7 \
    apache/doris:2.0.0_alpha-be-x86_64


version: '3'
services:
  docker-fe-01:
    image: "apache/doris:2.0.0_alpha-fe-x86_64"
    container_name: "doris-fe-01"
    hostname: "fe-01"
    environment:
      - FE_SERVERS=fe1:172.20.80.2:9010,fe2:172.20.80.3:9010,fe3:172.20.80.4:9010
      - FE_ID=1
    ports:
      - 8031:8030
      - 9031:9030
    volumes:
      - /data/fe-01/doris-meta:/opt/apache-doris/fe/doris-meta
      - /data/fe-01/log:/opt/apache-doris/fe/log
    networks:
      doris_net:
        ipv4_address: 172.20.80.2
  docker-fe-02:
    image: "apache/doris:2.0.0_alpha-fe-x86_64"
    container_name: "doris-fe-02"
    hostname: "fe-02"
    environment:
      - FE_SERVERS=fe1:172.20.80.2:9010,fe2:172.20.80.3:9010,fe3:172.20.80.4:9010
      - FE_ID=2
    ports:
      - 8032:8030
      - 9032:9030
    volumes:
      - /data/fe-02/doris-meta:/opt/apache-doris/fe/doris-meta
      - /data/fe-02/log:/opt/apache-doris/fe/log
    networks:
      doris_net:
        ipv4_address: 172.20.80.3
  docker-fe-03:
    image: "apache/doris:2.0.0_alpha-fe-x86_64"
    container_name: "doris-fe-03"
    hostname: "fe-03"
    environment:
      - FE_SERVERS=fe1:172.20.80.2:9010,fe2:172.20.80.3:9010,fe3:172.20.80.4:9010
      - FE_ID=3
    ports:
      - 8033:8030
      - 9033:9030
    volumes:
      - /data/fe-03/doris-meta:/opt/apache-doris/fe/doris-meta
      - /data/fe-03/log:/opt/apache-doris/fe/log
    networks:
      doris_net:
        ipv4_address: 172.20.80.4
  docker-be-01:
    image: "apache/doris:2.0.0_alpha-be-x86_64"
    container_name: "doris-be-01"
    hostname: "be-01"
    depends_on:
      - docker-fe-01
      - docker-fe-02
      - docker-fe-03
    environment:
      - FE_SERVERS=fe1:172.20.80.2:9010,fe2:172.20.80.3:9010,fe3:172.20.80.4:9010
      - BE_ADDR=172.20.80.5:9050
    ports:
      - 8041:8040
    volumes:
      - /data/be-01/storage:/opt/apache-doris/be/storage
      - /data/be-01/script:/docker-entrypoint-initdb.d
      - /data/be-01/log:/opt/apache-doris/be/log
    networks:
      doris_net:
        ipv4_address: 172.20.80.5
  docker-be-02:
    image: "apache/doris:2.0.0_alpha-be-x86_64"
    container_name: "doris-be-02"
    hostname: "be-02"
    depends_on:
      - docker-fe-01
      - docker-fe-02
      - docker-fe-03
    environment:
      - FE_SERVERS=fe1:172.20.80.2:9010,fe2:172.20.80.3:9010,fe3:172.20.80.4:9010
      - BE_ADDR=172.20.80.6:9050
    ports:
      - 8042:8040
    volumes:
      - /data/be-02/storage:/opt/apache-doris/be/storage
      - /data/be-02/script:/docker-entrypoint-initdb.d
      - /data/be-02/log:/opt/apache-doris/be/log
    networks:
      doris_net:
        ipv4_address: 172.20.80.6
  docker-be-03:
    image: "apache/doris:2.0.0_alpha-be-x86_64"
    container_name: "doris-be-03"
    hostname: "be-03"
    depends_on:
      - docker-fe-01
      - docker-fe-02
      - docker-fe-03
    environment:
      - FE_SERVERS=fe1:172.20.80.2:9010,fe2:172.20.80.3:9010,fe3:172.20.80.4:9010
      - BE_ADDR=172.20.80.7:9050
    ports:
      - 8043:8040
    volumes:
      - /data/be-03/storage:/opt/apache-doris/be/storage
      - /data/be-03/script:/docker-entrypoint-initdb.d
      - /data/be-03/log:/opt/apache-doris/be/log
    networks:
      doris_net:
        ipv4_address: 172.20.80.7
networks:
  doris_net:
    ipam:
      config:
        - subnet: 172.20.80.0/24


Doris 内置 root,密码默认为空。


mysql  -h FE_HOST -P9030 -uroot


-修改root密码:

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


一个 Doris 集群中有两类节点:Frontend(FE) 和 Backend(BE)。

FE 主要负责元数据管理、集群管理、用户请求的接入和查询计划的解析等工作。

BE 主要负责数据存储、查询计划的执行等工作。

FE 不参与用户数据的处理计算等工作,因此是一个资源消耗较低的节点。而 BE 负责所有的数据计算、任务处理,属于资源消耗型的节点。因此,本文所介绍的资源划分及资源限制方案,都是针对 BE 节点的。FE 节点因为资源消耗相对较低,并且还可以横向扩展,因此通常无需做资源上的隔离和限制,FE 节点由所有用户共享即可。


Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景,这个简短的指南将告诉你如何下载 Doris 最新稳定版本,在单节点上安装并运行它,包括创建数据库、数据表、导入数据及查询等。


# X2Doris

https://www.selectdb.com/tools/x2doris

X2Doris 是 SelectDB 开发的,专门用于将各种离线数据迁移到 Apache Doris 中的核心工具,该工具集 自动建 Doris 表 和 数据迁移 为一体,目前支持了 Apache Doris/Hive/Kudu、StarRocks 数据库往 Doris 或 SelectDB Cloud 迁移的工作,整个过程可视化的平台操作,非常简单易用,减轻数据同步到 Doris 或 SelectDB Cloud 中的门槛


Apache Doris是OLAP,MySQL是OLTP

一个是AP场景的DB,一个是TP场景的DB啊


OLAP(Online Analytical Processing,联机分析处理)主要用于大数据场景下复杂的分析查询和决策支持,重点在于数据分析、多维度分析和报表生成。例如,销售数据分析、市场趋势预测、业务报表生成等。

OLTP(Online Transaction Processing,联机事务处理)主要用于处理实时事务和业务操作,重点在于高并发、高可靠性和数据一致性。例如,在线购物、银行交易、航空订票等需要频繁读写小规模数据的场景。


数据分布:数据被分割成多个部分,每个BE节点都独立地存储一部分数据,节点之间不共享存储,每个节点独立处理自己所负责的数据。

数据处理:每个BE节点都独立地处理自己所负责的数据,节点之间可以并行地进行数据处理,从而提高系统的整体性能。

扩展性:更注重水平横向扩展,通过增加更多的节点来分担数据和负载,从而提供更好的可扩展性和负载均衡性能。

一致性:通过一致性协议和分布式事务来维护数据的一致性。

Apache Doris 是典型的 Shared Nothing 分布式计算架构,每个BE都有自己的CPU、内存和硬盘等,不存在共享资源。多BE采用MPP(大规模并行处理)模式,各处理单元之间通过协议通信,并行处理和扩展能力更好,为 Apache Doris 带来了高可用、极简部署、横向可扩展以及强大的实时分析性能等一系列核心特色。


Apache Doris 底层存储引擎提供了丰富的索引类型来提高数据查询效率。分别是 Short Key 前缀索引(快速扫描)、Ordinal 索引(索引加速)、Zone Map索引(快速定位)、BitMap 索引(人群圈选)、 Bloom Filter 索引(高基数等值查询)和倒排索引时(文本检索)等。前缀索引、Ordinal 索引和 Zone Map 索引不需要用户干预,会随着数据写入智能生成;Bitmap 索引、 Bloom Filter 索引和倒排索引需要用户干预,数据写入时默认不会生成,用户可以有选择地为指定的列添加这3种索引。

基于这些索引,Apache Doris 进行不同场景的大规模数据的复杂计算时,可谓事半功倍。


Apache Doris 默认为例存储(2.0支持行存高并发点查特性),相较于Mysql 主要是行存储模式,在大规模数据的复杂计算中更具优势:

数据压缩效率:列存储模式可以对每一列的数据进行独立的压缩,这样可以通过更好的压缩算法和跳过无关数据来减小存储空间,并且可以提高读取数据时的I/O效率。在行存储模式下,当使用通用的压缩算法对整行数据进行压缩时,由于不同列之间的数据类型和取值范围差异较大,通常较难获得很高的压缩比。

查询性能优化:在复杂计算中,通常需要对大量的列进行聚合、过滤和统计操作。列存储模式可以只读取涉及到的列数据,避免了读取不必要的数据,从而提高查询性能。在行存储模式中,进行聚合、过滤或者统计某些特定列的数值时,需要读取整行数据,包括不相关的列,导致读取了不必要的数据,影响了查询性能。

数据排列连续:列存储模式将同一列的数据放在一起存储,这样相同的数据类型可以连续存储,减少了存储的冗余。同时,列存储模式还可以使用更加紧凑的数据编码方式,进一步减少存储空间的占用。在行存储模式中,每行数据都包含多个列的数值,当表中存在大量的重复数据时,这些数据会被存储多次,从而导致存储冗余,影响查询效率。

并行处理能力:列存储模式可以更好地支持并行计算,在大规模数据复杂计算时可以充分利用多核和分布式计算资源,加速数据处理的速度。在行存储模式中,需要对大量行进行扫描和过滤的复杂查询场景下,由于每行数据都包含多个列的数值,需要同时访问大量行数据,可能会导致并行查询的效率下降。


Apache Doris 由于是分布式列存架构,且具有丰富的索引支撑,非常适用用于大数据场景下复杂的分析查询和决策支持等;MySQL 基于C/S 行存架构,结合 B+tree 能够高效地支持小规模数据频繁读写、快速响应在线业务,主要用于处理实时事务和业务操作,各有千秋!


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回