Doris 并入CMP7(类Cloudera CDP 7.3.1 404华为鲲鹏ARM版)的方案和实施源代码

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

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

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 YARNFlink 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 监控指标上报等,工作量较大。

社区参考项目(非官方)


四、推荐实施路径(无需源码修改)

架构图

Text:

CMP Cluster (HDFS, Hive, Kafka, Spark)

↑↓ (via Connector / Broker Load / Hive Catalog)

Apache Doris (独立部署在3台物理机)

BI Tools (Superset/Tableau via MySQL JDBC)

实施步骤

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 数据湖

六、附:关键开源代码仓库


如你希望我提供 完整的 Parcel 打包脚本模板CMP + Doris 联合部署的 Ansible 脚本示例,可以继续说明你的环境(如 CMP Base 7.1.7 / CMP Public Cloud / 是否启用 Kerberos 等),我可以为你定制。

相关推荐
武子康5 小时前
大数据-243 离线数仓 - 实战电商核心交易增量导入(DataX - HDFS - Hive 分区
大数据·后端·apache hive
代码匠心2 天前
从零开始学Flink:Flink SQL四大Join解析
大数据·flink·flink sql·大数据处理
武子康3 天前
大数据-242 离线数仓 - DataX 实战:MySQL 全量/增量导入 HDFS + Hive 分区(离线数仓 ODS
大数据·后端·apache hive
SelectDB4 天前
易车 × Apache Doris:构建湖仓一体新架构,加速 AI 业务融合实践
大数据·agent·mcp
武子康4 天前
大数据-241 离线数仓 - 实战:电商核心交易数据模型与 MySQL 源表设计(订单/商品/品类/店铺/支付)
大数据·后端·mysql
IvanCodes4 天前
一、消息队列理论基础与Kafka架构价值解析
大数据·后端·kafka
武子康5 天前
大数据-240 离线数仓 - 广告业务 Hive ADS 实战:DataX 将 HDFS 分区表导出到 MySQL
大数据·后端·apache hive
字节跳动数据平台6 天前
5000 字技术向拆解 | 火山引擎多模态数据湖如何释放模思智能的算法生产力
大数据
武子康6 天前
大数据-239 离线数仓 - 广告业务实战:Flume 导入日志到 HDFS,并完成 Hive ODS/DWD 分层加载
大数据·后端·apache hive
字节跳动数据平台7 天前
代码量减少 70%、GPU 利用率达 95%:火山引擎多模态数据湖如何释放模思智能的算法生产力
大数据