一、系统架构

Doris是一个MPP的OLAP系统,主要整合了Google Mesa(数据模型),Apache Impala(MPP Query Engine)和Apache ORCFile (存储格式,编码和压缩) 的技术。

既可以满足OLAP查询,也可以满足Adhoc查询需求。

Frontend

Frontend 以 Java 语言为主。主要有如下功能职责:

  • 接收用户连接请求(MySQL 协议层)
  • 元数据存储与管理
  • 查询语句的解析与查询计划的执行
  • 集群管控

Backend

Backend 以 C++ 语言为主。主要有如下功能职责:

  • 数据存储与管理
  • 查询计划的执行

二、Apache Doris 代码目录结构说明

├── be                  // BE 代码目录
├── bin // FE/BE 的启停脚本
├── build_plugin.sh // FE 插件编译脚本
├── build.sh // Doris 编译脚本
├── build-support // 编译用辅助脚本
├── CODE_OF_CONDUCT.md // 贡献者代码行为准则
├── conf // FE/BE 的配置文件
├── contrib // 第三方贡献代码,如 udf
├── CONTRIBUTING_CN.md
├── CONTRIBUTING.md
├── DISCLAIMER
├── docker // Doris 开发镜像的 Dockerfile
├── docs // 文档目录
├── env.sh
├── extension // 扩展功能代码,如 flink connector 等
├── fe // FE 代码目录
├── fe_plugins // FE 插件目录
├── fs_brokers // Broker 代码目录
├── gensrc // thrift/protobuf 等代码生成目录
├── LICENSE.txt
├── NOTICE.txt
├── README.md
├── run-be-ut.sh // BE 单元测试运行脚本
├── run-fe-ut.sh // FE 单元测试运行脚本
├── samples // 示例代码目录
├── thirdparty // 第三方依赖库目录
├── tools // 一些辅助工具
├── tsan_suppressions
├── ui // FE 前端代码目录
└── webroot // 一些静态网页相关代码

主要介绍 fe/ be/ gensrc/ extension/ 四个目录

2.1 FE

├── checkstyle-apache-header.txt
├── checkstyle.xml
├── conf
├── fe-common // 一些 FE 模块的通用代码
├── fe-core // FE 模块主代码
├── pom.xml
├── README
└── spark-dpp // Spark Load 所依赖的 Spark 导入程序代码

fe-core 为 FE 的核心代码模块

├── main
│ ├── cup // 语法定义文件
│ ├── java // 主代码
│ ├── jflex // 词法定义文件
│ └── resources
└── test // 单元测试
├── java
└── resources

在 main/java/org/apache/doris/ 下即是 FE 代码的主要部分了:

├── alter       // 表结构变更操作相关的代码。包括表结构变更,物化视图等。
├── analysis // 包含所有SQL语法的java实例类
├── backup // 备份恢复操作相关的代码
├── blockrule // SQL 黑名单相关代码
├── catalog // 包含元数据操作的主类和各种数据库、表、分区的元数据实例类
├── clone // 数据副本修复和均衡相关的代码
├── cluster // 已废弃
├── common // 一些工具类和通用定义
├── consistency // 数据一致性校验相关的代码
├── deploy // 部署相关代码
├── external // Doris on Elasticsearch相关的代码
├── ha // 元数据高可用相关的代码
├── http // http v1 代码
├── httpv2 // http v2 代码(逐步替换v1)
├── journal // 元数据日志相关的代码
├── ldap // LDAP 认证相关代码
├── load // 导入作业相关代码
├── master // FE Master角色相关的操作代码,如元数据Checkpoint,BE任务汇报的处理等。
├── metric // FE 监控指标相关的代码
├── monitor // JVM 监控相关代码
├── mysql // MySQL协议层相关代码
├── PaloFe.java // Main函数入口
├── persist // 元数据持久化相关的代码
├── planner // 查询优化器相关的代码
├── plugin // Frontend端插件管理相关代码
├── qe // 用于处理各类SQL请求相关的代码。如查询请求的处理类、DDL请求的处理类等
├── resource // 资源标签相关的代码
├── rewrite // 查询优化器重写规则相关的代码
├── rpc // Frontend和Backend之间RPC协议相关的代码
├── service // Frontend侧各种服务器端代码
├── system // 集群节点的实例类和集群节点管理相关的代码
├── task // Frontend发往Backend的各类任务相关的代码
└── transaction // 导入事务相关代码

2.2 BE

├── CMakeLists.txt  // CMake 编译文件
├── src // 主代码目录
├── test // 单元测试 主代码目录包含:
├── agent // FE 下发的 agent task 相关处理类
├── common // 通用类
├── env // 文件系统操作类
├── exec // 执行算子相关代码
├── exprs // 表达式、函数计算相关代码
├── geo // 地理位置函数相关代码
├── glibc-compatibility // GLIBC 兼容代码
├── gutil // Google gutil 相关代码
├── http // BE 端 http server 相关代码
├── olap // 存储层代码
├── plugin // BE 插件管理相关代码
├── runtime // 查询层运行时相关代码
├── service // BE 对外服务接口相关代码
├── testutil // 单元测试辅助类
├── tools // 辅助工具相关代码
├── udf // 用户自定义函数相关代码
└── util // 一些工具类

2.3 gensrc

├── Makefile
├── proto // protobuf 定义文件
├── script // 一些辅助脚本,包括函数定义代码生成模板等
└── thrift // thrift 定义文件

2.4 extension

├── DataX                   // DataX doriswriter 插件
├── flink-doris-connector // Flink Doris Connector
├── logstash // logstash 导入插件
└── spark-doris-connector // Spark Doris Connector

