首页 > 编程知识 正文

java stream性能提升,streamsets使用

时间:2023-05-06 17:46:49 阅读:274360 作者:1453

Streamsets优化详解 一、Streamsets性能1.1 查看Streamsets 性能 二、相关优化2.1 优化堆内存2.2 优化并发管道数2.3 减少从原始系统读取之间的延迟2.4 管道总体性能改善

一、Streamsets性能 1.1 查看Streamsets 性能

点击菜单栏Administrator—SDC Metrics
图片:

主要是CPU和堆内存的占用情况,当占用很高打开的时候会出现显示延迟的现象。

二、相关优化 2.1 优化堆内存

因为StreamSets使用的配置为java虚拟机分配的1G堆内存,上线时建议根据自己的需求去更改对应的内存大小,修改{$STREAMSETS_HOME}/libexec/sdc-env.sh文件,对应修改内容:

export SDC_JAVA_OPTS="-Xmx8192m -Xms8192m -server -XX:-OmitStackTraceInFastThrow ${SDC_JAVA_OPTS}"

CDH修改如图:

2.2 优化并发管道数

默认情况下,StreamSets Data Collector可以同时运行大约22个独立管道。如果计划同时运行大量管道,请增加线程池大小,当然线程需要内存,切记,先把第二步的设置改大。

数据收集器配置文件中的 runner.thread.pool.size属性确定池中可用于运行独立管道的线程数。
一个正在运行的管道需要五个线程,并且管道在池中共享线程。
修改参数在文件{$STREAMSETS_HOME}/etc/sdc.properties中,如果你没有改动配置文件路径,默认在目录/etc/sdc/中。使用文本编辑器打开sdc.properties。
通过将正在运行的管道数乘以2.2计算近似的流道线程池大小。
将runner.thread.pool.size属性设置为您的计算值。
键入 systemctl restart sdc重新启动Data Collector以启用更改。

2.3 减少从原始系统读取之间的延迟

当管道读取记录的速度快于处理记录或将记录写入目标系统的速度时,从源系统读取可能会出现较长的延迟。因为管道一次处理一个批次,所以管道必须等到将一个批次提交到目标系统后再读取下一个批次,使管道以稳定的速率读取数据。稳定地读取数据要比偶尔读取提供更好的性能。
如果无法增加处理器或目标的吞吐量,请限制管道从原始系统读取记录的速率。配置管道的“ 速率限制”(Rate Limit)属性,以定义管道在一秒钟内可以读取的最大记录数。

2.4 管道总体性能改善

由于Streamsets默认的一次批处理大小为1000条记录,所以我们可以根据我们的情况下去修改批处理的大小,如果记录很大就可以适当减小批处理记录数,如果记录小并且到达很快可以适当增加批处理记录数。
修改时需修改{$STREAMSETS_HOME}/etc/sdc.properties中的production.maxBatchSize属性

production.maxBatchSize=1000

CDH修改如图:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。