Apache Doris 并入CMP7(类Cloudera CDP 7 404版)的方案和实施源代码
截至目前(2025年11月),Apache Doris 并未被 Cloud Data AI 官方支持为 CMP (Cloud Data AI Data Platform )的原生组件 ,因此 不存在官方" 并入 CMP" 的方案或实施源代码 。Cloud Data AI CMP 的服务管理基于 Parcel + Cloud Data AI Manager (CM) 体系,而 Apache Doris 并未提供官方的 Parcel 包或 CM 插件。
不过,社区和企业用户可以通过 自定义集成方式 将 Doris 与 CMP 协同部署和使用。下面将从 可行方案 和 可参考的开源/ 示例代码 两方面详细说明,并提供 模拟实现思路 和 部分脚本示例。
一、可行集成方案概览
| 方案 | 描述 | 是否需要修改源码 |
|---|---|---|
| 1. 独立部署 + 数据互通 | 在 CMP 集群外独立部署 Doris,通过 HDFS/Kafka/Hive 与 CMP 交换数据 | 否 |
| 2. 使用 External Catalog(Doris 2.0+) | Doris 直接查询 Hive 表(通过 Hive Metastore) | 否(仅配置) |
| 3. 自定义 Parcel(实验性) | 手动打包 Doris 为 Cloud Data AI Parcel,通过 CM 管理(非官方) | 是(需编写 parcel.json、脚本等) |
| 4. Spark/Flink Connector 写入 | 利用 Doris 官方提供的连接器从 CMP 中的 Spark/Flink 写入数据 | 否(使用官方 connector) |
✅ 推荐方案:1 + 2 + 4 组合 ------ 无需侵入 CMP,稳定性高,运维清晰。
二、官方连接器源代码(可用于 CMP 集成)
这些是 Apache Doris 官方维护的连接器,可直接用于 CMP 中的 Spark/Flink 作业:
1. Flink Doris Connector
- GitHub: https://github.com/apache/doris/tree/master/extension/flink-doris-connector
- 支持 Flink 1.14~1.18
- 示例写入代码:
Java:
DorisSink.Builder<String> builder = DorisSink.builder();
builder.setDorisReadOptions(DorisReadOptions.builder().build())
.setDorisExecutionOptions(DorisExecutionOptions.builder()
.setLabelPrefix("flink_job")
.setStreamLoadProp(streamLoadProp)
.build())
.setSerializer(new SimpleStringSerializer())
.setDorisOptions(DorisOptions.builder()
.setFenodes("doris-fe:8030")
.setTableIdentifier("db.table")
.setUsername("root")
.setPassword("")
.build());
stream.addSink(builder.build());
2. Spark Doris Connector
- GitHub: https://github.com/apache/doris/tree/master/extension/spark-doris-connector
- 支持 Spark 2.3 ~ 3.4(兼容 CMP Private Cloud)
- 示例读取:
Scala:
val df = spark.read.format("doris")
.option("doris.fenodes", "doris-fe:8030")
.option("doris.table.identifier", "db.table")
.option("user", "root")
.option("password", "")
.load()
✅ 这些连接器可直接在 CMP 的 Spark on YARN 或 Flink on YARN 中使用。
三、实验性方案:将 Doris 打包为 Cloud Data AI Parcel (非官方)
⚠️ 此方案 无官方支持 ,仅适用于高级用户做 PoC 或内部工具化,不建议生产环境使用。
实现原理
Cloud Data AI Parcel 是一个 .parcel 文件(本质是 tar.gz)+ parcel.json + 激活脚本,由 Cloud Data AI Manager 管理生命周期。
步骤简述
- 下载 Doris 二进制包(如 apache-doris-x.x.x-bin.tar.gz)
- 编写 parcel.json
- 编写启动/停止脚本(调用 start_fe.sh, start_be.sh)
- 打包为 .parcel 和 .sha 校验文件
- 部署到 CM 的 parcel repo 目录
- 在 CM 界面分配并激活
示例:parcel.json 片段
Json:
{
"schema_version": 1,
"name": "DORIS",
"version": "2.0.3",
"extraVersionInfo": {
"fullVersion": "2.0.3-cdh7.1.7",
"baseVersion": "2.0.3",
"patchLevel": "0"
},
"scripts": {
"defines": "doris_env.sh",
"start": "scripts/doris_start.sh",
"stop": "scripts/doris_stop.sh"
},
"packages": [],
"components": [
{
"name": "DORIS_FE",
"version": "2.0.3",
"pkg_version": "2.0.3"
},
{
"name": "DORIS_BE",
"version": "2.0.3",
"pkg_version": "2.0.3"
}
]
}
启动脚本示例 (doris_start.sh)
Bash:
#!/bin/bash
source /opt/Cloud Data AI /parcels/DORIS/doris_env.sh
if [ "$ROLE_TYPE" == "DORIS_FE" ]; then
/opt/Cloud Data AI /parcels/DORIS/lib/doris/bin/start_fe.sh --daemon
elif [ "$ROLE_TYPE" == "DORIS_BE" ]; then
/opt/Cloud Data AI /parcels/DORIS/lib/doris/bin/start_be.sh --daemon
fi
🔧 完整实现需处理:配置生成、日志路径、Kerberos 集成、端口冲突、CM 监控指标上报等,工作量较大。
社区参考项目(非官方)
- GitHub 搜索关键词:Cloud Data AI parcel doris
- 目前 无成熟开源项目,仅有零星博客尝试(如 https://github.com/xxx/doris-parcel-demo 仅为示意)
四、推荐实施路径(无需源码修改)
架构图
Text:
CMP Cluster (HDFS, Hive, Kafka, Spark)
↑↓ (via Connector / Broker Load / Hive Catalog)
Apache Doris (独立部署在3台物理机)
↑
BI Tools (Superset/Tableau via MySQL JDBC)
实施步骤
- 部署 Doris 集群
- 配置 Hive Catalog (Doris 2.0+ )
Sql:
CREATE EXTERNAL CATALOG hive_catalog
PROPERTIES (
"type" = "hive",
"hive.metastore.uris" = "thrift://CMP-hive-metastore:9083",
"hadoop.security.authentication" = "kerberos",
"kerberos.principal" = "doris@REALM",
"kerberos.keytab" = "/path/to/doris.keytab"
);
- 从 CMP Spark 写入 Doris
- 将 spark-doris-connector JAR 包放入 Spark 的 --jars
- 提交作业:
Bash:
spark-submit \
--master yarn \
--jars /opt/doris-spark-3.4_2.12-1.3.0.jar \
your_app.py
- 监控与告警
- 使用 Doris 自带 Prometheus Exporter
- 接入 CMP 的 Cloud Data AI Manager 外部监控(通过 API 或 Grafana)
五、总结
| 问题 | 回答 |
|---|---|
| 是否有官方"并入 CMP"方案? | ❌ 无 |
| 是否有官方源代码支持集成? | ✅ 有(Flink/Spark Connector) |
| 能否做成 CM 托管服务? | ⚠️ 可手动实现 Parcel,但无官方支持,风险高 |
| 推荐做法? | 独立部署 Doris + 使用官方 Connector + Hive Catalog 查询 CMP 数据湖 |
六、附:关键开源代码仓库
- Apache Doris 主仓库:https://github.com/apache/doris
- Spark Connector:https://github.com/apache/doris/tree/master/extension/spark-doris-connector
- Flink Connector:https://github.com/apache/doris/tree/master/extension/flink-doris-connector
- Doris Hive Catalog 文档:https://doris.apache.org/docs/ecosystem/hive-catalog/
如你希望我提供 完整的 Parcel 打包脚本模板 或 CMP + Doris 联合部署的 Ansible 脚本示例,可以继续说明你的环境(如 CMP Base 7.1.7 / CMP Public Cloud / 是否启用 Kerberos 等),我可以为你定制。