RocketMQStreams将轻量级实

治疗白癜风的医院 https://wapyyk.39.net/bj/zhuanke/89ac7.html

作者

袁小栋、程君杰

随着各行各业移动互联和云计算技术的普及发展,大数据计算已深入人心,最常见的比如flink、spark等。这些大数据框架,采用中心化的Master-Slave架构,依赖和部署比较重,每个任务也有较大的开销,有较大的使用成本。RocketMQStams着重打造轻量计算引擎,除了消息队列,无额外依赖,对过滤场景做了大量优化,性能提升3-5倍,资源节省50%-80%。

RocketMQStams适合大数据量-高过滤-轻窗口计算的场景,核心打造轻资源,高性能优势,在资源敏感场景中有很大优势,最低1co,1g可部署,建议的应用场景(安全,风控,边缘计算,消息队列流计算)。

RocketMQStams兼容Blink(Flink的阿里内部版本)的SQL,UDF/UDTF/UDAF,多数Blink任务可以直接迁移成RocketMQStams任务。将来还会发布和Flink的融合版本,RocketMQStams可以直接发布成Flink任务,既可以享有RocketMQStams带来的高性能、轻资源,还可以和现有的Flink任务统一运维和管理。

什么是RocketMQStams?

本章节从基础简介、设计思路和特点三方面对RocketMQStams进行整体介绍。

1、RocketMQStams简介

1)它是一个Lib包,启动即运行,和业务直接集成;2)它具备SQL引擎能力,兼容BlinkSQL语法,兼容BlinkUDF/UDTF/UDAF;3)它包含ETL引擎,可以无编码实现数据的ETL、过滤和转存;4)它基于数据开发SDK,大量实用组件可直接使用,如:Source、sink、script、filter、lease、scheduler、configurable不局限流的场景。

2、RocketMQStams的特点

RocketMQstams基于上述的实现思路,可以看到它有以下几个特点:

轻量

1核1g就可以部署,依赖较轻,在测试场景下用Jar包直接写个main方法就可以运行,在正式环境下最多依赖消息队列和存储(其中存储是可选的,主要是为了分片切换时的容错)。

高性能

实现高过滤优化器,包括前置指纹过滤,同源规则自动归并,hyperscan加速,表达式指纹等,比优化前性能提升3-5倍,资源节省50%以上。

维表JOIN(千万数据量维表支持)

设计高压缩内存存储数据,无java头部和对齐的开销,存储接近原始数据大小,纯内存操作,性能最大化,同时对于Mysql提供了多线程并发加载,提高加载维表的速度。

高扩展的能力

1)Source可按需扩展,已实现:RocketMQ,File,Kafka;2)Sink可按需扩展,已实现:RocketMQ,File,Kafka,Mysql,ES;3)可按Blink规范扩展UDF/UDTF/UDAF;4)提供了更轻的UDF/UDTF扩展能力,不需要任何依赖就可以完成函数的扩展。

提供了丰富的大数据的能力

包括精确计算一次灵活的窗口,双流join,统计,开窗,各种转换过滤,满足大数据开发的各种场景,支持弹性容错的能力。

RocketMQStams的使用

RocketMQStams对外提供两种SDK,一种是DSLSDK,一种是SQLSDK,用户可以按需选择;DSLSDK支持实时场景DSL语义;SQLSDK兼容Blink(Flink的阿里内部版本)SQL的语法,多数BlinkSQL可以通过RocketMQStams运行。接下来,我们详细地介绍一下这两种SDK。0

1、环境要求

1)JDK1.8版本以上;2)Maven3.2版本以上。

02

2、DSLSDK

利用DSLSDK开发实时任务时,需要做如下的一些准备工作:

依赖准备

dependencygroupIdorg.apache.rocketmq/groupIdartifactIdrocketmq-stams-clients/artifactIdversion1.0.0-SNAPSHOT/version/dependency

准备工作完成后,就可以直接开发自己的实时程序。

代码开发

DataStamSourcesource=StamBuilder.dataStam("namespace","pipeline");source.fromFile("~/admin/data/text.txt",false).map(message-message+"--").toPrint(1).start();

其中:

1)Namespace是业务隔离的,相同的业务可以写成相同的Namespace。相同的Namespace在任务调度里可以跑在进程里,也可以共享一些配置;

2)pipelineName可以理解成就是jobname,唯一区分job;

3)DataStamSource主要是创建Source,然后这个程序运行起来,最终的结果就是在原始的消息里面会加"--",然后把它打印出来。

丰富的算子

RocketMQstams提供了丰富的算子,包括:

1)source算子:包括fromFile、fromRocketMQ、fromKafka以及可以自定义source来源的from算子;

2)sink算子:包括toFile、toRocketMQ、toKafka、toDB、toPrint、toES以及可以自定义sink的to算子;

3)action算子:包括Filter、Expssion、Script、selectFields、Union、forEach、Split、Select、Join、Window等多个算子。

部署执行

基于DSLSDK完成开发,通过下面命令打成jar包,执行jar,或直接执行任务的main方法。

mvn-Please-all-DskipTestscleaninstall-Ujava-jarjarNamemainClass

03

3、SQLSDK

依赖准备

dependencygroupId


转载请注明:http://www.aierlanlan.com/tzrz/4503.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了