使用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/gRULE:[2:$1@$0](^.*@.*$)s/^(.*)@.*$/$1/gDEFAULT"
)
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 '';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38694.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字化转型 2.0:AI、低代码与智能分析如何重塑企业竞争力?

引言:数字化转型进入2.0时代 在过去的十几年里,企业的数字化转型(1.0)主要围绕信息化和自动化展开,例如引入ERP、CRM等系统,提高办公效率,减少人为失误。然而,随着市场竞争加剧&…

指针,数组 易混题解析(一)

目录 一.相关知识点 1.数组名是什么? 两个例外: 2.strlen 3.sizeof 4. * ( ) 与 [ ] 的互换 二.一维数组 三.字符数组 1. 字符 (1)sizeof (2)strlen 2.字符串 (1)si…

ABC392题解

A 算法标签: 模拟 #include <iostream> #include <algorithm> #include <cstring>using namespace std;int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int w[3];for (int i 0; i < 3; i) cin >> w[i];sort(w, w 3);if (w[0]…

Quartus + VScode 实现模块化流水灯

文章目录 一、通过VScode编写Verilog代码二、模块化编程三、代码示例 一、通过VScode编写Verilog代码 1、下载Vscode 2、下载相关插件 搜索Verilog就会弹出有如图所示的插件&#xff0c;下载并安装 3、创建Quartus项目 4、创建完成后点击Tools&#xff0c;选择Options 然后在…

简单讲一下控制系统所用的PID公式

2025年3月23日电子电工实验室讲课大纲 哈喽&#xff0c;小伙伴们大家好&#xff0c;今天我们来讲一下PID&#xff01;首先我们的针对的场景是什么——循迹小车&#xff01; 就是我们刚入手STM32时&#xff0c;我们可能会制作一个循迹小车。我们想让那个小车走直线&#xff0c;但…

直观理解ECC椭圆曲线加密算法

数学还是挺有逻辑的&#xff0c;给出计算的操作步骤 就能得出想要结果 背景&#xff1a; ● ECC 是一种极其巧妙的 非对称加密算法 , 其完美利用了 椭圆曲线几何累加 不可逆的性质 ● 拥有 密钥体积小&#xff0c;计算速度快的优势&#xff0c;被广泛用于各种区块链&#xff0c…

深度解析 Android Matrix 变换(二):组合变换 pre、post

前言 在上一篇文章中&#xff0c;我们讲解了 Canvas 中单个变换的原理和效果&#xff0c;即缩放、旋转和平移。但是单个旋转仅仅是基础&#xff0c;Canvas 变换最重要的是能够随意组合各种变换以实现想要的效果。在这种情况下&#xff0c;就需要了解如何组合变换&#xff0c;以…

c++之迭代器

一.迭代器的基本概念 1.什么是迭代器 迭代器是一种对象&#xff0c;它提供了一种访问容器中各个元素的方法&#xff0c;同时隐藏了容器内部的实现细节。简单来说&#xff0c;迭代器就像是一个指针&#xff0c;它可以指向容器中的某个元素&#xff0c;并且能够通过一些操作&am…

在 .NET 9.0 Web API 中实现 Scalar 接口文档及JWT集成

示例代码&#xff1a;https://download.csdn.net/download/hefeng_aspnet/90408075 介绍 随着 .NET 9 的发布&#xff0c;微软宣布他们将不再为任何 .NET API 项目提供默认的 Swagger gen UI。以前&#xff0c;当我们创建 .NET API 项目时&#xff0c;微软会自动添加 Swagger…

【操作系统笔记】操作系统的功能

上节课,我们学习了《什么是操作系统》。接下来,我们来看看操作系统有哪些功能? 这里讲的内容有两部分,一个是操作系统的目标,另外一个就是操作系统的功能。这两个细节可能会在考试的时候考到,但是最近好些年很少考到了。为了理解,我们还是一起来看一下。 操作系统的目标…

C/C++蓝桥杯算法真题打卡(Day7)

