一、大数据下的ETL工具是否还使用Kettle

kettle 作为通用的ETL工具,非常成熟,应用也很广泛,这里主要讲一下 目前我们如何使用kettle的?

在进行大数据处理时,ETL也是大数据处理的主要场景之一。 针对大数据下的ETL, 在大数据研究之初,曾经花费很大精力去寻找大数据下比较成熟的ETL工具,但是不多。主要分类如下:

    • 开源的图形界面 类似 kettle 的nifi
    • 命令形式的 如 sqoop、DataX
    • 还有使用Spark 自定义开发ETL框架的

大数据下的ETL处理过程和传统关系型数据库下的ETL处理过程,我的理解本质还是一样的,要说区别 可能是大数据下需要ETL处理的数据速度足够快,这就要求可以充分利用分布式的能力,比如利用分布式的资源进行分布式的的计算。

基于使用经验和产品成熟度,在大数据下我们针对一些对数据处理速度不是非常之高的场景,我们仍然使用kettle。 这里我为什么不说数据量,因为对于一个ETL过程,说数据量是无意义的,好的ETL工具的核心引擎一定是一个类似现在的流式计算

也就是说数据向水一样的流动,流动的过程中做数据处理。也可kettle本身的含义类似。

基于个人的理解,任务kettle的优势主要体现在以下几点

  1. 设计时:
    • 提供了成熟的图形界面,相比命令行形式的etl工具,更容易被推广应用
    • 提供了丰富的各种数据库类型的插件,数据转换插件,涵盖场景众多

2.运行时

  • 控制流和数据流的设计思想的划分
  • 真正意义的数据流驱动的数据处理引擎,这一点也认为是同ESB等控制流产品不同的地方
  • 通过多线程执行插件实例和分布式执行,提升执行速度
  • 和目前大数据主流的数据库进行集成,当然这个地方主要还是集成调用

3.可扩展性

    • 良好的插件架构,保证了设计时和运行时的可扩展性

4.待完善点

  • kettle 任务定义多了,当数据结构发生变化时,需要修改较多,最好有统一的数据对象管理
  • kette的图形化设计器虽然好用,但是web 化的设计器更容易多人使用,提升设计效率

目前kettle 的定位:

    • 传统关系型数据库和大数据库之间数据导入导出
    • 基于关系型数据库和大数据库由数据驱动的简单数据流任务
    目前针对kettle做的扩展开发
    插件开发
      • 基于ES的sdk 开发ES的 input和output插件
      • 封装支撑Druid 数据导出的input 插件
      • 封装支持redis的插件
      • 封装支持调用Kylin build job的插件
      • 封装支持调用Tidb sql的插件
      • 优化基于Azure wasb存储的hbase input 和output 插件
    • 调度集成
      • 大数据下的调度主要使用的Ooize,界面上主要使用HUE,通过扩展开发HUE 的插件的形式 调用Kettle的web服务进行调度集成
    • 待完善点
      • kettle的商业版中包含了元数据管理,下一步需要将kettle中使用的表和字段,和大数据的数据治理集成
      • kettle处理日志通过ELK将日志采集到ES进行进一步的分析
      • kettle web 提高kettle任务的定义效率
  • 二、核心执行逻辑
         kettl的数据流处理过程,充分体现了其引擎对数据的流式处理过程。这里主要通过展现kettle 源码序列图的方式进行体现,希望大家可以通过这里的序列图了解其执行的基本原理,也就方便进行插件的扩展开发和日常问题的解决。 
    2.2 数据流处理核心逻辑

    2.2  数据流处理的核心序列
        2.2.1 任务的执行顶层序列

  • 2.2.2步骤的初始化

  • 2.2.3  步骤的执行
      

    每个步骤队列的分配过程
        

    数据放入队列
          

  • 2.2.4  具体步骤 -table input

2.2.5 table out put
       

以上 是kettle 核心数据流处理的核心过程。分享给大家

