怎样成为Apache Doris的贡献者

[复制链接]
发表于 2025-10-25 03:26:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
以下是为低级大数据开发工程师筹划的Doris源码阅读与社区贡献结构化筹划,联合Doris的架构特点和Apache社区要求,分阶段从源码明白到实际贡献:

阶段1:根本准备(1-2周)

目标



  • 明白Doris的核心架构与组件职责
  • 搭建源码编译、调试和测试环境
具体步调


  • 技能栈准备

    • 语言根本

      • FE(Frontend):Java(JDK 11+)、SQL分析(ANTLR)
      • BE(Backend):C++(C++17)、列式存储(Apache Arrow)、向量化实行

    • 必学工具

      • Git:分支管理、代码提交规范
      • Maven(FE编译)、CMake(BE编译)
      • IDE:IntelliJ IDEA(FE调试)、CLion/VSCode(BE调试)
      • Docker:快速摆设Doris测试集群


  • Doris架构总览

    • 核心组件

      • FE:负责元数据管理、查询分析(Master/Follower/Observer脚色)
      • BE:负责数据存储、查询实行(分布式存储与MPP盘算)
      • Broker:外部存储接入(HDFS/S3等)

    • 关键特性

      • 列式存储(Segment V2格式)、向量化实行引擎、物化视图

    • 学习资源

      • Doris官方文档
      • 《Doris筹划与实现》社区技能博客


  • 源码下载与编译
    1. # 克隆源码  
    2. git clone https://github.com/apache/doris.git  
    3. cd doris  
    4. git checkout branch-2.0  # 选择稳定分支(如2.0.x)  
    5. # 编译FE(Java)  
    6. cd fe  
    7. mvn clean package -DskipTests  
    8. # 编译BE(C++)  
    9. cd ../be  
    10. ./build.sh --clean --build-type=Release  
    复制代码

阶段2:源码阅读筹划(8-12周)

目标



  • 深入明白FE的SQL分析、元数据管理与BE的存储/查询实行逻辑
  • 把握Doris的核心筹划模式(如向量化实行、分布式变乱)
阅读次序与重点

第1-4周:FE源码精读(Java)


  • SQL分析与查询规划

    • 源码路径:fe/fe-core/src/main/java/org/apache/doris/analysis
    • 关键流程

      • SQL分析:SqlScanner和SqlParser(基于ANTLR天生的语法树)
      • 逻辑筹划天生:Analyzer、QueryStmt
      • 优化器:Cascades Optimizer(基于规则的RBO与基于代价的CBO)


  • 元数据管理

    • 源码路径:fe/fe-core/src/main/java/org/apache/doris/catalog
    • 关键类

      • Catalog:元数据全局管理(表、分区、副本状态)
      • OlapTable:表结构界说(分区分桶、副天职布)

    • 关键机制

      • 元数据同步:FE节点间的元数据高可用(基于BDB-JE)


  • 查询调治与调和

    • 源码路径:fe/fe-core/src/main/java/org/apache/doris/qe
    • 关键类

      • Coordinator:查询任务的拆分与BE节点调治
      • QueryPlan:分布式实行筹划天生


第5-8周:BE源码精读(C++)


  • 存储引擎

    • 源码路径:be/src/olap
    • 关键模块

      • Segment V2:列式存储格式(SegmentReader、PageIO)
      • Compaction:数据归并机制(Base Compaction vs Cumulative Compaction)
      • Tablet管理:数据分片(Tablet)的版本管理与副本同步


  • 查询实行引擎

    • 源码路径:be/src/exec、be/src/vec
    • 关键特性

      • 向量化实行:Block数据结构、向量化算子(HashJoinNode、AggregationNode)
      • MPP实行:ExchangeNode(数据Shuffle)、Pipeline实行模子


  • 资源管理与RPC通讯

    • 源码路径:be/src/runtime、be/src/service
    • 关键类

      • FragmentMgr:查询Fragment的生命周期管理
      • PBackendService:BE与FE的Thrift RPC接口实现


第9-12周:高级特性与工具链


  • 物化视图与索引

    • 源码路径:fe/fe-core/src/main/java/org/apache/doris/materview
    • 实现机制:物化视图的自动选择与增量革新

  • 监控监控与调试工具

    • FE:Web UI(端口8030)的元数据展示
    • BE:http://be_ip:8040的Metrics接口、pprof性能分析


阶段3:实践与社区贡献(一连举行)

目标



  • 通过修复Bug和优化功能到场社区贡献
  • 把握Apache Doris社区的协作规范
具体步调


  • 社区入门

    • 订阅邮件列表

      • dev@doris.apache.org
      • 跟踪JIRA任务:Doris JIRA

    • 筛选得当新手的任务

      • JIRA标签:starter、newcomer、easy
      • 示例任务:

        • 修复文档中的错误(如设置项形貌禁绝确)
        • 增补单位测试(FE的AnalyzerTest或BE的StorageEngineTest)



  • 贡献流程

    • 代码修改

      • 遵照代码规范:

        • FE:Google Java Style Guide
        • BE:Google C++ Style Guide

      • 当地测试:通过run-fe-ut.sh和run-be-ut.sh运行单位测试

    • 提交补丁

      • 天生Patch文件:git format-patch -1 HEAD
      • 提交到JIRA:附上测试结果和修改阐明

    • 社区Review

      • 根据社区反馈迭代修改(大概须要多次Review)


  • 高质量贡献方向

    • 性能优化

      • 分析BE的CPU热门(使用perf或pprof)
      • 示例:优化向量化算子的内存分配(如预分配Block内存池)

    • 功能增强

      • 实现简单的UDF函数(如新增字符串处置惩罚函数)
      • 支持新的数据导入格式(如JSON Lines)



工具与调试本领


  • FE调试(Java)

    • 远程调试
      1. # 启动FE时添加JVM参数  
      2. export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"  
      3. ./fe/bin/start_fe.sh --daemon  
      复制代码

      • 在IntelliJ IDEA中设置Remote Debug(端口5005)


  • BE调试(C++)

    • GDB调试
      1. gdb --args ./be/lib/doris_be --port=9060  
      复制代码
    • 日志日志分析

      • BE日志日志路径:be/log/be.INFO
      • 调解日志日志级别:修改be/conf/be.conf中的sys_log_level=DEBUG



学习资源保举


  • 官方资源

    • Doris代码堆栈Wiki
    • Doris筹划文档

  • 册本与课程

    • 《Doris及时数仓实战》(社区保举)
    • 极客时间:《深入分析Apache Doris》

  • 社区案例

    • 美团、字节跳动等公司的Doris优化实践分享


注意事项


  • 克制过早深入复杂模块

    • 初期克制直接修改分布式变乱(如Schema Change)或查询优化器核心逻辑。

  • 小步验证

    • 每修改一个功能点后,立刻运行干系单位测试和集成测试。

  • 社区沟通礼仪

    • 在邮件列表提问时,附上错误日志、复现步调和已实验的办理方法。
    • 提交代码时注明关联的JIRA编号(如DORIS-XXXX)。


通过此筹划,你可以渐渐把握Doris源码的核心逻辑,并在3-6个月内成为Apache Doris社区的活泼贡献者。发起每周投入10-15小时,联合实践与理论,一连积累履历。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

×
登录参与点评抽奖,加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表