一、P8723 [蓝桥杯 2020 省 AB3] 乘法表 - 洛谷 算法代码&#xff1a; #include<bits/stdc.h> // 包含标准库中的所有头文件&#xff0c;通常用于竞赛编程中简化代码 using namespace std; // 使用标准命名空间&#xff0c;避免每次调用标准库函数时都要加std:: ty…

数据结构5(初):排序

目录 1、排序的概念以及常见的排序算法 1.1、排序的概念 1.2、常见的排序算法 2、常见排序算法的实现 2.1、插入排序 2.1.1、直接插入排序 2.1.2、希尔排序 2.2、选择排序 2.2.1、直接选择排序 2.2.2、堆排序 2.3、交换排序 2.3.1、冒泡排序 2.3.2、快速排序 2.3.…

VS2022中通过VCPKG安装的ceres之后调试ceres的例程设置

1.采用C20. vcpkg中设置: 2.增加预处理宏: GLOG_USE_GLOG_EXPORT 3.屏蔽sdl错误 在 项目-属性-C/C -命令行中添加 /sdl /w34996 #include "ceres/ceres.h" //#include <iostream> //#include<glog/logging.h>using ceres::AutoDiffCostFunction; usi…

Pydantic字段级校验:解锁@validator的12种应用

title: Pydantic字段级校验:解锁@validator的12种应用 date: 2025/3/23 updated: 2025/3/23 author: cmdragon excerpt: Pydantic校验系统支持通过pre验证器实现原始数据预处理,在类型转换前完成字符清洗等操作。格式验证涵盖正则表达式匹配与枚举值约束,确保护照编号等字…

函数递归和迭代

1.什么是递归&#xff1f; 在C语言中递归就是自己调用自己。 看一下简单函数的递归&#xff1a; 上面的代码实现演示一下函数的递归&#xff0c;最终是会陷入死循环的&#xff0c;栈溢出 。 1.1递归的思想&#xff1a; 把一个大型的问题一步一步的转换成一个个小的子问题来解…

发票查验/发票验真如何用Java实现接口调用

一、什么是发票查验&#xff1f;发票验真接口&#xff1f; 输入发票基本信息发票代码、发票号码、开票日期、校验码后6位、不含税金额、含税金额&#xff0c;核验发票真伪。 该接口也适用于机动车、二手车销售发票、航空运输电子客票、铁路电子客票等。 二、如何用Java实现接口…

AM32-MultiRotor-ESC项目固件编译和烧录方法介绍

AM32-MultiRotor-ESC项目固件编译和烧录方法介绍 &#x1f4cd;AM32-MultiRotor-ESC项目地址:https://github.com/AlkaMotors/AM32-MultiRotor-ESC-firmware&#x1f388;Updater with V8 Bootloader&#xff1a; https://github.com/AlkaMotors/F051_Bootloader_Updater&#…

HarmonyOS:@AnimatableExtend 装饰器自学指南

在最近的项目开发中&#xff0c;我遇到了需要实现复杂动画效果的需求。在探索解决方案的过程中&#xff0c;我发现了 AnimatableExtend 装饰器&#xff0c;它为实现动画效果提供了一种非常灵活且强大的方式。然而&#xff0c;在学习这个装饰器的过程中&#xff0c;我发现相关的…

Windows server 2022域控制服务器的配置

Windows server 2022介绍 一、核心特性与改进 安全核心服务器&#xff08;Secured-Core Server&#xff09; 硬件级安全&#xff1a;支持基于硬件的安全功能&#xff08;如TPM 2.0、Secure Boot、基于虚拟化的安全防护VBS&#xff09;&#xff0c;防止固件攻击。受信任的启动链…

C++语法之模板函数和模板类

模板函数是什么&#xff1f;就是不指定类型的函数&#xff0c;不指定类型如何写代码?所以得用到模板&#xff0c;可以先用模板代替&#xff0c;就好像方程式&#xff0c;先用x,y代替一样。 它的写法是这样&#xff0c;定义函数时&#xff0c;开头加一句:(其中的T就相当于x,y之…