ETL-kettle 核心执行逻辑的更多相关文章

  1. scala(二) Future执行逻辑解读

    在scala中是没有原生线程的,其底层使用的是java的Thread机制.但是在scala中对java Thread进行了封装,实现了更便于操作线程的Future. 官方文档: Futures pro ...

  2. defer、return、返回值,这三者的执行逻辑

    defer.return.返回值,这三者的执行逻辑是: return 最先执行,return 负责将结果写入返回值中:接着defer执行,可能修改返回值:最后函数携带当前返回值退出.

  3. Windows下Kettle定时任务执行并发送错误信息邮件

    Windows下Kettle定时任务执行并发送错误信息邮件 1.首先安装JDK 2.配置JDK环境 3.下载并解压PDI(kettle) 目前我用的是版本V7的,可以直接百度搜索下载社区版,企业版收费 ...

  4. zookeeper源码之服务端核心执行模块

    服务端核心执行模块包括一下几个部分 1.leader选举. 2.

  5. Springboot中mybatis执行逻辑源码分析

    Springboot中mybatis执行逻辑源码分析 在上一篇springboot整合mybatis源码分析已经讲了我们的Mapper接口,userMapper是通过MapperProxy实现的一个动 ...

  6. Kettle定时执行(ETL工具)【转】

    1,Kettle跨平台使用.    例如:在AIX下(AIX是IBM商用UNIX操作系统,此处在LINUX/UNIX同样适用),运行Kettle的相关步骤如下:    1)进入到Kettle部署的路径 ...

  7. 并发包的线程池第一篇--ThreadPoolExecutor执行逻辑

    学习这个很长时间了一直没有去做个总结,现在大致总结一下并发包的线程池. 首先,任何代码都是解决问题的,线程池解决什么问题? 如果我们不用线程池,每次需要跑一个线程的时候自己new一个,会导致几个问题: ...

  8. Kettle定时执行

    1,Kettle跨平台使用.    例如:在AIX下(AIX是IBM商用UNIX操作系统,此处在LINUX/UNIX同样适用),运行Kettle的相关步骤如下:    1)进入到Kettle部署的路径 ...

  9. linux上Kettle定时执行(转换的单步执行,job的单步执行,环境变量,kettle定时功能,效率问题等)转自(http://blog.csdn.net/feng19821209/article/details/5800960)

    1,Kettle跨平台使用.    例如:在AIX下(AIX是IBM商用UNIX操作系统,此处在LINUX/UNIX同样适用),运行Kettle的相关步骤如下:    1)进入到Kettle部署的路径 ...

随机推荐

  1. WPF DataGrid自定义列DataGridTextColumn.ElementStyle和DataGridTemplateColumn.CellTemplate

    <Window x:Class="DataGridExam.MainWindow"        xmlns="http://schemas.microsoft.c ...

  2. Delphi中返回类型为string的函数的一个陷阱(不是很懂)

    如果类的一个成员函数的返回值是string类型,需要注意一个问题 其返回值可能是错误的 例如函数的实现如下 function GetString( s: string ): string;begin  ...

  3. WPF属性(一)依赖属性

    原文:WPF属性(一)依赖属性 依赖属性是一种可以自己没有值,并能通过使用Binding从数据源获得值的属性,拥有依赖属性的对象称为依赖对象,在传统开发中,一个对象所占用的内存在调用new操作符进行实 ...

  4. VS2010调试X86汇编程序

    今天突然无聊了一下,想起之前想的用VS来调试汇编程序.之前只是想了一下,没有去做,好吧,今天搜索一下,找到了一个教程,相当的详细具体,我喜欢 按照http://blog.csdn.net/jinson ...

  5. webmethod基本认知

    六种控件统称flow step insert/invoke 插入services,类似调用函数 BRANCH 分支结构 参数名在switch定义 子参数以label确定 注意:确保label唯一,否则 ...

  6. 领域驱动设计(DDD)的实践经验分享之ORM的思考

    原文:领域驱动设计(DDD)的实践经验分享之ORM的思考 最近一直对DDD(Domain Driven Design)很感兴趣,于是去网上找了一些文章来看看,发现它确实是个好东西.于是我去买了两本关于 ...

  7. C#的Task、async、await关键字

    Task,一个类,可以执行一个方法,构造函数需要传一个Action类型的委托,Action类型的委托是可以拥有多个参数,没有返回值的. Task<T> Task的泛型,构造函数传入一个Fu ...

  8. Android应用开机自启动问题

    本文主要介绍Android应用如何实现开机自启动.自启动失败的原因以及通过ADB命令模拟发送BOOT_COMPLETED开机广播. 1.Android应用如何实现开机自启动 (1) 实现一个广播类,接 ...

  9. QSocket 总体设计框架说明(观赏)

    QSocket 是 QDAC 开源组件的一个重要的组成部分,终于要开始开工了,为了方便大家了解 QSocket,对 QSocket 的总体设计的一些想法,我在这里给大家简要的描述一下. 首先,QSoc ...

  10. MQTT-CN MQTT协议中文版

    欢迎任何形式的转载,但请务必注明出处:http://www.cnblogs.com/liangjingyang 项目地址:https://github.com/liangjingyang/MQTT-C ...