当前位置: 首页 > news >正文

使用Doris broker load导入数据到带Kerberos的HA HDFS的命令详解

以下是关于 Doris Broker Load 结合 Kerberos 认证的 HDFS 数据导入的详细解析:


一、Broker Load 核心原理

Broker Load 是 Doris 中用于从 HDFS/S3 等远程存储系统异步导入大数据的工具,其核心流程如下:

  1. 任务提交:用户通过 SQL 提交 Broker Load 任务至 FE(Frontend)。
  2. 计划生成:FE 根据文件大小和 BE(Backend)节点数量生成分布式执行计划。
  3. 数据拉取:BE 通过 Broker 进程(已集成 HDFS/S3 支持)拉取 HDFS 数据。
  4. 转换与写入:BE 进行数据格式转换(如 ORC/Parquet 解析)并写入 Doris 存储层。
  5. 状态确认:所有 BE 完成写入后,FE 汇总状态并标记任务成功或失败。
    在这里插入图片描述

二、Kerberos 认证的 HDFS 配置要点

当 HDFS 启用 Kerberos 安全认证时,需额外配置以下参数:

1. Broker 进程配置

在 Broker 的 conf/apache_hdfs_broker.conf 中添加:

# 启用 Kerberos 认证
hadoop.security.authentication = kerberos
# Kerberos 主体和密钥表路径
kerberos_principal = your_principal@REALM
kerberos_keytab = /path/to/keytab/file.keytab
# HDFS 核心配置
hadoop_conf_dir = /path/to/hadoop/conf

需确保:

  • Keytab 文件权限:Broker 进程有读取权限(是broker的启动用户对keytab文件有读权限)。
  • krb5.conf 同步:所有节点同步 Kerberos 配置文件(/etc/krb5.conf)。

2. 导入任务 SQL 示例

-- 创建hdfs broker,不指定字段
LOAD LABEL broker_load_test_user111
(
    DATA INFILE("hdfs://hadoop/user/test/zpf/test/user_test.txt")
    INTO TABLE `user_test`
    COLUMNS TERMINATED BY ","
    FORMAT AS CSV
)
WITH HDFS
(
    "fs.defaultFS" = "hdfs://ns01",
    "hadoop.security.authentication" = "kerberos",
    "hadoop.kerberos.principal" = "user01@HADOOP.COM",
    "hadoop.kerberos.keytab" = "/etc/security/keytabs/user01.keytab",
    "dfs.nameservices" = "ns01",
    "dfs.ha.namenodes.ns01" = "nn1,nn2",
    "dfs.namenode.rpc-address.ns01.nn1" = "192.168.1.101:8020",
    "dfs.namenode.rpc-address.ns01.nn2" = "192.168.1.102:8020",
    "dfs.client.failover.proxy.provider.ns01" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider",
    "hadoop.security.auth_to_local" = "RULE:[1:$1@$0](^.*@.*$)s/^(.*)@.*$/$1/g
                                   RULE:[2:$1@$0](^.*@.*$)s/^(.*)@.*$/$1/g
                                   DEFAULT"
)
PROPERTIES
(
    "timeout" = "14400",				# 导入的超时时间,单位秒。范围是 1 秒 ~ 259200 秒。
    "max_filter_ratio" = "0",			# 最大容忍可过滤(数据不规范等原因)的数据比例,默认零容忍。
    "strict_mode" = "true",				# 是否开启严格模式。
    "partial_columns" = "false",		# 是否使用部分列更新,只在表模型为 Unique Key 且采用 Merge on Write 时有效。
    "timezone" = "Asia/Shanghai",		# 本次导入所使用的时区
    "load_parallelism" = "8",			# 每个 BE 上并发 instance 数量的上限。
    "send_batch_parallelism" = "1",		# sink 节点发送数据的并发度,仅在关闭 memtable 前移时生效。
    "load_to_single_tablet" = "false",	# 是否每个分区只导入一个 tablet,默认值为 false。
	"skip_lines" = "0",					# 跳过 CSV 文件的前几行。
	"trim_double_quotes" = "false",		# 是否裁剪掉导入文件每个字段最外层的双引号。
    "priority" = "NORMAL",				# 导入任务的优先级。"HIGH" 或 "NORMAL" 或 "LOW"
    "exec_mem_limit" = "2147483648"		# 导入内存限制,默认为 2GB,单位为字节。
)
COMMENT "备注、注释";

