kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

时间:2024-03-16 19:25:06

Kettle实现oracle到hbase的数据抽取

 

本文采用kettle最新版本:7.1 (安装:下载下来后,直接解压就可以)

 kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

cdh版本为5.11.0

 

一、 环境配置操作流程:

(1)         由于最新版本的插件kettle7.1只能支持cdh5.10,所以我们要更改kettle的shim插件,主要操作就是替换jar包,如图:

首先hadoop的jar包:

把client目录的hadoop后缀是cdh5.10的jar包全换掉,换成5.11的包,如下图,其它jar包不用管:

 kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

接下来换hbase的jar,同理,在pmr目录下吧后缀为cdh5.10全换掉,如图:

 kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

 

kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集) 

 

 

 

                                 

由于我只用到了hbase,所以只替换了hadoop和hbase的jar,如果有用到hive或其它组件,直接像上面方法一样,直接替换jar就可以

 

接下来,我们要替换hadoop和hbase的xml配置文件,直接把cdh集群的配置文件拽过来就可以了,如图:

kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

路径如图,直接替换掉就可以。

 

接下来修改config.properties,添加最下面一行,如图:

kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集) 

最后由于我们要连mysql,oracle所以要引入相应的jdbc驱动包:

路径:

kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

jar包:

kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

到这里,kettle基本配置完成。

 

 

二、 测试:oracle2hbase

./spoon.sh ,启动kettle client,我们测试oracle2hbase:

(1)         首先我们要从左边插件栏拖出一个表输入和一个

hbase输出,由于数据抽取过程中间可能会有字段格式转换,我们再脱出一个字段选择的插件,如图:

kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

备注:

插件选择如图片左边标记部分,传输过程如图片右边流程图,用到那些组件直接拖过去就可以

 

(2)         各组件属性设置如下:

1、       表输入

kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

双击表输入,出现如下配置框:

kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

首先我们要新建一个数据库连接,点数据库连接新建,弹出如下可选框:

kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

备注:

根据可选框提示,配置可选项,测试,保存!如果测试通过,如下图结果:

kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集) 

数据库连接配置成功后,写入sql抽取逻辑,点击预览,保存,到这里表输入这个步骤就完成了

 

2、       hbase output

kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

双击插件如下图:

 kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

 

先配置Hadoop cluster连接:

 kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

只连hbase只配zookeeper连接就可以就可以,然后点击测试,出现如下如结果,证明连通:

 kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

连通后配置字段映射:

 kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

配置流程:(按上图1、2、3、4、5流程)

配置完成,在配置页选择配置完成的mapping,如下图:

 kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

 

配置完成,保存退出,点击启动,测试整个转换作业,如下图:

 kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

备注:出现如图结果,整个转换都是对号,且没有抛出error,证明成功

 

 

三、 linux开发环境无client情况下配置kettle作业

1、在本地client下配置ktr/kjb作业,保存成相应的ktr/kjb配置文

件,如下图

kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

2、       将该文件上传到环境

kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

3、命令行调用kettle作业

常用kettle job 调度启动程序,主要分两种,如下图:

kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

备注:(windows:bat,linux:sh)

kettle作业主分两种:trasform、job(转换和job的区别不做赘述,在使用中大家可灵活变通),它们的命令行执行器也分为两种:

kitchen:工作(job)执行器 (命令行方式),后缀为.kjb的作业由它执行

Pan:转换(trasform)执行器 (命令行方式) ,后缀为.kt r的作业由它执行

两种执行器的使用,例:

./kitchen.sh -file=/opt/shell/crm/job_detail/crm.kjb >/opt/data-integration/job/log/crm.log

 

 

./pan.sh -file=/etc/tracy/kettle/vip_test.ktr > /etc/tracy/kettle/vip_test.log

 

如果要配定时任务,直接将命令加入crontab就行。

 

在linux环境下测试我们先前的vip_test.ktr任务:

 kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

执行完成,直接看log文件:

kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

如图,证明执行成功

 

如果遇到如下报错:

 kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

缓存问题,每次启动前清一下/opt/data-integration/system/karaf/caches这个路径下的缓存就ok,也可以像我一直接把清存的命令写入pan.sh脚本,这样就不用每次手去清理了:

 kettle oracle2hbase生产环境下的真实使用 (做到数据准实时采集)

 

 

 

 

至此,一个基本的数据采集任务就完成了。


目的:由于项目需要,我们需要从业务系统oracle做准实时切高频率的数据采集到hbase,没5分钟一次,用sqoop抽,压力很大,切效果不好速度慢 ,所以这里选择用kettle

ketlle的优势:本身有利于大数据体系架构之外,sqoop的资源分配要由yarn管理,集群任务多要排队,按部就班,很耗时间,但是kettle不需要,并且kettle在处理小数据量的实时采集方面效率显得更优秀,速度更快,我们实时增量数据量不大的情况下,完全可以用kettle,且速度更快

kettle缺点:大数据量的数据采集显的力不从心,所以数据初始化还是要用sqoop这种工具,增量用kettle