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

kettle经验篇:Pentaho Repository 类型资源库卡顿问题

        2024年马上就结束了,终于在结束前解决了困扰许久的一个问题:kettle的Pentaho Repository 资源库异常卡顿。所以在此也梳理、记录下2024年的最后一个大问题。

项目场景

        工作中一个重要内容是数据中心项目,也就必不可少的要用到ETL技术,项目选用的是kettle工具来实现数据中心的ETL需求。

        kettle资源库是类似于TFS、GIT等代码管理工具;不同的是kettle资源库是用来管理kettle的ktr,kjb文件。具备内容管理、版本管理、依赖完整性检查等用途。

kettle资源库

kettle的资源库又分为以下3种

资源库类型        描述适用性
Database Repository(数据库资源库)kettle的资源文件存储到数据库中适合团队协同开发管理
File Repository(文件资源库)kettle的资源文件存储到本地适合个人本地练习
Pentaho Repository需要部署kettle的服务端,kettle的资源文件存储在服务端。具备内容管理、版本管理、依赖完整性检查等用途。适合团队协同开发管理

        所负责的项目使用的是Pentaho Repository类型资源库;其实有看到网上很多朋友对Pentaho Repository的评价不高,很多文章都推荐使用Database Repository类型资源库。起初在kettle8.3及之前的版本,Pentaho Repository类型资源库确实体验感不好,非常卡顿!但是从9.2版本开始,Pentaho Repository类型资源库的体验感其实非常不错了,使用流畅的基础上再加上强大的管理功能让我们坚定的选择了Pentaho Repository类型资源库。

        但是此次的问题是我负责的项目上使用的9.4版本的Pentaho Repository类型资源库使用起来莫名其妙卡顿,卡的佛系的人都要摔鼠标的那种卡。具体体现举例如下:

1、kettle客户端在连接服务端的Pentaho Repository资源库时,需要几十秒甚至几分钟才能连上;

2、在打开kettle的转换或者作业时,有时卡顿,有时不卡顿;

3、在保存kettle的转换或者作业时,每次都卡顿;

4、导入一个5M大小的资源库,甚至需要10分钟才能完成导入;

........

         这些问题,让小伙伴们苦不堪言。实在无奈,我让大家先临时使用本地资源库进行ETL开发,但几百甚至上千个ETL转换作业管理起来实在是难受。在技术总监看了两次表达了“欸,其他项目都是没问题的,怎么你这不行...”的观点后,我开始了自研之路 ~

问题排查

先说下问题解决前的Pentaho Repository资源库情况。

项目描述
Pentaho Server版本Pentaho Server 9.4.0.0-343
操作系统Anolis OS 8.9(龙蜥)
操作系统内核rhel
内存32G
CPUIntel至强金牌,8核
平台华为云
kettle客户端版本pdi-ce-9.3.0.0-428

对于这种卡顿问题,我也梳理了下几个方向开始排查:

序号方向
1客户端与服务端的版本不一致
2JVM内存太小
3磁盘读写速度太慢
4IO速度太慢
5网络问题,传输速度太慢
6其他

下面就开始了逐步排查:

1、客户端与服务端的版本不一致

        重新下载了9.4的kettle客户端,客户端配置与资源库用户配置完成后,第一步连接资源库就还是老样子开始卡顿;然后开始测试ETL开发、保存转换、导入资源库,均和之前的效果一致,卡顿的不得了。所以这个方向不对,解决失败

2、JVM内存太小

        Pentaho Server是用tomcat发布的,所以会从JVM内存这个方向上考虑。但和一个tomcat颇有研究的同事聊完后,了解了tomcat会自动调配内存。而且其他项目的服务在发布时也从未调整过初始内存大小。所以这个方向不对,解决失败。

3、磁盘读写速度太慢

        使用dd命令测试磁盘读写速度,测试发现磁盘读写速度每秒300多M,读写速度正常。所以这个方向不对,解决失败。

[root@ETLServer home]# dd if=/dev/zero of=/home/testfile bs=1M count=1024 conv=fdatasync,notrunc status=progress
记录了1024+0 的读入
记录了1024+0 的写出
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.84533 s, 377 MB/s

4、 IO速度太慢

        因为在打开资源库文件和保存时也会涉及到IO,所以怀疑磁盘与CPU及内存之间的通信接口的性能是不是存在问题。于是使用iostat命令测试服务器的IO性能,发现其实服务器首先是没什么IO,其次是仅有的IO体现出的性能并没有问题。因为从iostat的输出上,等待是小于平均每次设备IO操作的服务时间的。所以这个方向不对,解决失败。

