Doris在CMP7(类Cloudera CDP 7 404版华为Kunpeng)启用 Kerberos部署Doris

Doris在CMP7(类Cloudera CDP 7 404版)启用 Kerberos部署Doris

  • CMP Base 7.1.7(即 Cloud Data AI Data Platform ,基于 Cloud Data AI Manager 管理)
  • 启用 Kerberos(企业级安全认证)

这三种场景下,Apache Doris 与 CMP 的集成策略需区别对待 。下面我将分别说明 可行方案、安全集成要点、实施建议 ,并提供 可运行的代码/ 脚本模板(包括 Kerberos 配置、Spark Connector 示例、Hive Catalog 配置等)。


一、总体原则

环境 是否推荐部署 Doris 推荐集成方式
CMP Base 7.1.7 (私有云,Kerberos ✅ 推荐(可控环境) 独立部署 Doris + Kerberos 集成 + Hive Catalog / Spark Connector
CMP Public Cloud ⚠️ 有限支持 仅可通过 External Compute(如 AWS EC2 / Azure VM)部署 Doris,通过 VPC 对等连接访问 CMP 数据湖
Kerberos 启用 ✅ 必须配置 Doris 需配置 Kerberos 客户端,获取 keytab,支持 HDFS/Hive 安全访问

CMP Public Cloud 限制

CMP Public Cloud(如 Data Lake、DW、Streams 等服务)不开放底层节点 SSH 或 Parcel 安装权限 ,无法在托管集群内直接部署 Doris。必须使用 外部计算资源


二、方案 1 :CMP Base 7.1.7 + Kerberos 环境(推荐生产使用)

目标

  • 在 CMP 私有云集群旁独立部署 Doris
  • Doris 能安全读取 Hive 表(通过 Hive Metastore + Kerberos)
  • Spark on YARN 作业可写入 Doris

步骤 1 :准备 Doris 部署节点(3 台)

  • 操作系统:RHEL/CentOS 7/8(与 CMP 一致)
  • 安装 Kerberos 客户端:

Bash:

yum install -y krb5-workstation krb5-libs

  • 从 CMP 集群复制 /etc/krb5.conf 到 Doris 节点

步骤 2 :创建 Doris 服务主体并生成 keytab

在 CMP 的 KDC(如 FreeIPA 或 MIT KDC)中执行:

Bash:

创建主体

kadmin.local -q "addprinc -randkey doris/CMP-node1@EXAMPLE.COM"

kadmin.local -q "addprinc -randkey doris/CMP-node2@EXAMPLE.COM"

kadmin.local -q "addprinc -randkey doris/CMP-node3@EXAMPLE.COM"

生成 keytab(在 Doris FE 节点执行)

kadmin.local -q "xst -k /etc/security/keytabs/doris.keytab doris/CMP-node1@EXAMPLE.COM"

注意:BE 节点也需要对应主机名的主体(或使用通配符 doris/_HOST@REALM,需 KDC 支持)。


步骤 3 :部署 Apache Doris (2.0+

下载地址(以 2.1.0 为例):

Bash:

wget https://archive.apache.org/dist/doris/2.1.0-rc01/apache-doris-2.1.0-bin-x86_64.tar.gz

tar -xzf apache-doris-2.1.0-bin-x86_64.tar.gz -C /opt/

ln -s /opt/apache-doris-2.1.0 /opt/doris

配置 fe/conf/fe.conf:

Ini:

priority_networks = 10.0.0.0/24

enable_token_check = false

配置 be/conf/be.conf:

Ini:

priority_networks = 10.0.0.0/24


步骤 4 :配置 Hive Catalog (支持 Kerberos

在 Doris 中执行 SQL:

Sql:

CREATE EXTERNAL CATALOG hive_kerberos_catalog

PROPERTIES (

"type" = "hive",

"hive.metastore.uris" = "thrift://CMP-hms-host.example.com:9083",

"hive.metastore.sasl.enabled" = "true",

"hive.metastore.kerberos.principal" = "hive/_HOST@EXAMPLE.COM",

"doris.hive.catalog.kerberos.principal" = "doris/CMP-node1@EXAMPLE.COM",

"doris.hive.catalog.kerberos.keytab" = "/etc/security/keytabs/doris.keytab",

"hadoop.security.authentication" = "kerberos",

"hadoop.security.kerberos.ticket.cache.path" = "/tmp/doris_krb5cc"

);

✅ 验证:

Sql:

SHOW CATALOGS;

SWITCH hive_kerberos_catalog;

SHOW DATABASES;

SELECT * FROM default.sales LIMIT 10;


步骤 5 :Spark on YARN 写入 Doris (Kerberos 环境)

5.1 准备 JAR

从 Maven Central 下载适配 Spark 3.2(CMP Base 7.1.7 默认)的版本:

Bash:

示例:Spark 3.2 + Scala 2.12

wget https://repo1.maven.org/maven2/org/apache/doris/spark-doris-connector-3.2_2.12/1.3.0/spark-doris-connector-3.2_2.12-1.3.0.jar

5.2 Spark 作业示例(PySpark

Python:

from pyspark.sql import SparkSession

spark = SparkSession.builder \

.appName("Write to Doris") \

.config("spark.jars", "/path/to/spark-doris-connector-3.2_2.12-1.3.0.jar") \

.getOrCreate()

df = spark.sql("SELECT * FROM hive_table")

df.write.format("doris") \

.option("doris.fenodes", "doris-fe-host:8030") \

.option("doris.table.identifier", "analytics.sales") \

.option("user", "root") \

.option("password", "") \

.option("doris.write.fields", "col1,col2,col3") \

.mode("append") \

.save()

🔐 Kerberos 注意 :Spark 作业本身已通过 CMP 的 YARN/Kerberos 认证,Doris 写入走的是 Doris 自身的 MySQL 协议(非 Kerberos ,因此只需确保 Doris FE 开放 8030 端口且网络可达。


三、方案 2 :CMP Public Cloud (外部 Doris 部署)

架构

Text:

CMP **Public** Cloud Data Lake

↑ (VPC Peering / PrivateLink)

AWS EC2 / Azure VM\] ←─ 部署 Apache Doris **实施要点** * **网络打通** : * 在 AWS:使用 **VPC Peering** 或 **PrivateLink** 连接 CMP Public Cloud VPC * 在 Azure:使用 **VNet Peering** * **Hive Metastore** **访问** : * CMP Public Cloud 的 HMS 通常通过 **Atlas/ Ranger** **网关** 暴露,需申请 **Private Endpoint** * 或通过 **CMP Data Engineering** 集群的 HMS(需开通访问权限) * **Kerberos** : * CMP Public Cloud 使用 **FreeIPA + Kerberos** * 需在 Doris 节点加入 FreeIPA 域(或手动配置 krb5.conf + keytab) * **数据导入** : * 推荐使用 **S3 / ADLS Gen2** 作为中间层: * Spark 作业写 Parquet 到 S3 * Doris 通过 S3 Load 或 Broker Load 导入 **示例:Doris** **从 S3** **加载(无需 Kerberos** **)** Sql: CREATE LOAD LABEL sales_20251105 ( DATA INFILE("s3://my-bucket/sales/\*.parquet") INTO TABLE sales FORMAT **AS** "parquet" ) WITH BROKER "my_s3_broker" PROPERTIES ( "s3.endpoint" = "s3.us-west-2.amazonaws.com", "s3.access_key" = "AKIA...", "s3.secret_key" = "xxxx", "timeout" = "3600" ); *** ** * ** *** **四、关键脚本模板(CMP Base 7.1.7 + Kerberos** **)** **1. krb5.conf** **(与 CMP** **一致)** Ini: \[libdefaults

default_realm = EXAMPLE.COM

dns_lookup_realm = false

dns_lookup_kdc = false

ticket_lifetime = 24h

renew_lifetime = 7d

forwardable = true

realms

EXAMPLE.COM = {

kdc = kdc.example.com

admin_server = kdc.example.com

}

domain_realm

.example.com = EXAMPLE.COM

example.com = EXAMPLE.COM

2. 自动续期 Kerberos Ticket (Cron

Bash:

/etc/cron.d/doris-krb

0 */8 * * * root kinit -k -t /etc/security/keytabs/doris.keytab doris/$(hostname -f)@EXAMPLE.COM && cp /tmp/krb5cc_* /tmp/doris_krb5cc

3. Doris 启动脚本(systemd

Ini:

/etc/systemd/system/doris-fe.service

Unit

Description=Apache Doris FE

After=network.target

Service

Type=forking

User=doris

ExecStart=/opt/doris/fe/bin/start_fe.sh --daemon

ExecStop=/opt/doris/fe/bin/stop_fe.sh

Restart=on-failure

Install

WantedBy=multi-user.target


五、总结与建议

环境 推荐做法 风险
CMP Base 7.1.7 + Kerberos 独立部署 Doris + Hive Catalog + Spark Connector 需手动维护 Doris 集群
CMP Public Cloud 外部 VM 部署 Doris + S3 中转 + VPC Peering 网络/权限配置复杂
通用 不要尝试 Parcel 集成 无官方支持,升级困难
相关推荐
MrSYJ2 小时前
可以指定 Jupyter Notebook 使用的虚拟环境吗
python·llm·agent
quant_19862 小时前
【教程】使用加密货币行情接口 - 查询比特币实时价格
开发语言·后端·python·websocket·网络协议
ytttr8732 小时前
MATLAB实现经验模态分解(EMD)与希尔伯特变换获取能量谱
人工智能·python·matlab
yumgpkpm2 小时前
Doris 并入CMP7(类Cloudera CDP 7.3.1 404华为鲲鹏ARM版)的方案和实施源代码
大数据·oracle·sqlite·sqoop·milvus·cloudera
YangYang9YangYan2 小时前
高职大数据技术专业学习与发展指南
大数据·人工智能·学习·数据分析
熊猫_豆豆2 小时前
Python 写一个标准版和程序员版计算器
开发语言·python·计算器
汤姆yu2 小时前
基于大数据的天气分析与应用系统
大数据
老衲提灯找美女3 小时前
MySQL数据库基础操作:
数据库·mysql·oracle
轻舟客丶3 小时前
ORA-03113的解决方案
数据库·经验分享·笔记·oracle