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
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 能够高效地支持小规模数据频繁读写、快速响应在线业务,主要用于处理实时事务和业务操作,各有千秋!