当前位置: 首页 > 工具软件 > Slipstream > 使用案例 >

TDH SlipStream

欧阳高昂
2023-12-01

Slipstream简介

        在4.3版本之前,TranswarpDataHub(TDH)上的流处理应用必须用Java或者scala开发,这将流处理应用的开发门槛设置得非常高。从TDH4.3开始,TranswarpSlipstream允许用户通过SQL的方式实现业务逻辑,大大降低了流应用开发的门槛。所以,星环科技推荐多数用户采用Slipstream开发流应用。Slipstream几乎可以应用于所有业务场景,包括ETL工具,规则报警工具等简单业务场景。对于更复杂的业务逻辑,用户可以选择使用PLSQL,属于Slipstream的高级功能。从4.8开始,Slipstream新增了基于事件驱动模式的流处理功能,在低延迟处理方面的性能表现更为出色。

Slipstream的优势

1.微批模式和事件驱动模式的一体化

        在同一套系统里,用户可以根据业务需求,灵活切换微批模式的流处理和事件驱动模式的流处理。      

2.极高的易用性

         以往的流处理平台有较高的入门门槛,比如SparkStreaming,Storm,必须对框架以及流处理本身,甚至是底层技术比较熟悉的情况下,才能写出高效的流处理程序。这大大地限制了流处理的推广和应用。而使用Slipstream,用户只需要有编写普通SQL的经验,就可以写出高效、安全、稳定的流处理应用。

3.性能提升

        在一些条件下,采用Slipstream的方式甚至比编程方式获得更高的性能提升。这是因为Slipstream做了一些特殊优化,在编程模式下无法轻易实现。比如,多条针对同一个输入流的SQL只需读取一份数据;增加迭代框架,使得原本无法利用SparkAPI进行优化的迭代计算效率大大提升。

4.产品化程度高

        通过编程的方式来实现流处理的另一个问题是产品化程度非常低。由于编程有较高的自由度,出现问题的可能性很大;而又由于编程的方式将流处理平台和用户程序绑定在一起,用户没办法很好地区分是自己代码的问题还是平台的问题,导致无法及时地分析出错原因。SQL作为一个通用的接口将大大地提高产品化程度。

5.迁移成本低

        用户原有的业务逻辑很多是通过SQL实现的,如果通过编程的方式迁移到流上,迁移成本非常高,还不能保证迁移后的逻辑是否正确。而一旦采用Slipstream的方式,用户只需要修改少量SQL,迁移成本几乎接近零。

Slipstream的技术指标

1.支持率

        99%的ANSI SQL 2003的支持率;

        95%的PLSQL Oracle以及PLSQL DB2的支持率。

2.强大的优化器提升性能

3.支持按数据字段时间切分滑动窗口和跳动窗口。

4.支持多种输出方式

        包括Hyperbase,Hive以及Holodesk等。

5.支持企业数据总线

6.支持运行时隔离

7.Slipstream与ANSI SQL 2003无缝兼容

 Slipstream 基础

Stream

Input Stream

        直接用于接收数据源传来的Stream;

        Input Stream定义了如何从数据源读取数据。

Derived Stream

        对已有Stream进行变形得到的新的Stream。

Window Stream

         Window Stream是Derive Stream的一种, 是对一个stream中在一定时间窗口(window)内的数据进行转化。

        两个重要的参数

                Length:窗口的持续时间;

                Slide:执行窗口操作的间隔。

StreamJob

        要让Slipstream执行计划,需要有相应的 Action 操作(比如将结果插入结果表,或者执行一个临时查询)来触发StreamJob。

        StreamJob从逻辑上讲是运行时概念,然而为了方便错误恢复或者用户使用,Slipstream也支持将其序列化。

Application

定义:一组业务逻辑相关的StreamJob的集合。

功能:权限控制、全局配置、资源共享、资源隔离。

Slipstream与普通SQL最大的两个区别

1. DML SQL背景运行

        对于普通SQL,当敲完SQL回车后用户需要等待SQL执行结束后得到结果或者得到出错信息;

        执行Slipstream的DML语句时用户会立即得到返回结果。

2. 结果输出

        对于普通SQL,执行"select …"查询,查询结果将显示在用户命令行或者通过JDBC读取;

        在Slipstream中,用户必须显式地指定将结果输出到哪个地方。

Slipstream使用步骤

SlipStream登录

beeline -u jdbc:hive2://tdh-1:10010

beeline -u jdbc:hive2://tdh-1:10010,tdh-2:10010,tdh-3:10010 --color=true

scv格式

beeline -u jdbc:hive2://tdh-4:10010 --showHeader=false --outputformat=csv

 建kafka producer并发布消息

执行下面命令,运行kafka/bin目录下得kafka-console-producer.sh脚本:

./kafka-console-producer.sh --broker-list tdh-1:9092 --topic demo

登录集群中的任意一个节点,连接到Slipstream

beeline -u "jdbc:hive2://tdh-1:10010" 

建一个Stream

create stream demo_stream(name STRING,age INT,addr STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' TBLPROPERTIES("topic"="demo","kafka.zookeeper"="tdh-1:2181","kafka.broker.list"="tdh-1:9092"); 

查看Stream

show streams; 

创建并触发一个streamjobs

建一张新表demo_table,它需要和demo_stream有相同的schema

        create table demo_table(name STRING,age INT,addr STRING);

向demo_table插入demo_stream中的数据,这个操作会触发streamjob的执行 

        insert into demo_table select * from demo_stream;

 列出正在执行的streamjob

list streamjobs;

切换到正在运行向demo发布数据的kafka producer的页面,在命令行输入一些数据

./kafka-console-producer.sh --broker-list tdh-1:9092 --topic demo 

切换回Slipstream命令行的窗口,现在查看demo_table中的数据

select * from demo_table; 

现在可以在demo_table上进行一些查询

select * from demo_table order by age; 

停止streamjob 

stop streamjob <streamjobID>; 

附:Kafka操作 

Slipstream支持以Kafka为数据源,从4.8开始,与Slipstream对接的Kafka版本为0.10.2。

查询topic,进入kafka目录

bin/kafka-topics.sh --list --zookeeper localhost:2181

启用producer

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topicName

 消费topic内容

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topicName --from-beginning 

 类似资料:

相关阅读

相关文章

相关问答