ETL服务器IO性能

我曾经也见过一台数据库服务器IO性能极差,可以分享给大家做对比:

IO性能极差的服务器iostat输出

 

5、网络问题 

        在上述基本资源配置排查完后,开始排查网络。其实我潜意识里不认为网络有问题,因为很多数据库服务器和应用服务器都同属于一个网段,路由追踪发现其实都是只跳了两个路由。但实在是没招了,所以用wireshark在服务端和客户端同时抓包开始分析。

        这次还真发现了一个问题,就是每次保存kettle转换时,总会固定有个seq位1的包延迟。但是对比发包和收包发现网络传输速度没有问题,是服务端那边响应太慢。

        所以网络问题这个方向也不对,解决失败。

 6、其他

        经过上面的排查,感觉已经黔驴技穷了,实在不知道还能有什么方向去思考。于是无聊期间在自己本地的VMware虚拟机上部署了台centos7,然后发布了Pentaho Server资源库服务。用客户端连接以后,发现速度很快,体验感很好。这个时候突然想起了高中生物书上的对比实验法,既然发布的程序是一样的,IO、磁盘、网络、内存都没问题;那么有问题的只能是---------华为云平台或者国产龙蜥8.9!

        于是我找到负责服务器的老师,和他讨论此事。服务器老师说,除了华为云平台还可以从VMware上给我划一台服务器,但是国产龙蜥不能换,因为会有检查,但龙蜥的操作系统还是可以给我选择红帽的内核。我咬咬牙点头,那就先换到VMware上试试。

        很快,在VMware上给划了台龙蜥8.9。我快速发布完Pentaho Server,然后我非常紧张的去打开Pentaho Server的web配置用户,在打开web的一瞬间,我觉得这次成了!因为以前打开web都非常慢,这次非常快!然后客户端连到Pentaho Server资源库,开始测试打开、修改、保存转换,导入导出资源库;一切都非常的流畅!

        这个时候已经非常激动了,但还是决定苟一会儿。在多台设备上都测试没有问题后,终于长长的呼出一口气~ 终于解决了!

问题总结

        但要说为什么Pentaho Server在华为云上不行,我不知道。我只是通过不断的测试排查,最终定位到了云平台上。当排除了所有的可能选项后,那个看似不可能的选项也是正确的。

        至于华为云究竟哪里存在问题,后续研究明白了会再来和大家汇报分享。

        提前祝大家2025新年快乐!🎇🎇🎇

相关文章:

kettle经验篇:Pentaho Repository 类型资源库卡顿问题

2024年马上就结束了,终于在结束前解决了困扰许久的一个问题:kettle的Pentaho Repository 资源库异常卡顿。所以在此也梳理、记录下2024年的最后一个大问题。 项目场景 工作中一个重要内容是数据中心项目,也就必不可少的要用到ETL技术&#x…...

python opencv的sift特征检测(Scale-Invariant Feature Transform)

sift 官方文档地址:https://docs.opencv.org/4.10.0/da/df5/tutorial_py_sift_intro.html 创建SIFT实例cv2.SIFT.create()特征检测sift.detect描述子sift.compute/sift.detectAndCompute画特征cv2.drawKeypoints 原图 特征点 代码 import cv2first ./12.pngsif…...

若依定时任务

