# Doris **Repository Path**: naclnezn/doris ## Basic Information - **Project Name**: Doris - **Description**: Doris - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-12 - **Last Updated**: 2024-08-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Doris # Doris **Doris的主要架构:** - Doris的主要架构分为FE(frontend)、BE(backend)两个角色、两个进程,不依赖于外部的组件,极易部署、运维,FE和BE都有很好的拓展性。 - FE:存储和维护集群的元数据,负责接收和解析用户的查询请求,规划查询计化,调度查询结果 - FE主要分为三个角色:Leader、Follower、Observer - Leader和Follower主要是用来实现Doris集群的高可用,在Leader宕机之后,Follower节点能够迅速代替Leader的工作,能够实现实时恢复元数据,从而保证对Doris集群不造成任何影响。 - Observer是用来拓展查询节点的,同时起到了元数据备份的作用,如果在感知到集群的查询有压力时,可以同通过添加Observer节点来达到提高集群查询的能力,注意:Observer只参与读取,不参与写入。 - BE:负责数据的主要存储和计算,以及根据FE生成的物理执行计划,然后进行查询(分布式,多节点并行执行查询,统一汇总)。同时BE还会将数据存储为3副本或者多副本(可根据数据的权重以及集群的资源进行合理设置,可以动态调整)。 - Broker:broker是一个无状态的进程。其中封装了文件系统的接口,能够为Doris提供访问外部数据源的能力(比如:HDFS、S3等)。通常在每一台节点上部署一个broker的示例即可。 - MysqlClient:Doris是借助MysqlClient协议,所以MysqlClient可以直接访问Doris # 安装 ## 修改内核参数 在启动doris的be时,需要将 Linux 操作系统的内核参数设置为2000000,这里是Doris官方要求的 ```shell sudo sysctl -w vm.max_map_count=2000000 sysctl vm.max_map_count ``` ## 下载Doris的运行环境镜像 ```shell docker pull apache/doris:build-env-ldb-toolchain-latest ``` ## 下载安装包 ```shell # doris程序包 https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-1.2.4.1-bin-x86_64.tar.xz # mysql连接客户端 https://doris-build-hk.oss-cn-hongkong.aliyuncs.com/mysql-client/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz ``` ## 启动镜像环境 ```shell docker run -d -it \ --name=doris \ -p 9030:9030 -p 8030:8030 \ apache/doris:build-env-ldb-toolchain-latest ``` ## 复制安装包到doris容器中 ```shell # 根据实际路径拷贝 docker cp /tools/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz doris:/opt docker cp /tools/apache-doris-1.2.4.1-bin-x86_64.tar.xz doris:/opt ``` ## 进入容器 解压 ```shell # 进入容器 docker exec -it doris bash # 解压文件 cd /opt/ tar -xvf apache-doris-1.2.4.1-bin-x86_64.tar.xz tar -xzvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz # 获取本机容器内网ip地址,需修改到配置文件中。 hostname -i ``` ## 配置fe ```shell cd /opt/apache-doris-1.2.4.1-bin-x86_64/fe vi conf/fe.conf # 打开 priority_networks注释 将刚刚 【hostname -i】 打印出来的内网ip替换到 # 启动 ./bin/start_fe.sh --daemon # 查看java启动进程 jps # 测试是否正常 curl http://127.0.0.1:8030/api/bootstrap ``` ![1716449598398.png](imgs/1716449598398.png) 浏览器地址访问 http://localhost:8030/login,账号root,密码为空 接着在mysql中连接fe,默认无密码 ```shell /opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h127.0.0.1 --skip-ssl show frontends\G; ``` 看到像我这样IsMaster、Join 和 Alive 三列均为true,则表示节点正常 ![1716449585198.png](imgs/1716449585198.png) ## 配置be ```shell #退出mysql exit; #修改配置文件 cd /opt/apache-doris-1.2.4.1-bin-x86_64/be vi conf/be.conf # 和上面一样,替换内网ip priority_networks = 172.17.0.2/24 # 启动脚本中设置jdk的路径 echo $JAVA_HOME vi bin/start_be.sh export JAVA_HOME=/usr/lib/jvm/java-1.8.0 ``` ![1716450059858.png](imgs/1716450059858.png) ```shell # 启动be ./bin/start_be.sh --daemon # 进入mysql /opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h127.0.0.1 --skip-ssl # 将BE节点加入到集群中 ALTER SYSTEM ADD BACKEND "172.17.0.2:9050"; # 显示doris后端详情 SHOW BACKENDS\G ``` Alive : true表示节点运行正常(如果为false,可以尝试等待一会再重新查看,第一次启动会慢一点;或有其他问题在/opt/apache-doris-1.2.4.1-bin-x86_64/be/log/be.out 里面查看日志) ![1716450209950.png](imgs/1716450209950.png) ```shell jps ``` 如果为空则为正确 ![1716450438531.png](imgs/F1716450438531.png) ## 连接数据库 ### 建库建表 下面的DDL,在MySQL是无法运行的 这里使用MySQL仅作为远程连接工具,在实际使用中仅需启动fe与be即可,Doris自动启动和管理内部的 MySQL 实例,用于存储和管理元数据 进入mysql命令: ```shell /opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h127.0.0.1 --skip-ssl ``` ```sql create database demo; use demo; CREATE TABLE IF NOT EXISTS demo.example_tbl ( `user_id` LARGEINT NOT NULL COMMENT "user id", `date` DATE NOT NULL COMMENT "", `city` VARCHAR(20) COMMENT "", `age` SMALLINT COMMENT "", `sex` TINYINT COMMENT "", `last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "", `cost` BIGINT SUM DEFAULT "0" COMMENT "", `max_dwell_time` INT MAX DEFAULT "0" COMMENT "", `min_dwell_time` INT MIN DEFAULT "99999" COMMENT "" ) AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `sex`) DISTRIBUTED BY HASH(`user_id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1" ); exit; ``` 表数据 ```csv 10000,2017-10-01,beijing,20,0,2017-10-01 06:00:00,20,10,10 10006,2017-10-01,beijing,20,0,2017-10-01 07:00:00,15,2,2 10001,2017-10-01,beijing,30,1,2017-10-01 17:05:45,2,22,22 10002,2017-10-02,shanghai,20,1,2017-10-02 12:59:12,200,5,5 10003,2017-10-02,guangzhou,32,0,2017-10-02 11:20:00,30,11,11 10004,2017-10-01,shenzhen,35,0,2017-10-01 10:00:15,100,3,3 10004,2017-10-03,shenzhen,35,0,2017-10-03 10:20:22,11,6,6 ``` ![1716451295282.png](imgs/1716451295282.png) ## 启停命令 ### 启动 ```shell /opt/apache-doris-1.2.4.1-bin-x86_64/fe/bin/start_fe.sh --daemon /opt/apache-doris-1.2.4.1-bin-x86_64/be/bin/start_be.sh --daemon ``` ### 关闭 ```shell /opt/apache-doris-1.2.4.1-bin-x86_64/fe/bin/stop_fe.sh /opt/apache-doris-1.2.4.1-bin-x86_64/be/bin/stop_be.sh ```