kettle的基本介绍和使用

1、 kettle概述

1.1 什么是kettle

Kettle是一款开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。

1.2 Kettle核心知识点

1.2.1 Kettle工程存储方式

  1. 以XML形式存储
  2. 以资源库方式存储(数据库资源库和文件资源库)

1.2.2 Kettle的两种设计

在这里插入图片描述

1.2.3 Kettle的组成

在这里插入图片描述

1.3 kettle特点

在这里插入图片描述

2、 kettle安装部署和使用

2.1 kettle安装地址

官网地址
https://community.hitachivantara.com/docs/DOC-1009855
下载地址
https://sourceforge.net/projects/pentaho/files/Data%20Integration/

2.2 Windows下安装使用

2.2.1 概述

在实际企业开发中,都是在本地环境下进行kettle的job和Transformation开发的,可以在本地运行,也可以连接远程机器运行

2.2.2 安装

  1. 安装jdk
  2. 下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可
  3. 双击Spoon.bat,启动图形化界面工具,就可以直接使用了

2.2.3 案例

  1. 案例一 把stu1的数据按id同步到stu2,stu2有相同id则更新数据
    (1)在mysql中创建两张表
    mysql> create database kettle;
    mysql> use kettle;
    mysql> create table stu1(id int,name varchar(20),age int);
    mysql> create table stu2(id int,name varchar(20));
    (2)往两张表中插入一些数据
    mysql> insert into stu1 values(1001,‘zhangsan’,20),(1002,‘lisi’,18), (1003,‘wangwu’,23);
    mysql> insert into stu2 values(1001,‘wukong’);

(3)在kettle中新建转换

在这里插入图片描述
(4)分别在输入和输出中拉出表输入和插入/更新

在这里插入图片描述
(5)双击表输入对象,填写相关配置,测试是否成功

在这里插入图片描述
(6)双击 更新/插入对象,填写相关配置

在这里插入图片描述
(7)保存转换,启动运行,去mysql表查看结果
注意:如果需要连接mysql数据库,需要要先将mysql的连接驱动包复制到kettle的根目录下的lib目录中,否则会报错找不到驱动。

在这里插入图片描述

  1. 案例2:使用作业执行上述转换,并且额外在表student2中添加一条数据
    (1)新建一个作业

在这里插入图片描述
(2) 按图示拉取组件

在这里插入图片描述
(3)双击Start编辑Start

在这里插入图片描述
(4)双击转换,选择案例1保存的文件

在这里插入图片描述
(5)双击SQL,编辑SQL语句

在这里插入图片描述
(6)保存执行
3)案例3:将hive表的数据输出到hdfs
(1)因为涉及到hive和hbase的读写,需要修改相关配置文件。
修改解压目录下的data-integration\plugins\pentaho-big-data-plugin下的plugin.properties,设置active.hadoop.configuration=hdp26,并将如下配置文件拷贝到data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp26下

在这里插入图片描述
(2)启动hdfs,yarn,hbase集群的所有进程,启动hiveserver2服务

[ybb@hadoop102 ~]$ /opt/module/hadoop-2.7.2/sbin/start-all.sh

开启HBase前启动Zookeeper

[ybb@hadoop102 ~]$ /opt/module/hbase-1.3.1/bin/start-hbase.sh
[ybb@hadoop102 ~]$ /opt/module/hive/bin/hiveserver2

(3)进入beeline,查看10000端口开启情况

[ybb@hadoop102 ~]$ /opt/module/hive/bin/beeline
Beeline version 1.2.1 by Apache Hive
beeline> !connect jdbc:hive2://hadoop102:10000(回车)
Connecting to jdbc:hive2://hadoop102:10000
Enter username for jdbc:hive2://hadoop102:10000: ybb(输入ybb)
Enter password for jdbc:hive2://hadoop102:10000:(直接回车)
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://hadoop102:10000>(到了这里说明成功开启10000端口)

(4)创建两张表dept和emp

CREATE TABLE dept(deptno int, dname string,loc string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';

CREATE TABLE emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm int,
deptno int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';

(5)插入数据

insert into dept values(10,'accounting','NEW YORK'),(20,'RESEARCH','DALLAS'),(30,'SALES','CHICAGO'),(40,'OPERATIONS','BOSTON');

insert into emp values
(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20),
(7499,'ALLEN','SALESMAN',7698,'1980-12-17',1600,300,30),
(7521,'WARD','SALESMAN',7698,'1980-12-17',1250,500,30),
(7566,'JONES','MANAGER',7839,'1980-12-17',2975,NULL,20);

(6)按下图建立流程图

在这里插入图片描述
(7)设置表输入,连接hive

在这里插入图片描述
在这里插入图片描述
(8)设置排序属性

在这里插入图片描述
(9)设置连接属性

在这里插入图片描述
(10)设置字段选择

在这里插入图片描述
(11)设置文件输出

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(12)保存并运行查看hdfs

2.3 创建资源库

2.3.1 数据库资源库

数据库资源库是将作业和转换相关的信息存储在数据库中,执行的时候直接去数据库读取信息,很容易跨平台使用
1)点击右上角connect,选择Other Resporitory

