11# 集群版使用流程及执行模式
22
3- OpenMLDB 针对线上线下的特征工程全流程,在不同阶段提供了不同的执行模式。尤其在生产环境下所使用的集群版,针对不同阶段做了较为复杂的执行模式的划分 。本文集中说明在集群版 OpenMLDB 中,从特征开发到上线的全流程,及其相应的执行模式。
3+ OpenMLDB 针对线上线下的特征工程全流程,在不同阶段提供了不同的执行模式。尤其在生产环境下所使用的集群版,针对不同阶段详细地划分了不同的执行模式 。本文集中说明在集群版 OpenMLDB 中,从特征开发到上线的全流程,及其相应的执行模式。
44
55
66## 1. OpenMLDB 使用流程概览
@@ -22,23 +22,23 @@ OpenMLDB 针对线上线下的特征工程全流程,在不同阶段提供了
2222由于离线和线上场景的操作数据对象不同,其底层的存储和计算节点亦不同。因此,OpenMLDB 设置了几种不同的执行模式来支持完成以上步骤。以下表格总结了各个步骤所使用的执行模式,稍后将会详细介绍关于执行模式的重要概念。
2323
2424
25- | 步骤 | 执行模式 | 开发工具 | 说明 |
26- | ----------------------- | -------- | ---------------------------------------| ---------------------------------------------------------------------------------------------------------------|
27- | 1. 离线数据导入 | 离线模式 | CLI | - ` LOAD DATA ` command<br /> |
28- | 2. 离线特征开发 | 离线模式 | CLI | - 支持 OpenMLDB 所有的 SQL 语法<br />- 部分 SQL (如 ` SELECT ` )非阻塞式异步运行方式 |
29- | 3. 特征方案部署 | 离线模式 | CLI | - ` DEPLOY ` 命令 |
30- | 4. 冷启动在线数据导入 | 在线模式 | CLI,导入工具 | - CLI 使用 ` LOAD DATA ` 命令<br />- 也可使用独立导入工具 ` openmldb-import ` |
31- | 5. 实时数据接入 | 在线模式 | connector, REST APIs, Java/Python SDK | - 第三方数据源调用 OpenMLDB 的相关数据插入 API(connector),引入实时数据<br />- 或使用Java/Python SDK工具,在对请求行的计算完成后,插入主表 |
32- | 6. 在线数据预览(可选) | 在线模式 | CLI, Java/Python SDK | - 目前仅支持对列进行 ` SELECT ` 操作、表达式、以及单行处理函数用于数据预览<br />- 不支持 ` LAST JOIN ` , ` GROUP BY ` , ` HAVING ` , ` WINDOW ` 等复杂计算<br /> |
33- | 7. 实时特征计算 | 请求模式 | REST APIs, Java/Python SDK | - 支持 OpenMLDB 所有的 SQL 语法<br />- REST APIs 以及 Java SDK 支持单行或者批请求<br />- Python SDK 仅支持单行请求 |
25+ | 步骤 | 执行模式 | 开发工具 | 说明 |
26+ | ----------------------- | --------| ---------------------------------------| ---------------------------------------------------------------------------------------------------------------|
27+ | 1. 离线数据导入 | 离线模式 | CLI | - ` LOAD DATA ` command<br /> |
28+ | 2. 离线特征开发 | 离线模式 | CLI | - 支持 OpenMLDB 所有的 SQL 语法<br />- 部分 SQL (如 ` SELECT ` )非阻塞式异步运行方式 |
29+ | 3. 特征方案部署 | 离线模式 | CLI | - ` DEPLOY ` 命令 |
30+ | 4. 冷启动在线数据导入 | 在线预览模式 | CLI,导入工具 | - CLI 使用 ` LOAD DATA ` 命令<br />- 也可使用独立导入工具 ` openmldb-import ` |
31+ | 5. 实时数据接入 | 在线预览模式 | connector, REST APIs, Java/Python SDK | - 第三方数据源调用 OpenMLDB 的相关数据插入 API(connector),引入实时数据<br />- 或使用Java/Python SDK工具,在对请求行的计算完成后,插入主表 |
32+ | 6. 在线数据预览(可选) | 在线预览模式 | CLI, Java/Python SDK | - 目前仅支持对列进行 ` SELECT ` 操作、表达式、以及单行处理函数用于数据预览<br />- 不支持 ` LAST JOIN ` , ` GROUP BY ` , ` HAVING ` , ` WINDOW ` 等复杂计算<br /> |
33+ | 7. 实时特征计算 | 在线请求模式 | REST APIs, Java/Python SDK | - 支持 OpenMLDB 所有的 SQL 语法<br />- REST APIs 以及 Java SDK 支持单行或者批请求<br />- Python SDK 仅支持单行请求 |
3434
35- 从以上的总结表格上可以看到,执行模式分为 ` 离线模式 ` ,` 在线模式 ` ,以及` 请求模式 ` 。在后面的章节中,我们将对这几种模式展开详细介绍 。下图总结示意了全流程开发和对应的执行模式。
35+ 从以上的总结表格上可以看到,执行模式分为 ` 离线模式 ` ,` 在线预览模式 ` ,以及` 在线请求模式 ` 。后续我们将对这几种模式展开详细介绍 。下图总结示意了全流程开发和对应的执行模式。
3636
3737![ image-20220310170024349] ( images/modes-flow.png )
3838
3939### 1.3 单机版执行模式说明
4040
41- 虽然本文集中讲解集群版,但是有必要也简单介绍单机版的执行模式。单机版的执行模式相对简单,其离线数据和在线数据的存储和计算节点统一,因此单机版并不区分离线模式和在线模式。即我们可以直观的理解为,在 CLI 下,单机版并没有执行模式的概念,任何OpenMLDB支持的 SQL 语法均可以在 CLI 下直接运行。因此,单机版特别适合用于快速试用或进行 SQL 实践。但是,在实时特征计算阶段,单机版和集群版一样,依然运行于在线请求模式下。
41+ 虽然本文集中讲解集群版,但是有必要也简单介绍单机版的执行模式。单机版的执行模式相对简单,其离线数据和在线数据的存储和计算节点统一,因此单机版并不区分离线模式和在线模式。即我们可以直观的理解为,在 CLI 下,单机版并没有执行模式的概念,绝大多数OpenMLDB支持的 SQL 语法均可以在 CLI 下直接运行(对于部分SQL命令的参数,单机版支持的选项与集群版略有不同,详见 [ OpenMLDB支持的SQL ] ( https://openmldb.ai/docs/zh/main/reference/sql/index.html ) ) 。因此,单机版特别适合用于快速试用或进行 SQL 实践。但是,在实时特征计算阶段,单机版和集群版一样,依然运行于在线请求模式下。
4242
4343:::{note}
4444如果仅在非生产环境试用 OpenMLDB或进行SQL学习实践,强烈建议使用单机版,可以获得更快捷方便的部署体验
@@ -55,7 +55,7 @@ OpenMLDB 针对线上线下的特征工程全流程,在不同阶段提供了
5555- 非阻塞式执行的 SQL 由内部的 TaskManager 进行管理,可以通过 ` SHOW JOBS ` , ` SHOW JOB ` , ` STOP JOB ` 命令进行查看和管理。
5656
5757:::{tip}
58- 和很多关系型数据库系统不同,` SELECT ` 命令在离线模式下为异步执行。 因此在离线特征开发阶段,强烈建议使用 ` SELECT INTO ` 语句进行开发调试,可以将结果导出到文件,方便查看。
58+ 和很多关系型数据库系统不同,` SELECT ` 命令在离线模式下默认为异步执行,如需设置为同步执行,见 [ 设置离线模式下命令的同步执行 ] ( https://openmldb.ai/docs/zh/main/reference/sql/ddl/SET_STATEMENT.html#id4 ) 因此在离线特征开发阶段,如果使用异步执行, 强烈建议使用` SELECT INTO ` 语句进行开发调试,可以将结果导出到文件,方便查看。
5959:::
6060
6161用于特征方案部署的命令` DEPLOY ` 亦在离线模式下执行。其部署规范对于 SQL 还有一定的限制,详细可以参阅 [ OpenMLDB SQL上线规范和要求] ( https://openmldb.ai/docs/zh/main/reference/sql/deployment_manage/ONLINE_SERVING_REQUIREMENTS.html ) 。
@@ -65,36 +65,36 @@ OpenMLDB 针对线上线下的特征工程全流程,在不同阶段提供了
6565- CLI: ` SET @@execute_mode='offline' ` ;CLI 启动以后的默认模式也为离线模式。
6666- REST APIs, Java/Python SDK:不支持离线模式
6767
68- ## 3. 在线模式
68+ ## 3. 在线预览模式
6969
70- 冷启动在线数据导入、实时数据接入、以及在线数据预览在在线模式下执行。在线模式的作用是针对线上数据进行管理和预览 。线上数据的存储和计算由 tablet server 支持 。
70+ 冷启动在线数据导入、实时数据接入、以及在线数据预览在在线预览模式下执行。在线预览模式的作用是对线上数据进行管理和预览 。线上数据的存储和计算由 tablet支持 。
7171
72- 在线模式有以下主要特点 :
72+ 在线预览模式有以下主要特点 :
7373
7474- 在线数据导入(` LOAD DATA ` )和离线模式下一样,属于非阻塞式的异步执行 SQL,其余均为同步执行。
75- - 在线模式目前仅支持简单的 ` SELECT ` 列相关操作来查看相关数据,并不支持复杂的 SQL 查询。因此在线模式并不支持 SQL 特征的开发调试,相关开发工作应该在离线模式或者单机版进行。
75+ - 在线预览模式目前仅支持简单的 ` SELECT ` 列相关操作来查看相关数据,并不支持复杂的 SQL 查询。因此在线预览模式并不支持 SQL 特征的开发调试,相关开发工作应该在离线模式或者单机版进行。
7676
77- 在线模式通过以下形式进行设置 :
77+ 在线预览模式通过以下形式进行设置 :
7878
7979- CLI: ` SET @@execute_mode='online' `
8080- REST APIs, Java/Python SDK:默认只支持在线模式下执行,无需进行设置。
8181
82- ## 4. 请求模式
82+ ## 4. 在线请求模式
8383
84- 在特征脚本被部署以及接入线上数据以后 ,实时特征计算服务就已经准备就绪,可以通过请求模式来进行实时特征抽取。请求模式在 REST APIs 以及 SDK 下支持。请求模式是 OpenMLDB 特有的支撑线上实时计算的模式,和常见数据库的 SQL 查询非常不同。
84+ 在部署特征脚本以及接入线上数据以后 ,实时特征计算服务就已经准备就绪,可以通过在线请求模式来进行实时特征抽取。 REST APIs 以及 SDK 支持在线请求模式。在线请求模式是 OpenMLDB 特有的支撑线上实时计算的模式,和常见数据库的 SQL 查询非常不同。
8585
86- 请求模式需要三个输入 :
86+ 在线请求模式需要三个输入 :
8787
8888- SQL 特征脚本,即为特征部署上线过程中所使用的 SQL 脚本,规定了做特征抽取的计算逻辑。
8989- 在线数据,即为冷启动导入或者实时接入的线上数据。一般为配合 SQL 的窗口计算的最新数据。比如 SQL 脚本的聚合函数会定义一个最近三个月的时间窗口,那么在线存储就需要保留相应的最新三个月数据。
9090- 实时请求行(a request row),包含了当前正在发生的实时行为,用于实时特征抽取。比如反欺诈场景下的刷卡信息,或者是推荐场景下的搜索关键字等。
9191
9292
93- 基于上述输入,对于每一个实时请求行,请求模式都会返回一条特征抽取的结果 。其计算逻辑为:请求行会依据 SQL 脚本的逻辑(如 ` PARTITION BY ` , ` ORDER BY ` 等)被虚拟的插入在线数据表格的正确位置中 ,然后只针对该行进行特征聚合计算,返回唯一对应的抽取结果。下图直观的解释了在线请求模式的运算过程 。
93+ 基于上述输入,对于每一个实时请求行,在线请求模式都会返回一条特征抽取的结果 。其计算逻辑为:请求行会依据 SQL 脚本的逻辑(如 ` PARTITION BY ` , ` ORDER BY ` 等)被虚拟地插入在线数据表格的正确位置中 ,然后只针对该行进行特征聚合计算,返回唯一对应的抽取结果。下图直观地解释了在线请求模式的运算过程 。
9494
9595![ modes-request] ( images/modes-request.png )
9696
97- 请求模式通过以下形式支持 :
97+ 在线请求模式通过以下形式支持 :
9898
9999- CLI:不支持
100100- REST APIs:支持单行或者多行 request rows 的请求,详见:[ REST APIs] ( https://openmldb.ai/docs/zh/main/quickstart/rest_api.html )
0 commit comments