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

Doris中的本地routineload环境,用于开发回归测试用例

----------------2024-2-6-更新--------------

doris的routineload,就是从kafka中加载数据到表,特点是定时、周期性的从kafka取数据。

要想在本地开发测试routine load相关功能,需要配置kafka环境,尤其是需要增加routine load回归测试用例时,还需要kafka有回归测试需要的数据。

doris源码里自带了一个脚本 docker/thirdparties/run-thirdparties-docker.sh ,它可以在本地的docker中创建container(里面包含了kafka、zookeeper,总之就是kafka测试环境),并且加载回归测试所需要的数据。

下面就是使用这个脚本,搭建本地kafka环境的步骤:

1、首先本地机器要安装和启动docker服务器,podman也行:

systemctl start docker

或者

systemctl start podman

docker ps

脚本中要用docker-compose,这是个python脚本,要用pip下载:pip install docker-compose 

2、安装Java环境:

export JAVA_HOME=/home/postgres/jdk-1.8.0_201
export PATH=$JAVA_HOME/bin:$PATH

3、安装kafka(客户端)

在docker之外,我们需要kafka客户端,这样可以查看docker中的kafka的topic,由于只需要客户端,只要下载安装包解压就行,不需要任何配置:

[root@qinhvm postgres]# ls kafka_2.13-2.7.2*
kafka_2.13-2.7.2.tgz

kafka_2.13-2.7.2:
bin  config  libs  LICENSE  licenses  NOTICE  site-docs

4、然后就是doris源码里的脚本 docker/thirdparties/run-thirdparties-docker.sh,在我的环境,它有点问题,需要改一下。

其实我们只用到 run-thirdparties-docker.sh 的

if [[ "${RUN_KAFKA}" -eq 1 ]]; then

。。。

fi

这部分代码块,修改后的这部分脚本如下:

if [[ "${RUN_KAFKA}" -eq 1 ]]; then# kafkaKAFKA_CONTAINER_ID="${CONTAINER_UID}kafka"eth0_num=$(ifconfig -a|grep flags=|grep -n ^ens3|awk -F ':' '{print $1}')IP_HOST=$(ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"|tail -n +${eth0_num}|head -n 1)cp "${ROOT}"/docker-compose/kafka/kafka.yaml.tpl "${ROOT}"/docker-compose/kafka/kafka.yamlsed -i "s/doris--/${CONTAINER_UID}/g" "${ROOT}"/docker-compose/kafka/kafka.yamlsed -i "s/localhost/${IP_HOST}/g" "${ROOT}"/docker-compose/kafka/kafka.yamlsudo docker-compose -f "${ROOT}"/docker-compose/kafka/kafka.yaml downif [[ "${STOP}" -ne 1 ]]; thensudo docker-compose -f "${ROOT}"/docker-compose/kafka/kafka.yaml up --build --remove-orphans -dsleep 10s# start_kafka_producers "${KAFKA_CONTAINER_ID}" "${IP_HOST}"fi
fi

下面的红色粗体部分根据自己机器上网卡名替换一下:

eth0_num=$(ifconfig -a|grep flags=|grep -n ^ens3|awk -F ':' '{print $1}')

start_kafka_producers() 这个函数把测试数据写到kafka的topic里,测试数据在doris/docker/thirdparties/docker-compose/kafka/scripts/目录下,这个函数在最新的代码里被注掉了,因为routine load测试用例里,有一段代码替代了它的工作。

还要修改 doris/docker/thirdparties/custom_settings.env:

CONTAINER_UID="doris-mytest-" # 这个要改一下,随便取个名

还需要修改 doris/docker/thirdparties/docker-compose/kafka/kafka.yaml.tpl :

version: "3"

networks:
  doris--kafka--network:
    ipam:
      driver: default
      config:
        - subnet: 168.45.0.0/24

