Unverified Commit 9e378a1e authored by walkhan's avatar walkhan Committed by GitHub

Merge pull request #333 from walkhan/dev

[Document-332][docs] Add flinksql Development Guide
parents 44ce1e47 f845ce28
......@@ -71,5 +71,6 @@
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify-sidebar-collapse/dist/sidebar.min.css"/>
<script src="//unpkg.com/docsify/lib/plugins/search.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/emoji.min.js"></script>
<script src="//unpkg.com/prismjs/components/prism-sql.js"></script>
</body>
</html>
......@@ -22,10 +22,13 @@
- [功能介绍](/zh-CN/administrator-guide/Studio/development_control/function_introduce.md)
- [组件介绍](/zh-CN/administrator-guide/Studio/development_control/component_introduce.md)
- 作业开发
- [模式介绍](/zh-CN/administrator-guide/Studio/job_dev/clustermode_introduction.md)
- [作业托管概述](/zh-CN/administrator-guide/Studio/job_dev/job_hosting.md)
- [环境配置](/zh-CN/administrator-guide/Studio/job_dev/env_config.md)
- FlinkSQL开发指南
- [概述](/zh-CN/administrator-guide/Studio/job_dev/flinksql_guide/summary.md)
- [作业开发](/zh-CN/administrator-guide/Studio/job_dev/flinksql_guide/flinksql_job_dev.md)
- [作业提交](/zh-CN/administrator-guide/Studio/job_dev/flinksql_guide/flinksql_job_submit.md)
- [作业调试](/zh-CN/administrator-guide/Studio/job_dev/flinksql_guide/job_debug.md)
- 其他数据源开发指南
- 作业运维
- [作业管理](/zh-CN/administrator-guide/Studio/job_ops/job_manage.md)
......
## Flink 环境配置
### Session 集群
Session 集群适用于非生产环境的开发测试环境,您可以使用 Session 集群模式部署或调试作业,提高作业 Job Manager 的资源使用率。
如何创建 Session 集群,请参考注册中心[集群管理](/zh-CN/administrator-guide/registerCenter/cluster_manage.md)的集群实例管理
### Per-job 集群
Per-job 集群适用于生产环境,您可以使用 Per-job 集群模式部署或提交作业
如何创建 Session 集群,请参考注册中心[集群管理](/zh-CN/administrator-guide/registerCenter/cluster_manage.md)的集群配置管理
### Application 集群
Per-job 集群适用于生产环境,您可以使用 Per-job 集群模式部署或提交作业
如何创建 Session 集群,请参考注册中心[集群管理](/zh-CN/administrator-guide/registerCenter/cluster_manage.md)的集群配置管理
### 说明
如果是 Session 集群有如下建议:
- 对于单并发的小作业,建议整个集群的作业总数不超过100个;
- 对于复杂作业,建议单作业最大并发数不超过512,64个并发的中等规模作业单集群不多于32个。否则可能会出现心跳超时等问题影响集群稳定性。此时,您需要增大心跳间隔和心跳超时时间;
- 如果您需要同时运行更多的任务,则需要增加 Session 集群的资源配置;
## 其他数据源环境配置
Dinky 虽然是在 Flink 基础之上开发而言,为了让用户一站式开发,扩展了额外的数据源。极大的方便了用户进行 FlinkSQL 的编写。
如何创建外部数据源,请参考注册中心的[数据源管理](/zh-CN/administrator-guide/registerCenter/datasource_manage.md)。当前 Dinky 支持的数据源请参考功能扩展中的[扩展数据源](/zh-CN/extend/datasource.md)
\ No newline at end of file
下面为您介绍Dinky托管FlinkSQL作业开发的一些限制和操作步骤。
## **限制说明**
- SQL编辑器编辑的FlinkSQL作业,当前仅支持Flink1.11、Flink1.12、Flink1.13、Flink1.14版本。
- FlinkSQL支持的上下游存储,请参考开发参考中的[上下游存储]
## FlinkSQL操作步骤
为了方便您编写和管理Flink SQL作业,提高作业开发效率,Dinky为您提供FlinkSQL的一些功能,包括元数据中心和SQL编辑器等。
1.首先登录Dinky数据开发控制台
2.在左侧菜单栏,单击**目录**
3.新建目录和作业,请参考作业运维中的**[作业管理](/zh-CN/administrator-guide/Studio/job_devops/job_manage.md)**
4.在新建文件的对话框,填写作业信息
| 参数 | 说明 | 备注 |
| :------: | :----------------------------------------------------------- | :----------------------------------------------------------- |
| 文件名称 | 作业的名称:作业名称在当前项目中必须保持**唯一** | |
| 文件类型 | 流作业和批作业均支持以下文件类型:<br/> FlinkSQL:支持**SET、DML、DDL**语法<br/> FlinkSQLEnv:支持**SET、DDL**语法 | FlinkSQLEnv 场景适用于所有作业<br/>的SET、DDL语法统一管理的场景,<br/>当前FlinkSQLEnv 在SQL编辑器的语<br/>句限制在1000行以内 |
5.在作业开发 SQL 编辑器,编写 DDL 和 DML 代码
示例代码如下:
```sql
--创建源表datagen_source
CREATE TABLE datagen_source(
id BIGINT,
name STRING
) WITH (
'connector' = 'datagen'
);
--创建结果表blackhole_sink
CREATE TABLE blackhole_sink(
id BIGINT,
name STRING
) WITH (
'connector' = 'blackhole'
);
--将源表数据插入到结果表
INSERT INTO blackhole_sink
SELECT
id BIGINT,
name STRING
from datagen_source;
```
新建作业如下图:
![](http://www.aiwenmo.com/dinky/docs/zh-CN/administrator-guide/Studio/job_dev/flinksql_guide/flinksql_job_dev/job_dev.png)
6.在作业开发页面右侧,单击**执行配置**,填写配置信息
| 参数 | 说明 | 备注 |
| :------: | :------------- | :----------------------------------------------------------- |
| 作业配置 | 执行模式 | 选择作业需要部署的集群,<br/>支持以下三种集群模式:<br/> **Per-job 集群**<br/> **Session 集群**<br/> **Application 集群**<br/> 这3种集群的区别请参考:[作业托管概述](/zh-CN/administrator-guide/Studio/job_dev/job_hosting.md) |
| 作业配置 | Flink 集群配置 | Flink 集群配置请参考:注册中心的<br/> [集群管理](/zh-CN/administrator-guide/registerCenter/cluster_manage.md) |
| 作业配置 | FlinkSQL 环境 | 选择创建的FlinkSQLEnv文件,如果<br/>没有则不选 |
| 作业配置 | 任务并行度 | SET优先于作业配置 |
| 作业配置 | Insert 语句集 | 默认禁用,开启后在SQL编辑器中<br/>编写多个 Insert 语句 |
| 作业配置 | 全局变量 | 默认禁用 |
| 作业配置 | 批模式 | 默认禁用,开启后 FlinkSQL为离线计算 |
| 作业配置 | SavePoint 策略 | 默认禁用,策略包括:<br/> **最近一次**<br/> **最早一次**<br/> **指定一次** |
| 作业配置 | 报警组 | 报警组配置请参考:<br/>注册中心的[告警管理](docs/zh-CN/administrator-guide/registerCenter/warning.md) |
| 作业配置 | 其他配置 | SET优先于作业配置,具体可选参数<br/> 请参考 [Flink 官网](https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/deployment/config/) |
作业配置如下图:
![job_config](http://www.aiwenmo.com/dinky/docs/zh-CN/administrator-guide/Studio/job_dev/flinksql_guide/flinksql_job_dev/job_config.png)
7.单击**保存**
8.单击**验证**
9.单击**上线**
完成作业开发和语法检查后,即可发布作业并上线作业。
\ No newline at end of file
完成作业开发和上线后,您需要在数据开发页面启动作业至运行阶段。此外,作业在暂停或者停止后需要恢复时,需要启动作业。
## 限制说明
- 异步提交后,无法接收告警信息,而发布上线后可以接收告警信息,自动恢复作业等;
- 异步提交后,无法及时看到作业的详细情况,而发布上线可以看到作业的详细情况;
## 启动场景
- **上线后启动:** 您可以全新启动(无状态)。
- **暂停后启动:** 暂停作业时,如果你选择了Savepoint策略。系统将按照以下情况进行处理
- 如果您选择 Savepoint 策略,在暂停前执行一次Savepoint,则作业暂停后启动恢复时,系统会从最新的Savepoint状态恢复;
- 如果您禁用 Savepoint 策略,则作业暂停后启动恢复时,系统会从最新的Checkpoint状态恢复;
- **停止后启动:** 停止作业时,根据您选择 Savepoint 策略,作业在停止时是否执行一次Savepoint,系统将按照以下情况进行处理:
- 如果选择 Savepoint 策略,那么作业会先进行Savepoint后进入停止流程。在作业停止后,系统会自动清除作业相关的Checkpoint信息;
- 如果 Savepoint 策略禁用,那么作业会进入停止流程。在作业停止后,系统会自动清除作业相关的Checkpoint信息;
作业停止后启动时,您可以全新启动(无状态);或者从所选Savepoint开始恢复作业。
## Flink作业启动操作步骤
1.首先登录Dinky数据开发控制台
2.在左侧菜单栏选择**目录 > 作业名称 > 检查当前的FlinkSql > 发布 > 上线**
或者选择**目录 > 作业名称 > 检查当前的FlinkSql > 异步提交**
作业启动异步提交如下图:
![async_submit](http://www.aiwenmo.com/dinky/docs/zh-CN/administrator-guide/Studio/job_dev/flinksql_guide/flinksql_job_submit/async_submit.png)
作业启动发布上线如下图:
![online](http://www.aiwenmo.com/dinky/docs/zh-CN/administrator-guide/Studio/job_dev/flinksql_guide/flinksql_job_submit/online.png)
有关发布上线的详细内容,请参考运维中心
您可以选择使用 Session 集群在开发测试环境对作业调试,如作业运行、检查结果等。提升开发效率。调试可以包含多个 SELECT 或 INSERT 的复杂作业。配置 Session 集群请参考注册中心中[集群管理](docs/zh-CN/administrator-guide/registerCenter/cluster_manage.md)的集群实例管理。
## FlinkSQL作业调试步骤
1.首先登录 Dinky 数据开发控制台
2.点击**目录 > 新建目录 > 新建作业**
3.填写完作业信息后,单击**确认**,作业类型必须选择 FlinkSQL
4.分别注册 Source 表和 Sink 表
分别编写源表和结果表 SQL 代码后,单击**执行当前的SQL**
示例代码如下:
```sql
--创建源表datagen_source
CREATE TABLE datagen_source(
id BIGINT,
name STRING
) WITH (
'connector' = 'datagen'
);
--创建结果表blackhole_sink
CREATE TABLE blackhole_sink(
id BIGINT,
name STRING
) WITH (
'connector' = 'blackhole'
);
--将源表数据插入到结果表
INSERT INTO blackhole_sink
SELECT
id BIGINT,
name STRING
from datagen_source;
```
5.单击**保存**
6.单击**语法检查**
7.单击**执行当前的SQL**
8.配置调试数据
如果你想要实时预览数据,如计算count(1)统计等。可以点击**执行配置**
| 配置项 | 说明 |
| :------: | :------------------------------------: |
| 实时预览 | 默认开启 |
| 打印流 | 默认禁用,如果您想要实时打印数据可开启 |
确定好调试数据后,单击**执行当前的SQL**,会在SQL编辑器下方显示结果
Dinky 数据开发控制台为您提供作业管理、作业开发、作业提交、作业调试、作业配置功能。
FlinkSQL 开发指南主要包含以下内容:
- [作业开发](/zh-CN/administrator-guide/Studio/job_dev/flinksql_guide/flinksql_job_dev.md)
- [作业提交](/zh-CN/administrator-guide/Studio/job_dev/flinksql_guide/flinksql_job_submit.md)
- [作业调试](/zh-CN/administrator-guide/Studio/job_dev/flinksql_guide/job_debug.md)
\ No newline at end of file
Dinky 做为一站式的实时计算平台,可以托管数据库及 Flink。全托管的 Flink 集群模式支持 local、Session、Per-job 和 Application 四种模式,四种模式有如下区别:
- **local:** Flink自带,无需任何配置,一个简单的 Mini 集群;
- **Session 集群:** 多个作业可以复用相同的JM,可以提高JM资源利用率。因此适用于大量占用资源比较小或任务启停比较频繁的小并发作业,可以有效节约资源开销。Yarn 和 K8S 均适用;
- **Per-job 集群:** 作业之间资源隔离,每个作业都需要一个独立的JM,因为小任务JM的资源利用率较低,因此适用于占用资源比较大或持续稳定运行的作业。Yarn 适用;
- **Application 集群:** 在 Application 模式下,每个作业创建一个集群,这些作业会被视为属于同一个应用,在同一个集群中执行(如果在 Per-Job 模式下,就会启动多个集群)。可见,Application 模式本质上是 Session 和 Per-Job 模式的折衷。Yarn 和 K8S 均适用;
Dinky 上如何托管 Flink 集群,请参考[集群管理](/zh-CN/administrator-guide/registerCenter/cluster_manage.md)
其他数据库的托管请参考[数据源管理](/zh-CN/administrator-guide/registerCenter/datasource_manage.md)
\ No newline at end of file
目前您可以在Dinky数据开发控制台对您的作业进行管理操作,包括目录创建和删除、作业创建和删除等。由于社区在作业管理还在完善中,后期会以命名空间的方式管理作业。
## 创建目录
首先右键单击**数据开发>目录>创建目录**
![image-20220327160704764](http://www.aiwenmo.com/dinky/dev/docs/image-20220327160704764.png)
右键单击**创建目录> 创建新目录**
![创建新目录](http://www.aiwenmo.com/dinky/dev/docs/%E5%88%9B%E5%BB%BA%E6%96%B0%E7%9B%AE%E5%BD%95.png)
## 创建根目录
创建根目录前提是需要在创建目录后,再次创建子目录,然后再同级目录下方可创建根目录。
首先右键单击**创建根目录> 创建新目录**或者点击引导页下方的**+**号按钮
![创建跟目录](http://www.aiwenmo.com/dinky/dev/docs/%E5%88%9B%E5%BB%BA%E8%B7%9F%E7%9B%AE%E5%BD%95.png)
![根目录新建目录](http://www.aiwenmo.com/dinky/dev/docs/%E6%A0%B9%E7%9B%AE%E5%BD%95%E6%96%B0%E5%BB%BA%E7%9B%AE%E5%BD%95.png)
根目录创建完成
![根目录创建完成](http://www.aiwenmo.com/dinky/dev/docs/%E6%A0%B9%E7%9B%AE%E5%BD%95%E5%88%9B%E5%BB%BA%E5%AE%8C%E6%88%90.png)
## 创建作业
Dinky数据开发控制台,目前支持的数据源作业开发详情请参考开发控制台中的[组件介绍]()
首先右键单击**创建作业>创建新作业**
![创建新作业](http://www.aiwenmo.com/dinky/dev/docs/%E5%88%9B%E5%BB%BA%E6%96%B0%E4%BD%9C%E4%B8%9A.png)
创建新作业默认是FlinkSQL,您也可以选择其他数据源创建新作业
![创建新作业1](http://www.aiwenmo.com/dinky/dev/docs/%E5%88%9B%E5%BB%BA%E6%96%B0%E4%BD%9C%E4%B8%9A1.png)
新作业创建完成
![作业创建完成](http://www.aiwenmo.com/dinky/dev/docs/%E4%BD%9C%E4%B8%9A%E5%88%9B%E5%BB%BA%E5%AE%8C%E6%88%90.png)
## 重命名
重命名包括对目录重命名和作业重命名
首先右键单击**重命名>重命名目录**
![重命名](http://www.aiwenmo.com/dinky/dev/docs/%E9%87%8D%E5%91%BD%E5%90%8D.png)
![重命名目录](http://www.aiwenmo.com/dinky/dev/docs/%E9%87%8D%E5%91%BD%E5%90%8D%E7%9B%AE%E5%BD%95.png)
重命名完成
![重命名完成](http://www.aiwenmo.com/dinky/dev/docs/%E9%87%8D%E5%91%BD%E5%90%8D%E5%AE%8C%E6%88%90.png)
当重命名作业时,会提示重命名作业。
## 移动
您如果想移动目录或者移动作业,可以将目录或者作业移动到其他目录下。
如果所在的目录下有作业,在您移动成功后,会将作业也会一并移动到相应目录下。
首先右键单击**剪切**
![剪切](http://www.aiwenmo.com/dinky/dev/docs/%E5%89%AA%E5%88%87.png)
然后右键单击**粘贴**到指定目录下
![粘贴](http://www.aiwenmo.com/dinky/dev/docs/%E7%B2%98%E8%B4%B4.png)
剪切粘贴成功
![移动成功](http://www.aiwenmo.com/dinky/dev/docs/%E7%A7%BB%E5%8A%A8%E6%88%90%E5%8A%9F.png)
## 搜索
当您作业比较多的时候,可以通过搜索功能,找到对应的作业或者目录。不管是搜索作业还是搜索目录都很方便。
![作业目录搜索](http://www.aiwenmo.com/dinky/dev/docs/%E4%BD%9C%E4%B8%9A%E7%9B%AE%E5%BD%95%E6%90%9C%E7%B4%A2.png)
## 删除
删除包括删除作业和删除目录。
在删除作业时,会提示删除作业。
首先右键单击**删除>删除作业>确定**
![删除](http://www.aiwenmo.com/dinky/dev/docs/%E5%88%A0%E9%99%A4%E4%BD%9C%E4%B8%9A.png)
当删除目录时,会提示删除目录。
## 作业其他功能
右键单击可以打开作业(或者双击作业)、异步提交作业
![其他作业功能](http://www.aiwenmo.com/dinky/dev/docs/%E5%85%B6%E4%BB%96%E4%BD%9C%E4%B8%9A%E5%8A%9F%E8%83%BD.png)
**说明:**如果目录下有很多子目录或者作业,先要删除子目录或者作业,才能进一步删除父目录。
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment