记 Doris 回归测试S3导入load_parallelism > 1

增加load_parallelism > 1的S3导入用例,测试导入时切分输入文件的逻辑。

这里有几个隐性的问题点(坑):

1、导入的文件一定要大,一般大于128M,否则,即使设置了 load_parallelism > 1 也不会doris的逻辑也不会切分文件并且多线程导入。

应该是min_bytes_per_broker_scanner这个参数控制的,默认是64M。

2、操作系统CA证书路径问题

回归测试里的S3导入用例,一般是从regression-conf.groovy里的配置变量获取endpoint、bucket、ak、sk,其中endpoint是社区流水线的域名,如果在LOAD语句里直接使用域名,那么默认使用https协议连接S3服务,例如:

) WITH S3 (
    "AWS_ENDPOINT" = "cos.ap-beijing.myqcloud.com",
    "AWS_ACCESS_KEY" = "AKIDd9RVMzIOI0V7Wlnbr9JG0WrhJk28zc2H",
    "AWS_SECRET_KEY" = "4uWxMhqnW3Plz97sPjqlSUXO1RhokRuO",
    "AWS_REGION" = "ap-beijing"
)

也可以在域名前加http或https来指定协议:

"AWS_ENDPOINT" = "http://cos.ap-beijing.myqcloud.com"

"AWS_ENDPOINT" = "https://cos.ap-beijing.myqcloud.com"

注意,BE底层是用AWS SDK访问S3服务的,而 AWS SDK 默认是走https,就是说这里如果只传入域名,走的是https协议使用端口443。

走http,LOAD成功,但是,走https失败,报错找不到CA证书(CA公钥):

[IO_ERROR]failed to read from s3://doris-build-1308700295/regression/load/data/test_load_parallelism.csv: curlCode: 77, Problem with the SSL CA cert (path? access rights?)

这个问题搞了好几天,也有对CA理解不够透彻的原因,也有对doris底层代码理解不透彻的原因。

经社区小伙伴提示,可能时CA证书的路径不对,doris找不到,调试doris BE端代码发现,doris和S3通讯用的是aws sdk,endpoint没有处理直接传给aws client,aws client再去选择https协议,找CA证书,而我没有aws sdk代码,不知道aws sdk到哪里找CA证书。

而我用aws cli是可以访问cos.ap-beijing.myqcloud.com并且读取对象的,使用的也是https协议。(后来我猜测aws cli应该是自带CA证书的)

并且curl可以访问https网站,例如https://www.baidu.com,也就是说curl可以进行https通讯,而进行https通讯必须要CA证书,那么curl的CA证书在哪呢?在网上搜搜搜,用 curl -vvI 访问一个https网址可以打印出来:

这里可以看到我机器上的CA证书路径:

/etc/pki/tls/certs/ca-bundle.crt

那么 aws sdk 寻找的CA证书路径是啥,是不是把上面这个文件,放到aws sdk寻找的路径就可以了?

从社区小伙伴那里了解到,这个路径可能和操作系统相关,而我用的是openeuler。

我想到了编译doris时用thirdparty库,里面的bin目录下也有个curl,这个curl寻找CA证书的路径,是不是与doris相同,毕竟都是来自社区的嘛~

我就试了一下这个来自社区的curl:

./thirdparty/installed/bin/curl -vvI https://www.baidu.com

发现它寻找的CA证书的路径是:

/etc/ssl/certs/ca-certificates.crt 

而我本机这个路径下,没有证书文件,尝试拷贝我本机自带的curl用的CA证书,到这个路径:

cp /etc/pki/tls/certs/ca-bundle.crt /etc/ssl/certs/ca-certificates.crt 

再执行S3 LOAD,走https就成功了:

LOAD LABEL part_9744bffa3ea1e (
    DATA INFILE("s3://doris-build-1308700295/regression/load/data/test_load_parallelism.csv")
    INTO TABLE paral_load
    COLUMNS TERMINATED BY ","
    FORMAT AS "CSV"
)
WITH S3 (
    "AWS_ENDPOINT" = "cos.ap-beijing.myqcloud.com",
    "AWS_ACCESS_KEY" = "AKIDd9RVMzIOI0V7Wlnbr9JG0WrhJk28zc2H",
    "AWS_SECRET_KEY" = "4uWxMhqnW3Plz97sPjqlSUXO1RhokRuO",
    "AWS_REGION" = "ap-beijing"
)
PROPERTIES(
    "load_parallelism" = "3",
    "timeout" = "3600"
);

当然这里还有个小问题,就是时而成功,时而失败,经社区小伙伴提醒,应该是网络延迟问题,调大be.conf里的参数为:

buffered_reader_read_timeout_ms = 2000000ms

完美解决,不会有失败了 !

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI搜索相关性在网站和APP上的应用

设定场景:您在寻找一件新衣服,所以在浏览最喜欢的网店。您跳到搜索栏上,输入您要找的东西。您期待出现什么结果? 高度准确、相关和即时的结果。 无论在什么网站上搜索,寻找什么,甚至在打错字或使用了错误的…

JAVA进阶之路JVM-3:JVM内存模型,运行时数据区域划分,程序计数器,虚拟机栈,本地方法栈,堆,元空间,字符串常量池

JVM内存模型 对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C 程序开发程序员这样为每一个操作去写对应的 delete / free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序把内new存控制权利交给JVM虚拟机。一旦…

从源码解析Containerd容器启动流程

从源码解析Containerd容器启动流程 本文从源码的角度分析containerd容器启动流程以及相关功能的实现。 本篇containerd版本为v1.7.9。 更多文章访问 https://www.cyisme.top 本文从ctr run命令出发,分析containerd的容器启动流程。 ctr命令 查看文件cmd/ctr/comman…