services:
    doris--zookeeper:
        image: wurstmeister/zookeeper
        restart: always
        container_name: doris--zookeeper
        ports:
            - 12181:2181
        networks:
            - doris--kafka--network
    doris--kafka:
        image: wurstmeister/kafka
        restart: always
        container_name: doris--kafka
        depends_on:
            - doris--zookeeper
        ports:
            - 19193:19193
        environment:
            KAFKA_ZOOKEEPER_CONNECT: doris--zookeeper:2181/kafka
            KAFKA_LISTENERS: PLAINTEXT://:19193
            KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:19193
            KAFKA_BROKER_ID: 1
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
        networks:
            - doris--kafka--network
 

上面这些都弄好后,执行 ./run-thirdparties-docker.sh -c kafka,就会下载镜像,创建kafka和zookeeper的容器,配置好网络。

每次执行完本地的routine load测试用例,下次执行前要重复执行一下./run-thirdparties-docker.sh -c kafka 这样可以删除之前测试用例创建的topic,否则会重复插入数据导致测试失败。

但是在执行routine load测试用例时,又遇到了一个问题,就是报找不到类:

这应该是没有把kafka-client的jar加到classpath中,打开run-thirdparties-docker.sh,在文件的最后做如下修改:(kafka-client的jar报在fe中有)

然后就OK了。 

相关文章:

Doris中的本地routineload环境,用于开发回归测试用例

----------------2024-2-6-更新-------------- doris的routineload,就是从kafka中加载数据到表,特点是定时、周期性的从kafka取数据。 要想在本地开发测试routine load相关功能,需要配置kafka环境,尤其是需要增加routine load回…...

【开源项目阅读】Java爬虫抓取豆瓣图书信息

原项目链接 Java爬虫抓取豆瓣图书信息 本地运行 运行过程 另建项目,把四个源代码文件拷贝到自己的包下面 在代码爆红处按ALTENTER自动导入maven依赖 直接运行Main.main方法,启动项目 运行结果 在本地磁盘上生成三个xml文件 其中的内容即位爬取…...

基于opencv-python模板匹配的银行卡号识别(附源码)

目录 介绍 数字模板处理 银行卡图片处理 导入数字模板 模板匹配及结果 介绍 我们有若干个银行卡图片和一个数字模板图片,如下图 我们的目的就是通过对银行卡图片进行一系列图像操作使得我们可以用这个数字模板检测出银行卡号。 数字模板处理 首先我们先对数…...

JAVA设计模式之建造者模式详解

建造者模式 1 建造者模式介绍 建造者模式 (builder pattern), 也被称为生成器模式 , 是一种创建型设计模式. 定义: 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 **建造者模式要解决的问题 ** 建造者模式可以将部件和其组装过程分开…...

ElasticSearch查询语句用法

