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 小时前
万卡推理集群存储选型分析:从核心架构到应用视角
大数据·科技·算法·架构
朴马丁7 小时前
预制菜的“数字厨房”:PLM如何支撑菜品标准化与供应链高效协同?
大数据·人工智能·食品行业·流程行业plm
奋斗的老史8 小时前
Spring-Boot 集成 TDengine 完整实战
大数据·时序数据库·tdengine
qq21084629538 小时前
【数据库】TDengine 清理旧数据
数据库·oracle·tdengine
郑洁文9 小时前
音乐数据分析研究与应用
大数据·数据挖掘·数据分析·音乐数据分析
initialize13069 小时前
Postgresql(Oracle兼容) 到Oracle19.9字符语义
数据库·oracle
成长之路5149 小时前
【实证分析】地市环境规制综合指数测算-原始数据+do代码(2011-2024年)
大数据
逸模10 小时前
AI+BIM 重构连锁公装新范式 逸模打造数字化营建核心底座
大数据·人工智能·笔记·其他·信息可视化·重构
phltxy10 小时前
MCP 从协议到 Spring AI 实战
人工智能·spring·oracle
谁似人间西林客11 小时前
工业大数据实战:看中国智造如何用数据驱动效率革命
大数据·单例模式