kettle 之多线程

ETL项目中性能方面的考虑通常是最重要的,特别是所讨论的任务频繁执行,或一些列的任务必须在固定的时间内执行。本文重点介绍利用kettle转换的多线程特性,以优化其性能。

   假设转换中的每个步骤已经设置成最快的执行速度并且调节性能至最佳,且再没有更多的性能提升空间。但是利用kettle的多线程特性仍然可能提升转换的整体性能。

调整队列大小

   当尝试优化性能时,你可以调整输入、输出队列的大小。特别是如果你有足够多的内存(RAM)可用。在kettle转换中配置队列大小是转换配置中的“Nr of rows in rows”选项的大小,其配置对转换中所有的步骤都有效。增加可使转换更快执行完活动的步骤,从而释放CPU时间给后续步骤。针对特定转换调节合适大小最佳实践。

设置步骤执行拷贝数

   kettle转换在运行时,每个步骤可被看成一个带着输入、输出行队列的工作线程,每个线程是并行运行的,当数据化是有效时即处理。kettle允许针对每个独立步骤手工定义其线程数。如果转换有一个瓶颈步骤,该步骤有多个实例同时运行可以加快处理速度。可以通过检查每个步骤的输入、输出队列及行/秒的处理性能找到候选的瓶颈步骤。如果某步骤有满输入队列,空输出队列,并每秒处理行数低,这些因素往往决定了整个转换的性能,从而找到瓶颈步骤。这些因素的数据在kettle执行“Step Metrics”视图中可以看到。


   右击问题步骤,选择“change number ofcopies to start..”并输入合适的线程数,这时当你运行转换时,你将注意到多个运行的实例,每个实例在视图中有自己的输入、输出队列。



   转换的整体性能提升取决于每个步骤的性能及操作系统和硬件性能。如:如果cpu性能强,“计算”步骤性能就佳;数据库查询步骤可以通过多线程提升性能;其他步骤如”update“步骤不太可能提升性能,但是和RDBMS有很多关系。

   需要注意的是步骤启用多线程也有它的局限性。更具体地,如果问题的步骤中或之后,依赖所有数据行的排列顺序时,该转换将不能正确的运行。每个步骤的多个线程都独立地接收并处理他们的数据行,因此不能保证所有数据行驶按顺序处理。另外需要提醒的是,每个线程保持自己的独立内部状态,并不能看到其他线程正处理的行。因此,如果某个步骤必须看到所有的行,才能正常工作,那一定不能使用多线程。”Sort rows”, “Unique rows” 和 “Rowdenormalizer”就是最好的例子。这这些步骤使用多线程是没有意义的,因为每个线程处理行仅仅是所有行的一个子集。

结论

   kettle允许转换中的每个单独定义多个线程执行,同时可以也设置输入、输出队列大小,两个特性对提升执行速度非常有用。针对单个步骤启动多线程,两点事实需要考虑的是,每个线程不能看到整个数据行,且每个线程处理行顺序不确定。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Kettle ActiveMQ是一种基于开源的消息队列系统,它是Apache软件基金会的项目之一。它是一个灵活、可扩展和高性能的消息中间件,常被用于实现异步通信和解决高并发的消息传递需求。 Kettle ActiveMQ具有以下特点: 1. 可靠性:Kettle ActiveMQ采用了持久化机制,即使在消息传递过程中发生故障,消息也不会丢失。它能够在网络中断或节点宕机后重新连接,并确保消息被可靠地传递。 2. 高性能:Kettle ActiveMQ使用高效的消息传递协议,能够支持高并发、大规模的消息传递。它采用了多线程和异步处理的方式,以提高系统的吞吐量和响应速度。 3. 可扩展性:Kettle ActiveMQ支持水平扩展和集群部署,可以根据业务需求动态增加消息队列的节点数量,以满足高负载的需求。它还支持多种通信协议,包括TCP、HTTP和WebSocket等,以便与各种应用和系统进行集成。 4. 管理和监控:Kettle ActiveMQ提供了一套完善的管理和监控工具,可以方便地对消息队列进行配置、监控和管理。它提供了Web界面和命令行工具,可以实时查看队列状态、消息流量和性能指标等。 5. 可靠性传输:Kettle ActiveMQ支持各种消息传递模式,包括点对点和发布订阅模式。它提供了消息过滤、事务管理和消息转发等功能,可以确保消息的可靠传输和按需消费。 总之,Kettle ActiveMQ是一个功能强大、易用且可靠的消息队列系统,它广泛应用于企业级应用开发、大数据处理、分布式系统以及互联网应用等领域,为应用程序之间的通信提供了高效、可靠和可扩展的解决方案。 ### 回答2: Kettle是一种开源的ETL工具,用于数据的抽取、转换和加载。而ActiveMQ是一种开源的消息中间件,用于实现消息的传递和异步通信。这两个工具在数据处理和通信方面具有不同的功能。 Kettle可以通过其强大的转换功能,从不同的数据源中提取数据,并进行各种数据处理操作,例如清洗、聚合、转换等。通过Kettle,可以将不同格式的数据整合到一起,为后续的数据分析和业务处理提供了方便。 ActiveMQ则专注于解决分布式系统中的消息通信问题。当系统中的不同模块需要进行异步通信时,ActiveMQ可以提供可靠且快速的消息传递机制。它支持多种通信协议,如AMQP、STOMP等,也提供了丰富的特性,如消息队列、发布-订阅模式等。 结合Kettle和ActiveMQ可以实现更强大的数据处理和通信功能。例如,可以使用Kettle从各个数据源中获取数据,然后将数据通过ActiveMQ发送到目标系统进行处理。这样可以实现异步处理,提高系统的响应速度和可伸缩性。 另外,Kettle也提供了与ActiveMQ的集成插件,可以直接在Kettle中配置和管理ActiveMQ,方便用户进行数据传输和消息通信的配置和管理。 总之,Kettle和ActiveMQ分别在数据处理和通信方面发挥了不可替代的作用。它们的结合可以实现更加灵活、高效的数据处理和通信机制,为企业的数据处理和系统集成提供了有力的支持。 ### 回答3: Kettle是一个开源的ETL工具,用于数据抽取、转换和加载。而ActiveMQ是一个基于Java消息传递中间件的解决方案。 在Kettle中使用ActiveMQ,可以实现数据流的异步处理和消息的发布与订阅。Kettle通过ActiveMQ的队列(Queue)和主题(Topic)机制,实现数据的可靠传输和实时处理。 在数据抽取方面,Kettle可以通过ActiveMQ的消息队列,异步地抽取源数据,并以消息的方式传递到目标端,实现异步数据处理。这样可以提高数据的处理效率,同时减少数据传输的延迟。 在数据转换方面,Kettle可以将数据转换成消息,通过ActiveMQ的队列发送出去。接收者可以异步地处理这些消息,并将处理结果返回给Kettle。这样可以实现分布式数据转换和处理,提高系统的并发能力和可扩展性。 在数据加载方面,Kettle可以通过ActiveMQ的主题机制,将数据以消息的形式发布到订阅者。订阅者可以按需订阅感兴趣的数据,并进行加载和处理。这样可以实现实时数据加载和更新,支持复杂的数据流处理需求。 总之,Kettle和ActiveMQ的结合,可以实现ETL流程的高效处理和实时数据交互。这种解决方案在大数据处理和实时数据分析等场景中具有广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值