查询用法包括:match、match_phrase、multi_match、query_string、term 1.match 1.1 不同字段权重 如果需要为不同字段设置不同权重,可以考虑使用bool查询的should子句来组合多个match查询,并为每个match查询设置不同的权重 {"query&…...

美国服务器如何

美国服务器在被选择名单里排名很高,那么美国服务器如何,美国服务器 适用于哪些场景,认可度高吗?接下来小编为您整理发布美国服务器如何的详细情况。 美国服务器通常以其高性能、高可靠性和安全性而受到认可,它们适用于多种业务场…...

远程主机可能不符合glibc和libstdc++ VS Code服务器的先决条件

报错信息 VSCode无法连接远程服务器,终端一直提醒: [22:46:01.906] > Waiting for server log... [22:46:01.936] > Waiting for server log... [22:46:01.951] > [22:46:01.967] > Waiting for server log... [22:46:01.982] > [22:…...

【python基础】sys.argv[]的使用方法

文章目录 前言一、sys.argv是什么?二、实例 前言 本文主要讲解sys.argv[]的使用方法。 一、sys.argv是什么? sys.arg[]的作用就是存储在运行python脚本时候从外部往被运行的py文件里面传递的参数,是一个列表对象。利用好这个属性可以极大的增…...

Element-Ui el-date-picker日期传值异常问题解决办法

首先,只要非常简单的组件引入写法: 然后myDate在data()中是字符串类型 myDate: ‘’ 然后增加一个方法在提交表单到后台的时候,用来转化日期对应到myDate成字符串类型,并且对应到java类 function checkType(value) {if (typeo…...

GO语言集成开发 JetBrains GoLand 2023 中文

JetBrains GoLand 2023是一款专为Go语言开发者打造的集成开发环境(IDE)。它基于IntelliJ IDEA平台,提供了丰富的功能和工具,旨在提高开发效率和质量。GoLand 2023具备强大的Go语言支持,包括语法高亮、自动补全、代码提…...

详细关于如何解决mfc140.dll丢失的步骤,有效修复mfc140.dll文件丢失的问题。

mfc140.dll文件是Microsoft Visual Studio 2015程序集之一,它包含用于支持多种功能的代码和库。当这个mfc140.dll文件丢失时,可能会导致相关程序运行出错甚至无法运行。很多用户可能会遇到mfc140.dll丢失的问题,但是这并不是不可解决的困难。…...

聚簇索引、非聚簇索引、回表、索引下推、覆盖索引

聚簇索引(主键索引) 非叶子节点上存储的是索引值,叶子节点上存储的是整行记录。 非聚簇索引(非主键索引、二级索引) 非叶子节点上存储的都是索引值,叶子节点上存储的是主键的值。非聚簇索引需要回表&…...

ES实战-book笔记1

#索引一个文档,-XPUT手动创建索引, curl -XPUT localhost:9200/get-together/_doc/1?pretty -H Content-Type: application/json -d {"name": "Elasticsearch Denver","organizer": "Lee" } #返回结果 {"_index" : "g…...

高防服务器出租的优势及特点

高防服务器出租是指租用具备高防御能力的服务器,用于应对网络攻击、保护网站和数据安全。那么为什么会选择高防服务器出租,小编为您整理发布高防服务器出租的优势及特点。 高防服务器通常具备以下特点: 1. 高性能硬件配置:高防服务…...

NTLM||LM算法lsasswinlogon进程

来填坑了,这篇blog我们就来讲一下mimikatz能抓到开机的密码的原理 1.lsass&&winlogon 不知道大家有没有好奇过,我们每次开机输入密码之后,电脑又怎么知道我们是否输入正确呢? :这就要的得益于我们的两个进程…...

transformer剪枝论文汇总

文章目录 NN Pruning摘要实验 大模型剪枝LLM-PrunerSparseGPT LTPVTPWidth & Depth PruningPatch SlimmingDynamicViTSPViTDynamicBERTViT SlimmingFastFormersNViTUVCPost-training pruning NN Pruning 《Block Pruning For Faster Transformers》 《为更快的transformer…...

使用 Ant Design 的 Upload 组件实现图片

文章目录 使用 Ant Design 的 Upload 组件实现图片Upload组件itemRender自定义上传列表项的渲染方式修改图片名上传图片上传链接中添加 Bearer Token 的请求头onPreview{handlePreview}上传成功后,如何隐藏上传列表 使用 Ant Design 的 Upload 组件实现图片 Upload…...

【知识图谱--第二讲知识图谱的表示】

知识图谱的表示 知识表示Knowledge Representation 知识表示方法知识图谱的符号表示基于图的知识表示与建模简单图建模-最简单的无向图有向标记图OWL与Ontology 知识图谱的向量表示 知识表示 Knowledge Representation 知识表示(KR)就是用易于计算机处…...

C语言---计算n的阶乘

阶乘的概念:一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,且0的阶乘为1,自然数n的阶乘写作n! 。 任何大于等于1 的自然数n 阶乘表示方法: n!123…(n-1)n 或 n!n(n-1)! 0!1 …...

材料非线性Matlab有限元编程:初应力法与初应变法

导读:本文主要围绕材料非线性问题的有限元Matlab编程求解进行介绍,重点围绕牛顿-拉普森法(切线刚度法)、初应力法、初应变法等三种非线性迭代方法的算法原理展开讲解,最后利用Matlab对材料非线性问题有限元迭代求解算法进行实现,展示了实现求解的核心代码。这些内容都将收…...

华为云AI开发平台ModelArts

华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

7.4.分块查找

一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...