查看原文
其他

关于Slipstream中的Application隔离

2017-06-15 星环科技 星环科技

以往流处理应用的开发依靠Java或者Scala实现,要求分析者既要熟悉底层架构又要懂业务,才能实现高效的流应用。导致入门门槛高,开发速度慢。为了简化复杂的流应用开发过程,Transwarp创新性的引入了Slipstream,使用户可以直接用SQL实现业务分析,甚至还可以利用PL/SQL实现更复杂的业务逻辑。

基于流的SQL引擎:Slipstream(基础介绍)所介绍的,Slipstream有三个核心的概念:Stream、StreamJob 和 Application。Stream是数据流,StreamJob是对一个或多个Stream进行计算并将结果写进一张表的任务,Application是一个或多个StreamJob的集合,用于实现资源的共享和隔离。本文将基于Slipstream的使用基础,针对 Slipstream的Application的隔离能力展开介绍。


Application的概念

Application是一组业务逻辑相关的StreamJob的集合。合理地使用Application划分StreamJob可以很好的实现用户之间的资源共享和隔离。


资源共享

Application内使用同一个Input Stream的StreamJob将共享一组Receiver,Receiver用于源源不断的从外部数据源获取数据。例如上图,Application 1中的StreamJob 2和StreamJob 3都以Input Stream 2为数据源,它们共享Application 1中为Input Stream 2启动的Receiver。

资源隔离

不同Application中的StreamJob若使用同一个Input Stream,每个Application会为这些Input Stream分别启动各自的Receiver。例如上图,Application 1和Application 2中的StreamJob都访问了Input Stream 2,所以Application 1和Application 2将分别为Input Stream 2启动一组Receiver。


Application相关语法

Application在静态时只是一个逻辑概念,主要用于帮助实现运行时的隔离和权限验证。用户可以对Application进行参数配置,且作用范围仅限于此逻辑单元。用户利用用户名登录Shell(比如Beeline),在自己创建的Application下通过SQL编写业务逻辑,并且可以对Application设置对应的权限(查看/修改/执行),从而通过Application方便地对业务进行查看管理。


关于Application的DDL

  • 创建一个Application

CREATE APPLICATION <app_name> WITH APPPROPERTIES(["key"="value"][,"key"="value"...]);

创建一个新的Application,可以用上述语法在APPPROPERTIES中指定任何需要对Application设置的参数。

  • 描述一个Application

DESCRIBE [|DESC] APPLICATION <app_name>;

描述指定Application的信息。

  • 显示当前的Application

SHOW CURRENT APPLICATION;

显示当前用户所在的Application。

  • 修改一个Application

ALTER APPLICATION <app_name> SET APPPROPERTIES("key"="value");

通过SET APPPROPERTIES修改Application配置信息。

  • 显示所有Application

SHOW APPLICATIONS;

显示所有的Applications。

  • 删除一个Application

DROP APPLICATION <app_name>;

删除指定的Application。

Application级别管理

用户运行任何StreamJob之前需要进入对应的Application。默认情况下,当前的Application为default。

  • 进入Application

USE APPLICATION <app_name>;

  • 显示正在运行的Application

LIST APPLICATIONS;


关于Application隔离的应用实战

用户Emily作为一名新手刚刚开始接触Transwarp Slipstream,老板希望Emily做一些试验性的任务。由于集群上已有应用投入生产,为了不随意影响当前正在运行的应用,Emily决定利用StreamSQL支持的Application实现资源隔离,保证现有任务不受新建Application的影响。

连接至Inceptor后,Emily通过如下语句查看当前所有正在运行StreamJob的Application:


发现当前一个名为production的Application有StreamJob正在运行。接着,她查询了当前所在的Application:

目前正处于一个名为default的Application里。

为了不影响正在production中运行的为生产所用的StreamJob,Emily向管理员申请创建新的Application。

为了允许Emily新建Application,管理员用hive用户登陆Inceptor,切换到ADMIN角色:

为用户Emily创建CREATE Application的权限:

现在Emily就可以开始创建自己的Application并使用它了:


首先Emily在testapp中新建了一个流和一张表:

然后启动StreamJob:

接着查看该StreamJob是否启动成功:

输出如下,发现该StreamJob确实存在于结果列表中,证明创建成功:

现在Emily再次查看有StreamJob正在运行的Application:

如果切换到default application然后查看正在运行的StreamJob:

Emily会发现,并不能获得production中启动的StreamJob。此时,如果使用production的用户查看production中正在运行的StreamJob,同样也不会看到Emily刚刚在testapp中启动的StreamJob。

最后,完成任务后,Emily停止testapp中所有的StreamJobs:先切换回testapp,然后停止其中的StreamJobs。

结语

Slipstream支持并引入Application的概念,就是为了在流处理平台上实现面向用户的资源隔离。Application之间彼此独立,使不同Application中的StreamJob即使访问了同一个Input Stream,也对对方一无所知,从而构造出一种独立的环境。Application隔离方便了对于StreamJob的资源管理和分配,同时了加强了对信息的安全保障。各个应用平行运作,互不影响,有效的提升了开发效率。

关于流式计算的干货合集

1.扫盲版:白话大数据 | 流处理技术Streaming是什么?

2.基础版:基于流的SQL引擎:Slipstream(基础介绍)

3.进阶版:聚星*引航|“Slipstream:实时的复杂流处理引擎”演讲速记(附PPT)

4.参考版:Early adopters of streaming data technologies

5.高级版:视野 | 一款优秀的流处理产品必备的5大功能


回复关键字,获取更多资讯

简介 | 产品 | 技术 | 案例集 | 培训 | 白话大数据

评测 |  投资 | 新手上路 | Holodesk | TED视频

技术支持| 金融 | 电力 | 视频监控 | 运营商 |交通

税务 | 电商 | 智能金融 | 医疗 | 快递|TDH5.0|流式计算

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存