在这里插入图片描述
2) 选择Database Repository

在这里插入图片描述
3) 建立新连接

在这里插入图片描述
在这里插入图片描述
4) 填好之后,点击finish,会在指定的库中创建很多表,至此数据库资源库创建完成

在这里插入图片描述
5) 连接资源库

默认账号密码为admin

在这里插入图片描述
6) 将之前做过的转换导入资源库
(1)选择从xml文件导入

在这里插入图片描述
(2)随便选择一个转换

在这里插入图片描述
(3)点击保存,选择存储位置及文件名

在这里插入图片描述
(4)打开资源库查看保存结果

在这里插入图片描述

2.3.2 文件资源库

将作业和转换相关的信息存储在指定的目录中,其实和XML的方式一样
创建方式跟创建数据库资源库步骤类似,只是不需要用户密码就可以访问,跨
平台使用比较麻烦
1)选择connect

在这里插入图片描述
2)点击add后点击Other Repositories

在这里插入图片描述
3)选择File Repository

在这里插入图片描述
4)填写信息

在这里插入图片描述

2.4 Linux下安装使用

2.4.1 单机

1)jdk安装
2)安装包上传到服务器,解压
注意:1. 把mysql驱动拷贝到lib目录下
2. 将本地用户家目录下的隐藏目录C:\Users\自己用户名.kettle,整个上传到linux的家目录/home/ybb/下
3)运行数据库资源库中的转换:
[ybb@hadoop102 data-integration]$./pan.sh -rep=my_repo -user=admin -pass=admin -trans=stu1tostu2 -dir=/
参数说明:
-rep 资源库名称
-user 资源库用户名
-pass 资源库密码
-trans 要启动的转换名称
-dir 目录(不要忘了前缀 /)

在这里插入图片描述

4)运行资源库里的作业:
记得把作业里的转换变成资源库中的资源
[ybb@hadoop102 data-integration]$./kitchen.sh -rep=repo1 -user=admin -pass=admin -job=jobDemo1 -logfile=./logs/log.txt -dir=/
参数说明:
-rep - 资源库名
-user - 资源库用户名
-pass – 资源库密码
-job – job名
-dir – job路径
-logfile – 日志目录

2.4.2 集群模式

  1. 准备三台服务器,hadoop102作为Kettle主服务器,服务器端口号为8080,hadoop103和hadoop104作为两个子服务器,端口号分别为8081和8082。
  2. 安装部署jdk
  3. hadoop完全分布式环境搭建,并启动进程(因为要使用hdfs)
  4. 上传解压kettle的安装包
  5. 进到/opt/module/data-integration/pwd目录,修改配置文件
    修改主服务器配置文件carte-config-master-8080.xml
<slaveserver>
    <name>master</name>
    <hostname>hadoop102</hostname>
    <port>8080</port>
    <master>Y</master>
    <username>cluster</username>
    <password>cluster</password>
  </slaveserver>

修改从服务器配置文件carte-config-8081.xml
  <masters>
    <slaveserver>
      <name>master</name>
      <hostname>hadoop102</hostname>
      <port>8080</port>
      <username>cluster</username>
      <password>cluster</password>
      <master>Y</master>
    </slaveserver>
  </masters>
  <report_to_masters>Y</report_to_masters>
  <slaveserver>
    <name>slave1</name>
    <hostname>hadoop103</hostname>
    <port>8081</port>
    <username>cluster</username>
    <password>cluster</password>
    <master>N</master>
  </slaveserver>
修改从配置文件carte-config-8082.xml
<masters>
    <slaveserver>
      <name>master</name>
      <hostname>hadoop102</hostname>
      <port>8080</port>
      <username>cluster</username>
      <password>cluster</password>
      <master>Y</master>
    </slaveserver>
  </masters>
  <report_to_masters>Y</report_to_masters>
  <slaveserver>
    <name>slave2</name>
    <hostname>hadoop104</hostname>
    <port>8082</port>
    <username>cluster</username>
    <password>cluster</password>
    <master>N</master>
  </slaveserver>
  1. 分发整个kettle的安装目录,xsync data-integration

  2. 启动相关进程,在hadoop102,hadoop103,hadoop104上执行
    [ybb@hadoop102 data-integration] . / c a r t e . s h h a d o o p 1028080 [ y b b @ h a d o o p 103 d a t a − i n t e g r a t i o n ] ./carte.sh hadoop102 8080 [ybb@hadoop103 data-integration] ./carte.shhadoop1028080[ybb@hadoop103dataintegration]./carte.sh hadoop103 8081
    [ybb@hadoop104 data-integration]$./carte.sh hadoop104 8082

  3. 访问web页面
    http://hadoop102:8080

  4. 案例:读取hive中的emp表,根据id进行排序,并将结果输出到hdfs上
    注意:因为涉及到hive和hbase的读写,需要修改相关配置文件。
    修改解压目录下的data-integration\plugins\pentaho-big-data-plugin下的plugin.properties,设置active.hadoop.configuration=hdp26,并将如下配置文件拷贝到data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp26下

