Kettle

A. 优缺点

kettle的优点:

1.可视化界面。一个可视化界面足以成为选择kettle的首要原因。毕竟,可视化意味着更方便人的使用。

2.元数据库。元 数据库 用来保存kettle任务的元信息,方便管理任务,通常叫做资源库( repository )。

3.自带工作流并且支持增量抽取。

4.可以配置成一套逻辑。例如:抽取数据时,目标表不存在则插入,存在则更新,而目标表中存在并且数据源中不存在的,可以删除,just like this

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ieNxyjQ5-1583820308952)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200304110421377.png)]

痛点:

然而,事情并不像我们想象的那么美好,在kettle的实际的使用过程中,我们渐渐发现了一些kettle的槽点:

1.全量抽取较大数据量时,抽取时间长。

2.往hdfs导数据出现漏导的情况,造成数据不一致。

3.无法感知namenode的切换,当Hadoop集群重启时,一旦namenode发生切换,就可能造成kettle任务的失败,因为kettle的hdfs地址是在配置文件中配置的。

4.kettle往Greenplum中导数据,速度非常慢(40条每秒)。

当然,kettle提供了另一种方式:gploader方式来向GP中导数据,应该可以解决往GP导数据慢的问题(不过我们并没有尝试过这种方式,因为已经遇到了datax了)

自从我们开始搭建以Greenplum为核心的数据仓库之后,寻找一种高效的ETL工具来代替kettle,已经成为了一种共识

B. mysql导出数据至hive2

Ø 表输入——>表输出:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2jmZ9GKw-1583820308953)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20200304110448210.png)]

连接hive:

https://www.jianshu.com/p/ec45c21a977f

修改plugin.properties 文件:KETTLE_HOME/plugins/pentaho-big-data-plugin/ plugin.properties修改

active.hadoop.configuration=hdp30

下载对应的hive jar包:从服务器下载hive jar文件到之前的hdp30/lib文件夹下,主要hive-开头的

传输速度慢解决办法(试了,没有效果):

提高传输速度输入输出数据库网络传输参数配置:

https://blog.csdn.net/LSY_CSDN_/article/details/93587917#%EF%BC%881%EF%BC%89jdbc%E8%BF%9E%E6%8E%A5%E5%9C%B0%E5%9D%80%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0%EF%BC%9A

1、数据库操作:

因为是大批量数据迁移,主要影响抽取速度的是表输出,因此目标数据库要重新启动下,保证目标数据库性能最好,暂时没有其它进程写入数据。

2、表输入jdbc连接操作:

(1)jdbc连接地址配置参数:

?autoReconnect=true&failOverReadOnly=false&connectTimeout=0&socketTimeout=0&allowMultiQueries=true&maxReconnects=100&zeroDateTimeBehavior=convertToNull

(2)增加读速度配置参数:

defaultFetchSize:10000

useServerPrepStmts:true

useCursorFetch:true

cachePrepStmts:true

3、表输出jdbc连接操作:

(1)jdbc连接地址配置参数:

?autoReconnect=true&failOverReadOnly=false&connectTimeout=0&socketTimeout=0&allowMultiQueries=true&maxReconnects=100&zeroDateTimeBehavior=convertToNull

(2)增加批量写速度配置:

defaultFetchSize:5000

rewriteBatchedStatements:true

useServerPrepStmts:false

useCursorFetch:true

useCompression:true

Ø Mysql——>hdfs文件——>hive

配置步骤:

https://ask.hellobi.com/blog/hql15/7286 https://www.jianshu.com/p/60d9a8ddc7b8

  1. 设置Hadoop file output组件:

新建cluster——配置节点——点击测试——hadoop file connection连接成功即可,verify user home permissions需要添加hdfs访问权限:进入C:\Windows\System32\drivers\etc修改hosts配置dns解析:在hosts文件最后添加hdfs节点即可。

(Cluster Name 自定义集群名字;Hdfs Hostname为集群active Namenode ip,端口默认为8020;JobTracker为集群运用resource manager 权限的节点ip,端口默认为8032;ZooKeeper Hostname为对应节点ip,默认端口为2181;Oozie可不填。)

配置导入到hdfs中文件路径及名称:/user/hdfs/hdpfileoutput.txt

导入规则设置:编码格式及导入格式分别如图设置,减少因为文件导入hive特殊符号报错

最后获取字段:

\2. 设置SQL执行脚本组件:load data inpath ‘/user/hdfs/hdpfileoutput.txt’ into table hist.maoyan_boxoffice;

更多推荐