streamsets rest service源数据组件浅谈

近期服务用到了streamsets的rest service 数据源组件,通过相关资料与实践总结出如下, 如有偏差还请指正

streamsets的rest service源数据组件简介

Streamsets是一款大数据实时采集和ETL工具, 最重要的概念就是数据源(Origins)、操作(Processors)、目的地(Destinations); rest service 是一个多线程源,用于处理所有授权的REST API请求。当与同一管道中的一个或多个发送响应一起使用时,源站还可以将带有状态代码的记录发送回源站REST API客户端。

rest service 源是接受http请求,为收到的每个请求生成一个批处理, 即在sdc.properties文件中的production.maxBatchSize值也就会无效, 这个默认值是1000; 因此能有效提升rest service管道的处理吞吐的属性也就落在了maxConcurrentRequests和maxRunners上面;根据并发合理的配置maxConcurrentRequests和maxRunners 尤为重要, 当然也要考虑服务器的cpu

将Max Concurrent Requests设置为5时,启动管道时,原点将创建五个线程,Data Collector将创建五个pipeline  runners。收到数据后,源站将批传递给每个管道运行器进行处理。

rest service源使用基于Max concurrent Requests属性的多个并发线程。启动管道时,原点将创建Max Concurrent Requests属性中指定的线程数。每个线程从传入请求生成一个批处理,并将该批处理传递给可用的 pipeline  runners。

每个管道运行程序一次处理一个批,就像在单个线程上运行的管道一样。当数据流变慢时,管道运行程序会无所事事地等待,直到需要它们为止,并定期生成一个空批。您可以配置Runner Idle Time pipeline属性以指定间隔或选择退出空批处理生成。

多线程管道保留每个批中记录的顺序,就像单线程管道一样。但由于批处理由不同的管道运行程序处理,因此无法确保将批写入目标的顺序。

例如,假设您将Max Concurrent Requests属性设置为5。启动管道时,原点将创建五个线程,Data Collector将创建匹配数量的 pipeline  runners。收到数据后,源站将批传递给每个pipeline  runners 进行处理。

每个管道运行器执行与管道其余部分关联的处理。将批写入管道目标后,管道运行程序可用于另一批数据。每个批都会尽快处理和写入,独立于其他管道运行程序处理的其他批,因此批的写入可能与读取顺序不同。

在任何给定时刻,五个管道运行程序都可以处理一个批,因此此多线程管道一次最多处理五个批。当传入数据变慢时,管道运行程序处于空闲状态,一旦数据流增加就可以使用。

streamset rest service 官方文档

streamsets 性能优化

streamSets默认情况下,StreamSets Data Collector可以同时运行大约22个独立管道,  因为streamsets服务 sdc.properties配置文件里的属性runner.thread.pool.size默认值是50 ,   如果部署的pipeline增多需要增加runner.thread.pool.size值,   要求条件:   runner.thread.pool.size  >  pipeline数量 x 2.2,   此外增加 runner.thread.pool.size值需要考虑机器cpu是否需要调大

未完待续... ...  后期工作中或学习中有新的理解体会再更新

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值