在这里插入图片描述

(1) 创建转换,编辑步骤,填好相关配置

在这里插入图片描述
(2) 创建子服务器,填写相关配置,跟集群上的配置相同

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3) 创建集群schema,选中上一步的几个服务器

在这里插入图片描述
(4) 对于要在集群上执行的步骤,右键选择集群,选中上一步创建的集群schema

在这里插入图片描述
(5) 创建Run Configuration,选择集群模式,直接运行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、 调优

1、调整JVM大小进行性能优化,修改Kettle根目录下的Spoon脚本。

在这里插入图片描述
参数参考:
-Xmx2048m:设置JVM最大可用内存为2048M。
-Xms1024m:设置JVM促使内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmn2g:设置年轻代大小为2G。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
-Xss128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
2、 调整提交(Commit)记录数大小进行优化,Kettle默认Commit数量为:1000,可以根据数据量大小来设置Commitsize:1000~50000
3、尽量使用数据库连接池;
4、尽量提高批处理的commit size;
5、尽量使用缓存,缓存尽量大一些(主要是文本文件和数据流);
6、Kettle是Java做的,尽量用大一点的内存参数启动Kettle;
7、可以使用sql来做的一些操作尽量用sql;
Group , merge , stream lookup,split field这些操作都是比较慢的,想办法避免他们.,能用sql就用sql;
8、插入大量数据的时候尽量把索引删掉;
9、尽量避免使用update , delete操作,尤其是update,如果可以把update变成先delete, 后insert;
10、能使用truncate table的时候,就不要使用deleteall row这种类似sql合理的分区,如果删除操作是基于某一个分区的,就不要使用delete row这种方式(不管是deletesql还是delete步骤),直接把分区drop掉,再重新创建;
11、尽量缩小输入的数据集的大小(增量更新也是为了这个目的);
12、尽量使用数据库原生的方式装载文本文件(Oracle的sqlloader, mysql的bulk loader步骤)。

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

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

相关文章

【React源码 - Fiber架构之Reconciler】

前言 React16架构可以分为三层也是最核心的三个功能分别是&#xff1a; Scheduler&#xff08;调度器&#xff09;—调度任务的优先级&#xff0c;高优任务优先进入Reconciler(16新增)Reconciler&#xff08;协调器&#xff09;—负责找出变化的组件Renderer&#xff08;渲染…

Android readelf 工具查找函数符号

ELF&#xff08;Executable and Linkable Format&#xff09;是一种执行文件和可链接文件的格式。它是一种通用的二进制文件格式&#xff0c;用于在各种操作系统中存储可执行程序、共享库和内核模块。 Android 开发当中的 so 库本质上就是一种特殊类型的 ELF 文件&#xff0c;…

crash分析ramdump

我们需要在PC机上运行crash,从源码来编译, 可以从Redhat社区下载源码。 解压后&#xff0c;进入目录后使用一下命令&#xff1a; make targetarm64 make install这样就安装好了crash了。 crash介绍 crash主要是用来离线分析linux内核内存转存文件&#xff0c;它整合了gdb…

计算机基础面试题 |17.精选计算机基础面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

e2studio开发三轴加速度计LIS2DW12(1)----轮询获取加速度数据

e2studio开发三轴加速度计LIS2DW12.1--轮询获取加速度数据 概述视频教学样品申请源码下载通信模式管脚定义IIC通信模式速率新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原…

大数据Doris(五十二):SQL函数之数学函数

文章目录 SQL函数之数学函数 一、abs(double a)

基于多反应堆的高并发服务器【C/C++/Reactor】(中)HttpRequest模块 解析http请求协议

一、HTTP响应报文格式 HTTP/1.1 200 OK Bdpagetype: 1 Bdqid: 0xf3c9743300024ee4 Cache-Control: private Connection: keep-alive Content-Encoding: gzip Content-Type: text/html;charsetutf-8 Date: Fri, 26 Feb 2021 08:44:35 GMT Expires: Fri, 26 Feb 2021 08:44:35 GM…

系列三十五、获取Excel中的总记录数