三、常见问题与解决方案

1. 认证失败:Server asks to fall back to SIMPLE auth

  • 原因:Broker 未正确配置 Kerberos 或密钥表路径错误。
  • 解决
    • 检查 kerberos_keytab 路径是否存在且权限正确。
    • hadoop_conf_dir 中确认 core-site.xmlhdfs-site.xml 包含 Kerberos 配置。

2. 文件读取超时

  • 原因:HDFS 节点网络延迟或 Kerberos 票据过期。
  • 解决
    • 增加 timeout 参数(默认 4 小时)。
    • 使用 kinit -kt /path/to/keytab your_principal 手动续期票据。

3. 数据格式解析错误

  • 原因:HDFS 文件格式(如 ORC/Parquet)与 Doris 表结构不匹配。
  • 解决
    • 使用 DESC target_table 核对字段顺序和类型。
    • 通过 FORMAT AS 显式指定文件格式。

4. ​Hadoop 版本兼容性

​Hadoop 版本兼容性:确保 Broker 支持的 Hadoop 版本与集群一致(如 Hadoop 3.3 需对应配置)

5. ​端口冲突

​端口冲突:修改 Doris 默认端口(如 webserver_port)避免与 Hadoop 服务冲突


四、性能优化建议

  1. 并行度控制:通过 BROKER_INSTANCE 参数分配多个 Broker 进程提升吞吐。
  2. 压缩优化:启用 HDFS 的 Snappy/LZ4 压缩减少传输时间。
  3. 内存调整:增大 BE 节点的 mem_limitquery_timeout 避免 OOM。

五、与其他导入方式的对比

特性Broker LoadStream LoadRoutine Load
数据源HDFS/S3本地文件/HTTP流Kafka
认证支持Kerberos/简单认证简单认证SASL/SSL
适用场景大数据批量导入小文件实时写入流式数据持续消费

通过以上配置和优化,Broker Load 可高效稳定地完成 Kerberos 认证的 HDFS 数据导入。如需进一步调试,可通过 SHOW LOAD WHERE LABEL = "label_20250319" 查看任务状态。

-- 查看导入状态
show load from test where label = 'broker_load_test_user111'\G;
-- 查看具体报错内容
show load warnings on '';

相关文章:

  • dns解析速度很快网页打开不了?
  • 5G通信协议相关
  • Leetcode 3494. Find the Minimum Amount of Time to Brew Potions
  • 网络编程--服务器双客户端聊天
  • 论文阅读:2023 arxiv Multiscale Positive-Unlabeled Detection of AI-Generated Texts
  • 从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.1.2多头注意力扩展与掩码机制(因果掩码与填充掩码)
  • Qt中通过QLabel实时显示图像
  • 数据分析处理库-Pandas
  • 2.1.项目管理前言
  • 除了setup的表达方法,vue3还有什么表达方法
  • MySQL 处理重复数据:保留一条与两条的实现方案
  • 鸿蒙harmonyOS:笔记 正则表达式
  • Cloudfare内网穿透配置
  • Java设计模式之中介者模式
  • YOLO11改进|全网首发|YOLO11中引入轻量级坐标注意力LCA
  • (UI自动化测试web端)第二篇:元素定位的方法_class定位
  • OpenCV平滑处理:图像去噪与模糊技术详解
  • LeetCode(704):二分查找
  • 【大模型科普】大模型:人工智能的前沿(一文读懂大模型)
  • Canal同步延迟和数据丢失优化方案
  • 纪念苏联伟大卫国战争胜利80周年阅兵彩排,解放军仪仗队亮相
  • 观察|印巴交火开始升级,是否会升级为第四次印巴战争?
  • 特朗普称美军舰商船应免费通行苏伊士运河,外交部:反对任何霸凌言行
  • 农行原首席专家兼浙江省分行原行长冯建龙主动投案被查
  • 国铁:今天预计发送旅客2110万人次,加开列车1896列
  • 降雪致长白山天池景区关闭,有游客在户外等待一小时,景区回应