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

相关推荐
jianghua0015 小时前
Django视图与URLs路由详解
数据库·django·sqlite
大尚来也5 小时前
双库协同,各取所长:.NET Core 中 PostgreSQL 与 SQLite 的优雅融合实战
postgresql·sqlite·.netcore
无忧智库6 小时前
某市“十五五“知识产权大数据监管平台与全链条保护系统建设方案深度解读(WORD)
大数据·人工智能
综合热讯6 小时前
股票融资融券交易时间限制一览与制度说明
大数据·人工智能·区块链
华农DrLai6 小时前
Spark SQL Catalyst 优化器详解
大数据·hive·sql·flink·spark
Pluchon6 小时前
硅基计划4.0 算法 简单模拟实现位图&布隆过滤器
java·大数据·开发语言·数据结构·算法·哈希算法
岁岁种桃花儿6 小时前
Flink从入门到上天系列第一篇:搭建第一个Flink程序
大数据·linux·flink·数据同步
历程里程碑6 小时前
普通数组-----除了自身以外数组的乘积
大数据·javascript·python·算法·elasticsearch·搜索引擎·flask
繁华落尽,寻一世真情6 小时前
【基于 AI 的智能小说创作助手】MuMuAINovel-sqlite 基于 AI 的智能小说创作助手
数据库·人工智能·sqlite
无忧智库6 小时前
某市“十五五”智慧教育2.0建设方案深度解读:从数字化转型到数智化融合的跨越之路(WORD)
大数据