表结构 目录 quartz框架 SysJobServiceImpl实现类 使用切点,在构造器执行的时候执行定时任务的构建(这个类是交给IOC容器的,所以这个时间点就是项目启动的时候)SysJobServiceImpl实现类的init方法创建任务 /*** 创建定时任务*/public static void createScheduleJob(Scheduler …...

k8s-node2 NotReady 节点NotReady如何解决?

从集群中移除 k8s-node2 [rootk8s-master ~]# kubectl delete node k8s-node2 node "k8s-node2" deleted重置 k8s-node2 登录到 k8s-node2 上,使用以下命令重置该节点,使其退出集群并恢复到初始状态: [rootk8s-node2 ~]# sudo k…...

Ubuntu通过mDNS实现局域网local域名和octoprint域名访问

OctoPrint是一个开源的3D打印机控制软件,它提供了一个Web界面,允许用户远程监控和管理3D打印机。通过USB连接到打印机后,用户可以使用任何带有Web浏览器的设备来控制打印作业,包括开始、停止、暂停打印,以及在打印过程…...

短视频矩阵账号管理技术源码搭建详解,支持OEM

一、引言 在短视频矩阵系统中,账号管理是至关重要的一环,它涉及到多平台账号的接入、用户信息的安全存储与高效管理、权限的精准控制以及账号数据的同步与更新等关键功能。一个健壮、灵活且安全的账号管理技术架构,能够为整个短视频矩阵系统的…...

【源码 导入教程 文档 讲解】基于springboot校园新闻管理系统源码和论文

可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C、python、数据可视化、大数据、文案 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代&#xf…...

Spark SQL DML语句

【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客 《Spark SQL大数据分析快速上手》【摘要 书评 试读】- 京东图书 Spark本地模式安装_spark3.2.2本地模式安装-CSDN博客 DML(Data Manipulation Language,数据操作语言)操作主要用来对…...

开发微信小程序的过程与心得

起因 作为家长,我近期参与了学校的护学岗工作。在这个过程中,我发现需要使用水印相机来记录护学活动,但市面上大多数水印相机应用都要求开通会员才能使用完整功能。作为一名程序员,我决定利用自己的技术背景,开发一个…...

【1224】数据结构(sizeof/数组的长度定义/读取字符串函数/线性表长度/左值右值/静态变量/指针与引用)

1.对一维整型数组a的正确说明是 #define SIZE 10 (换行) int a[SIZE];说法是否正确? 正确 数组的SIZE可以用宏定义,但不能用变量 2.如有定义:char str[20];,能将从键盘输入的字符串“How are you”保存到 str 数组的语句是&#x…...

Android笔记(四十一):TabLayout内的tab不滚动问题

背景 假设二级页面是上面图片的布局,当进来时TabLayout和ViewPager2绑定完就马上调setCustomItem,跳转到最后一个tab页面时,会发现tab不滚动,手动滑一下ViewPager2时才会滚动tab到正确的位置 原因分析 调用TabLayoutMediator.at…...

基于pytorch的深度学习基础3——模型创建与nn.Module

三 模型创建与nn.Module 3.1 nn.Module 模型构建两要素: 构建子模块——__init()__拼接子模块——forward() 一个module可以有多个module; 一个module相当于一个运算,都必须实现forward函数; 每一个mod…...

Debian-linux运维-docker安装和配置

腾讯云搭建docker官方文档:https://cloud.tencent.com/document/product/213/46000 阿里云安装Docker官方文档:https://help.aliyun.com/zh/ecs/use-cases/install-and-use-docker-on-a-linux-ecs-instance 天翼云常见docker源配置指导:htt…...

Docker完整技术汇总

Docker 背景引入 在实际开发过程中有三个环境,分别是:开发环境、测试环境以及生产环境,假设开发环境中开发人员用的是jdk8,而在测试环境中测试人员用的时jdk7,这就导致程序员开发完系统后将其打成jar包发给测试人员后…...

在JavaScript文件中定义方法和数据(不是在对象里定以数据和方法,不要搞错了)

在对象里定以数据和方法看这一篇 对象字面量内定义属性和方法(什么使用const等关键字,什么时候用键值对)-CSDN博客https://blog.csdn.net/m0_62961212/article/details/144788665 下是在JavaScript文件中定义方法和数据的基本方式&#xff…...

python爬虫爬抖音小店商品数据+数据可视化

爬虫代码 爬虫代码是我调用的数据接口,可能会过一段时间用不了,欢迎大家留言评论,我会不定时更新 import requests import time cookies {token: 5549EB98B15E411DA0BD05935C0F225F,tfstk: g1vopsc0sQ5SwD8TyEWSTmONZ3cA2u6CReedJ9QEgZ7byz…...

关于 覆铜与导线之间间距较小需要增加间距 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/144776995 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...

uniapp中Nvue白屏问题 ReferenceError: require is not defined

uniapp控制台输出如下 exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught ReferenceError: require is not defined 或者 exception function:createInstanceContext, exception:white s…...

在 Windows 上,如果忘记了 MySQL 密码 重置密码

在 Windows 上,如果忘记了 MySQL 密码,可以通过以下方法重置密码: 方法 1:以跳过权限验证模式启动 MySQL 并重置密码 停止 MySQL 服务: 打开 命令提示符 或 PowerShell,输入以下命令停止 MySQL 服务&#…...

《PyTorch:从基础概念到实战应用》

《PyTorch:从基础概念到实战应用》 一、PyTorch 初印象二、PyTorch 之历史溯源三、PyTorch 核心优势尽显(一)简洁高效,契合思维(二)易于上手,调试便捷(三)社区繁荣&#…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

什么是EULA和DPA

文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

浅谈不同二分算法的查找情况

二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况&#xf…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...