一、获取Excel中的总记录数 1.1、概述 使用EasyExcel开发进行文件上传时&#xff0c;通常会碰到一个问题&#xff0c;那就是Excel中的记录数太多&#xff0c;使用传统的方案进行文件上传&#xff0c;很容易就超时了&#xff0c;这时可以通过对用户上传的Excel中的数量进行限制…

闰年问题-第11届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第25讲。 闰年问题&#xf…

swaggerUI不好用,试试这个openapiUI?

1.背景 由于长期使用 swaggerUI 工具&#xff0c;它的轻量风格个人觉得还是不错的&#xff0c;但是它的整体使用体验确实不好&#xff0c;用过的可能都有体会&#xff0c;这里就不一一列举了&#xff08;由于语言表达能力有限&#xff0c;手动&#x1f436;保命&#xff0c;毕…

1.7数算PPT选择汇总,PTA选择汇总,计算后缀表达式,中缀转后缀、前缀、快速排序

PTA选择汇总 在第一个位置后插入&#xff0c;注意是在后面插入&#xff0c;而不是前面&#xff1b;要移动49&#xff0c;为50-I&#xff0c;第25个的话&#xff0c;移25个 如果是插在前面&#xff0c;就移动50&#xff0c;N-I1&#xff0c;注意是插在前面还是后面 删第一个&a…

JS-基础语法(一)

JavaScript简单介绍 变量 常量 数据类型 类型转换 案例 1.JavaScript简单介绍 JavaScript 是什么&#xff1f; 是一种运行在客户端&#xff08;浏览器&#xff09;的编程语言&#xff0c;可以实现人机交互效果。 JS的作用 JavaScript的组成 JSECMAScript( 基础语法 )…

变换器电感饱和以及电流变大电感变小原因分析

电感电流变大电感值变小 在一个DC-DC电源转换器中&#xff0c;电感器的电流与其电感量是有关系的。当电感器的电流增大时&#xff0c;其电感量通常会变小。 电感器的电感量&#xff08;L&#xff09;是指在单位电流变化率下&#xff0c;电感器两端的电压变化的比例。根据电感…

【JAVA GUI+MYSQL]社团信息管理系统

本社团信息管理系统主要实现登录注册、管理员信息管理、社团用户信息管理、用户申请信息管理功能模块。 目录 &#xff11;&#xff0e;系统主要功能介绍 &#xff12;&#xff0e; 数据库概念模型设计 3.具体功能模块的实现 3.1模型类 3.1.1Student.java 3.1.2User .j…

高通平台开发系列讲解(USB篇)Ubuntu 下如何使用模块

文章目录 一、查看VID、PID二、adb添加2.1、在udev下添加模块的VID2.2、重启adb服务三、虚拟串口添加(AT、Diag)沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要图解高通平台上位机使用方法 一、查看VID、PID 在ubuntu下使用模块进行AT指令发送,Diag等串…

【QML COOK】- 003-处理鼠标事件

1. 编辑main.qml import QtQuickWindow {width: 800height: 800visible: truetitle: qsTr("Hello World")Image {id: backgroudanchors.fill: parentsource: "qrc:/Resources/Images/arrow.png"}MouseArea {anchors.fill: parentonClicked: backgroud.rot…

docker run 命令详解

一、前言 Docker容器是一个开源的应用容器引擎&#xff0c;让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何安装了Docker引擎的服务器上&#xff08;包括流行的Linux机器、Windows机器&#xff09;&#xff0c;也可以实现虚拟…

【hcie-cloud】【20】容器详解【容器介绍,容器工作机制、容器常用命令说明】【上】

文章目录 前言容器是什么虚拟化技术的四个特点容器也是一种虚拟化技术容器是怎么实现虚拟化的&#xff1f;容器对比虚拟机有哪些优势&#xff1f;容器对比虚拟机有哪些不足&#xff1f;容器不仅是一种虚拟化技术&#xff0c;更重要的是一种应用打包机制容器提供的是PaaS服务常见…

SSH远程访问出现Permission denied(password)解决方法

首先&#xff0c;这个不是密码输错了的问题&#xff1b; 1、在主机先ping一下服务器 ping XXX.XXX.XX.XXX (服务器ip地址) 如果pin成功了&#xff0c;说明可以进行连接 查看服务器的ip ifconfig2、主机连接服务器 &#xff08;服务器的ip&#xff09; ssh testXXX.XXX.XX.…

Java中SpringBoot组件集成接入【MQTT中间件】

Java中SpringBoot组件集成接入【MQTT中间件】 1.MQTT介绍2.搭建MQTT服务器1.Windows2.Ubuntu3.Docker4.其他方式3.mqtt可视化客户端MQTTX及快速使用教程4.SpringBoot接入MQTT1、maven依赖2、MQTT配置3、MQTT组件具体代码1.定义通道名字2.消息发布器3.MQTT配置、生产者、消费者4…