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 PeeringPrivateLink 连接 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 集成 无官方支持,升级困难
相关推荐
love530love3 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
遇事不決洛必達4 小时前
【Python基础】GIL 锁是什么及其对爬虫的影响
爬虫·python·线程·进程·gil锁
CryptoPP4 小时前
快速对接东京证券交易所API数据:实战指南与代码示例
开发语言·人工智能·windows·python·信息可视化·区块链
探物 AI5 小时前
把 MambaOut 塞进 YOLOv11:会有什么样的反应
python·yolo·计算机视觉
跨境数据猎手5 小时前
大数据在电商行业的应用
大数据·运维·爬虫
如竟没有火炬5 小时前
最大矩阵——单调栈
数据结构·python·线性代数·算法·leetcode·矩阵
阳区欠6 小时前
【LangChain】LLM基础介绍
开发语言·python·langchain
Cosolar6 小时前
保姆级 CrewAI 教程:从零构建多智能体协作系统
人工智能·python·架构
GDAL6 小时前
使用 uv 管理 Python 版本
python·uv·版本
真实的菜6 小时前
Redis 从入门到精通(十二):典型业务场景实战 —— 排行榜、限流器、秒杀系统、Session 共享
数据库·redis·python