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 等),我可以为你定制。

相关推荐
AI智能探索者4 小时前
揭秘大数据领域特征工程的核心要点
大数据·ai
做cv的小昊5 小时前
【TJU】信息检索与分析课程笔记和练习(8)(9)发现系统和全文获取、专利与知识产权基本知识
大数据·笔记·学习·全文检索·信息检索
AC赳赳老秦6 小时前
DeepSeek 私有化部署避坑指南:敏感数据本地化处理与合规性检测详解
大数据·开发语言·数据库·人工智能·自动化·php·deepseek
C7211BA7 小时前
通义灵码和Qoder的差异
大数据·人工智能
三不原则7 小时前
银行 AIOps 实践拆解:金融级故障自愈体系如何搭建
大数据·运维
oMcLin8 小时前
如何在Oracle Linux 8.4上搭建并优化Kafka集群,确保高吞吐量的实时数据流处理与消息传递?
linux·oracle·kafka
大厂技术总监下海9 小时前
数据湖加速、实时数仓、统一查询层:Apache Doris 如何成为现代数据架构的“高性能中枢”?
大数据·数据库·算法·apache
X***078810 小时前
理解 MySQL 的索引设计逻辑:从数据结构到实际查询性能的系统分析
数据库·mysql·sqlite
l1t10 小时前
NineData第三届数据库编程大赛:用一条 SQL 解数独问题我的参赛程序
数据库·人工智能·sql·算法·postgresql·oracle·数独
菜鸟笔记本11 小时前
linux设置定时备份mysql数据
linux·mysql·oracle