三、 源码编译部署

使用docker镜像编译

# 挂载maven仓库及源码目录并进入镜像
$ docker run -it -v /data/dev:/root/.m2 -v /root/code/incubator-doris/:/root/incubator-doris/ apache/incubator-doris:build-env-1.3.1 # 编译
sh build.sh # 编译文件位置
output/

WebUi:

http://ip:8030/login

默认登陆账号: admin/

[Apache Doris] Apache Doris 架构及代码目录解读的更多相关文章

  1. Apache web服务器(LAMP架构)(week3_day4)--技术流ken

    apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 3).URL 统一资源定位符 http:/ ...

  2. Apache Hudi 设计与架构最强解读

    感谢 Apache Hudi contributor:王祥虎 翻译&供稿. 欢迎关注微信公众号:ApacheHudi 本文将介绍Apache Hudi的基本概念.设计以及总体基础架构. 1.简 ...

  3. Apache web服务器(LAMP架构)

    Apache web服务器(LAMP架构) apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 ...

  4. 带有Apache Spark的Lambda架构

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 目标 市场上的许多玩家已经建立了成功的MapReduce工作流程来每天处理以TB计的历史数据.但是谁愿意等待24小时才能获得最新的分析结果? ...

  5. Httpd服务进阶知识-基于Apache Modele的LAMP架构之Discuz!案例

    Httpd服务进阶知识-基于Apache Modele的LAMP架构之Discuz!论坛案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装依赖包及数据库  博主推荐阅读: ...

  6. Httpd服务进阶知识-基于Apache Modele的LAMP架构之WordPress案例

    Httpd服务进阶知识-基于Apache Modele的LAMP架构之WordPress案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装依赖包及数据库授权 博主推荐阅读 ...

  7. centos7.2安装apache比较简单,直接上代码

    centos7.2安装apache比较简单,直接上代码 1.安装 yum install httpd    2.启动apache systemctl start httpd.service    3. ...

  8. Httpd服务进阶知识-基于Apache Modele的LAMP架构之PhpMyAdmin案例

    Httpd服务进阶知识-基于Apache Modele的LAMP架构之PhpMyAdmin案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常见LAMP应用 PhpMyAdm ...

  9. 学习一下 SpringCloud (一)-- 从单体架构到微服务架构、代码拆分(maven 聚合)

    一.架构演变 1.系统架构.集群.分布式系统 简单理解 (1)什么是系统架构? [什么是系统架构?] 系统架构 描述了 在应用程序内部,如何根据 业务.技术.灵活性.可扩展性.可维护性 等因素,将系统 ...

  10. Apache Beam WordCount编程实战及源码解读

    概述:Apache Beam WordCount编程实战及源码解读,并通过intellij IDEA和terminal两种方式调试运行WordCount程序,Apache Beam对大数据的批处理和流 ...

随机推荐

  1. 代码随想录Day21

    669. 修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high.通过修剪二叉搜索树,使得所有节点的值在[low, high]中.修剪树 不应该 改变保留在树 ...

  2. Redis相关总结

    一.缓存雪崩.缓存穿透 现象:缓存雪崩:大量缓存同时过期.缓存中间件宕机 缓存穿透:访问不存在key.缓存过期解决:缓存雪崩:设置不同过期时间 缓存穿透:不存在key也存入缓存.使用布隆过滤器.使用分 ...

  3. windows中MySQL迁移数据存放盘符位置

    由于刚开始安装mysq时都选择了默认安装,数据存放在了c盘,后面数据量过大c盘不堪重负,所以迁移数据到D盘 windows中MySQL迁移数据存放盘符位置 参考: https://blog.csdn. ...

  4. 关于捣鼓Gentoo的一些见解

    现在很少有人使用gentoo,大家对它的印象都是一个很难用的系统,我想给大家讲讲折腾Gentoo一年的心得,仅供参考 使用archlinux安装盘,genfstab生成fstab 使用gentoo-k ...

  5. PPT或Visio比较舒适的RGB配色参数

    1.187 204 235 2.222 156 83 3.117 156 83 4.64 116 52 5.117 121 74 6.69 137 148 7.182 194 154 8.207 19 ...

  6. 记录_玩客云v1.0大坑!!!

    刷机 短接后刷入uboot固件, 制作U盘镜像启动会出现莫名其妙的内存写入失败!!!!!!!!!!! 但是这并没坏 拆机 , 短接刷armbian v5.67  内核 3.10, 这个版本刷完后什么特 ...

  7. Docker网络中篇-docker网络的四种类型

    通过上一篇学习,我们对docker网络有了初步的了解.本篇,咱们就来实战docker网络. docker网络实战 实战docker网络,我们将从以下几个案例来讲解 1:birdge是什么? 2:hos ...

  8. Mac M1 汉化 postman V9.12.2

    1. mac上安装 postman 访问:https://www.postman.com/downloads/ 选择 apple chip 2. 访问 https://github.com/hlmd/ ...

  9. 手把手教你安装Jupyter Notebook(保姆级教程)

    来源于:https://blog.csdn.net/weixin_43855159/article/details/137738714 1. 什么是Jupyter Notebook Jupyter N ...

  10. C语言实现一个走迷宫小游戏(深度优先算法)

    补充一下,先前文章末尾给出的下载链接的完整代码含有部分C++的语法(使用Dev-C++并且文件扩展名为.cpp的没有影响),如果有的朋友使用的语言标准是VC6的话可能不支持,所以在修改过后再上传一版, ...