高档建筑覆膜板,胶水足表面光滑

在建筑材料行业,选择高质量的建筑覆膜板至关重要。贵港市能强优品木业是专业从事建筑覆膜板生产销售25年的源头工厂。这家工厂一直以来致力于生产出色的覆膜板,以确保建筑物外观精美,持久耐用。 无论是商业大楼还是家庭住宅,外墙装…

气膜建筑助力体育场馆快速普及

传统的室内体育馆投入资金庞大,建设强度高,建设周期漫长。而气膜体育馆的出现,不仅显著降低了建设成本和缩短了建设周期,更符合节能环保的需求,成为推动场馆快速普及的创新建筑形式。 对于校园设施的建设而言&#xff…

可以免费使用的Axure在线版来了

Axure作为一种功能强大的原型设计工具,一直受到设计师的青睐。然而,其高昂的价格可能成为一个门槛,限制了一些设计师的选择。但不用担心,现在有一个免费的Axure在线工具即时设计,功能更完整,更划算&#xf…

『 MySQL数据库 』插入查询结果

文章目录 🎟️ 前言🎟️ 创建一张结构相同的表🎟️ 表内插入查询结果🎫 对表内数据进行去重🎫 配合ORDER BY排序后以及LIMIT分页对数据进行插入 🎟️ 前言 在MySQL数据库中不仅可以直接根据字段类型等对数据…

信而泰 SSL测试方法介绍

[本文介绍在ALPS平台上进行SSL测试的内容和方法] 什么是SSL SSL全称是Secure Sockets Layer,指安全套接字协议,为基于TCP的应用层协议提供安全连接;SSL介于TCP/IP协议栈的第四层和第五层之间,广泛用于电子商务、网上银行等。 SSL…

String你知道多少细节(含面试题)

1 字符串初始化 常见的初始化方式有以下3种 public static void main(String[] args) {String s1 "abc";System.out.println(s1);String s2 new String("abc");System.out.println(s2);char[] s3 {a,b,c};System.out.println(s3);} 【注意】 1.Strin…

【带头学C++】----- 八、C++面向对象编程 ---- 8.10 函数的默认参数

8.10 函数的默认参数 C在声明函数原型的时可为一个或者多个参数指定默认(缺省)的参数值,当函数调用的时候如果没有指定这个值,编器会自动用默认值代替。 通过为函数参数指定默认值,可以在调用函数时省略相应的参数,而该参数将使用…

自定义Windows服务启动失败

文章目录 自定义Windows服务启动失败报错内容解决方案管理员身份运行cmd进入到InstallUtil.exe的路径,使用cd命令。使用InstallUtil.exe工具安装服务。 自定义Windows服务启动失败 报错内容 “无法从命令行或调试器启动服务,必须首先安装Windows服务(使…

TikTok区块链实践:数字社交媒体的去中心化未来

随着区块链技术的日渐成熟,数字社交媒体行业也在探索如何整合区块链,以推动去中心化发展。在这一潮流中,TikTok作为全球领先的短视频平台,积极实践区块链技术,探索数字社交媒体的未来。本文将深入探讨TikTok的区块链实…

PHP项目用docker一键部署

公司新项目依赖较多,扩展版本参差不一,搭建环境复杂缓慢,所以搭建了一键部署的功能。 docker-compose build 构建docker docker-compose up 更新docker docker-compose up -d 后台运行docker docker exec -it docker-php-1 /bin/bas…

第13关 解决K8s中Ingress Nginx控制器无法获取真实客户端IP的问题

------> 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维。 这节课带大家探索并分享最全面的解决在使用Kubernetes(K8s)和Ingress-Nginx-Controller中无法获取客户端真实IP问题的视频教程,帮助你快速理解并解决这一问…

idea 导入外部包 打包失败

一、在项目中引入jar包 二、pom文件添加 引入外部包 <!--应用第三方包监听文件--><dependency><groupId>jnotify</groupId><artifactId>jnotify</artifactId><version>0.94.0</version><scope>system</scope><…

统信桌面版arm系统安装火狐浏览器和浏览器驱动

一、系统信息 二、下载浏览器和驱动 1、浏览器 https://security.debian.org/debian-security/pool/updates/main/f/firefox-esr/firefox-esr_115.5.0esr-1~deb10u1_arm64.deb 2、驱动 https://github.com/mozilla/geckodriver/releases geckodriver-v0.33.0-linux-aarch6…

如何通过nginx进行反向代理

简单介绍 正向代理 正向代理服务器是一个位于客户端和原始服务器(origin server)之间的服务器&#xff0c;为了能够从原始服务器取得内容&#xff0c;客户端向代理发送一个请求并指定目标(原始服务器)&#xff0c;然后代理向原始服务器转交请求并将获得的内容返回给客户端。正向…

短视频账号矩阵系统开发--saas源头技术开发(手机版)

目前PC端网页版基本上已经很倦市场了&#xff0c;所以在这种情况下 &#xff0c;我们已经专注开发短视频矩阵系统pc版3年了&#xff0c;目前我们这边核心技术优势就是都是自己一手搭建开发的并且我们的剪辑算法也是自己一手源头开发的&#xff0c;剪辑成本后期运营成本低&#…

关于MySQL的66个问题

SQL基础掌握不错的小伙伴可以跳过这一部分。当然&#xff0c;可能会现场写一些SQL语句&#xff0c;SQ语句可以通过牛客、LeetCode、LintCode之类的网站来练习。 1. 什么是内连接、外连接、交叉连接、笛卡尔积呢&#xff1f; 内连接&#xff08;inner join&#xff09;&#xf…

初刷leetcode题目(10)——数据结构与算法

&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️…