diff --git a/docs/docs/practical_guide/Integration_practice/dinky_integration_ds.md b/docs/docs/practical_guide/Integration_practice/dinky_integration_ds.md index 6488fdac13..4b0994e83a 100644 --- a/docs/docs/practical_guide/Integration_practice/dinky_integration_ds.md +++ b/docs/docs/practical_guide/Integration_practice/dinky_integration_ds.md @@ -7,13 +7,13 @@ title: Dinky 集成 DolphinScheduler :::info 说明 本文档介绍 DolphinScheduler 集成, 以及如何使用 DolphinScheduler 进行任务调度 -注意: 本文档基于 Dinky 1.0.0+ 版本编写, 请确保 Dinky 版本 >= 1.0.0 +注意: 本文档基于 Dinky 1.2.2 版本编写, 请确保 Dinky 版本 >= 1.2.X ::: ## 前置要求 -- DolphinScheduler 3.2.1+ -- Dinky 1.0.0+ +- DolphinScheduler 3.2.0+ +- Dinky 1.2.0+ - Docker 19.03+ @@ -21,7 +21,7 @@ title: Dinky 集成 DolphinScheduler ### 启动 DolphinScheduler ```bash -export DOLPHINSCHEDULER_VERSION=3.2.1 +export DOLPHINSCHEDULER_VERSION=3.2.2 docker run --name dolphinscheduler-standalone-server -p 12345:12345 -p 25333:25333 -d apache/dolphinscheduler-standalone-server:"${DOLPHINSCHEDULER_VERSION}" ``` @@ -37,117 +37,57 @@ docker run --name dolphinscheduler-standalone-server -p 12345:12345 -p 25333:253 进入 `安全中心` -> `令牌管理` -> `创建令牌` 请注意设置过期时间,并复制生成的 Token -## Dinky 环境准备 +## Dinky 配置 -### 启动 Dinky - -> 假设部署在: /opt/dinky-1.0.0 目录下 - -```bash - -cd /opt/dinky-1.0.0 - -./auto.sh start 1.16 -``` -页面访问: http://ip:8888 默认用户名/密码: admin/admin +> 假设你已经正常安装好dinky ### 配置 DolphinScheduler -进入 `配置中心` -> `全局配置` -> 选择 `DolphinScheduler 配置` tag +进入 `配置中心` -> `全局配置` -> 选择 `DolphinScheduler 配置` 1. 配置 `DolphinScheduler 地址` 为: http://ip:12345/dolphinscheduler , 注意 ip 为 DolphinScheduler 服务所在机器的 ip, 根据实际情况修改 2. 配置 `DolphinScheduler Token` 为: 上一步创建的 Token 3. 配置 `DolphinScheduler 项目名` 为: `Dinky` (注意: 此为默认值, 可自行修改) 4. 最后修改 `是否启用 DolphinScheduler` 为 `是` (注意: 默认为不启用) +![Jrv2ib](https://files.junyao.tech/uPic/Jrv2ib.png) + +> 正常启用好,会在 DolphinScheduler 中自动创建名为`Dinky`的项目 + ## Dinky 使用示例 ### Dinky 侧步骤 1. 进入 `数据开发` -> `项目` -> 右键目录 ->`创建任务` 2. 任务类型可选择 `FlinkSQL` 或 `FlinkJar` ,填写名称,并点击确定 -3. 打开该任务,编辑器内输入以下 DEMO SQL +3. 打开该任务,编辑器内输入以下 `datagen-2` 作业 ```sql -# checkpoint 配置 自行根据实际情况修改, 以下为示例 -set execution.checkpointing.checkpoints-after-tasks-finish.enabled=true; -SET pipeline.operator-chaining=false; -set state.backend.type=rocksdb; -set execution.checkpointing.interval=8000; -set state.checkpoints.num-retained=10; -set cluster.evenly-spread-out-slots=true; - -DROP TABLE IF EXISTS source_table3; -CREATE TABLE IF NOT EXISTS - source_table3 ( - `order_id` BIGINT, - `product` BIGINT, - `amount` BIGINT, - `order_time` as CAST(CURRENT_TIMESTAMP AS TIMESTAMP(3)), - WATERMARK FOR order_time AS order_time - INTERVAL '2' SECOND - ) -WITH - ( - 'connector' = 'datagen', - 'rows-per-second' = '1', - 'fields.order_id.min' = '1', - 'fields.order_id.max' = '2', - 'fields.amount.min' = '1', - 'fields.amount.max' = '10', - 'fields.product.min' = '1', - 'fields.product.max' = '2' - ); - -DROP TABLE IF EXISTS sink_table5; - -CREATE TABLE IF NOT EXISTS - sink_table5 ( - `product` BIGINT, - `amount` BIGINT, - `order_time` TIMESTAMP(3), - `one_minute_sum` BIGINT - ) -WITH - ('connector' = 'print'); - -INSERT INTO - sink_table5 -SELECT - product, - amount, - order_time, - SUM(amount) OVER ( - PARTITION BY - product - ORDER BY - order_time - RANGE BETWEEN INTERVAL '1' MINUTE PRECEDING - AND CURRENT ROW - ) as one_minute_sum -FROM - source_table3; - +CREATE TABLE Orders ( + order_number BIGINT, + price DECIMAL(32,2), + buyer ROW, + order_time TIMESTAMP(3) +) WITH ( + 'connector' = 'datagen', + 'rows-per-second' = '1', + 'number-of-rows' = '50' +); +select order_number,price,first_name,last_name,order_time from Orders ``` - -4. 配置右侧 `任务配置` ,请根据实际情况填写,如对参数不了解, 请鼠标悬浮至表单的每项 label 右侧的 `?` 查看帮助信息 - -![dinky_job_desc](http://pic.dinky.org.cn/dinky/docs/zh-CN/practical_guide/Integration_practice/dinky_integration_ds/dinky_job_desc.png) - -5. 在 Dinky 1.0.0 及以后,必须要发布任务才能 推送至 DolphinScheduler, 点击 `发布` 按钮, 等待任务发布成功后,页面会自动刷新,从而出现 `推送按钮`。 -6. 点击 `推送` 按钮, 配置推送参数, 在 Dinky 1.0.0 及以后, 支持了配置前置依赖, 请根据实际情况填写 +4. 点击 `发布` 按钮, 等待任务发布成功后,页面会自动刷新,从而出现 `推送按钮`。 +5. 点击 `推送` 按钮, 配置推送参数, 在 Dinky 1.0.0 及以后, 支持了配置前置依赖, 请根据实际情况填写 :::warning 注意 选择前置任务后,任务将会在前置任务执行成功后才会执行,请自行合理选择,避免任务循环依赖,本平台不做依赖检查 ::: -![push_ds](http://pic.dinky.org.cn/dinky/docs/zh-CN/practical_guide/Integration_practice/dinky_integration_ds/push_ds.png) - +![jmd4WB](https://files.junyao.tech/uPic/jmd4WB.png) 7. 配置完成之后, 点击 `完成` 按钮, 等待推送成功 ### DolphinScheduler 侧步骤 1. 进入 `项目管理` -> 点击`Dinky`项目(此为在`配置中心`中配置的项目名) -> `工作流定义` ,点击工作流列表中备注为`系统添加` 的工作流 -2. 即可看到刚才在 Dinky 侧创建的任务`datagen` 已经被推送至 DolphinScheduler,且可以看到其依赖关系已经被正确设置 -如图: (忽略其他任务,只关注 `datagen` 任务即可) -![push_ds_workflow_page](http://pic.dinky.org.cn/dinky/docs/zh-CN/practical_guide/Integration_practice/dinky_integration_ds/push_ds_workflow_page.png) - +2. 即可看到刚才在 Dinky 侧创建的任务`datagen-2` 已经被推送至 DolphinScheduler,且可以看到其依赖关系已经被正确设置 +如图: (忽略其他任务,只关注 `datagen-2` 任务即可) +![pXGOER](https://files.junyao.tech/uPic/pXGOER.png) 3. 返回到 `工作流定义` 页面, 将该工作流上线, 可点击`运行`按钮, 运行该工作流, 也可配置定时调度配置, 定时调度配置请参考 DolphinScheduler 官方文档 4. 剩余操作请参考 DolphinScheduler 官方文档, 本文档不再赘述 diff --git a/docs/docs/practical_guide/run_mode_practice/dinky_k8s_quick_start.mdx b/docs/docs/practical_guide/run_mode_practice/dinky_k8s_quick_start.mdx deleted file mode 100644 index a6ecb2a709..0000000000 --- a/docs/docs/practical_guide/run_mode_practice/dinky_k8s_quick_start.mdx +++ /dev/null @@ -1,202 +0,0 @@ ---- -sidebar_position: 1 -id: dinky_k8s_quick_start -title: K8s集成 ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -Dinky支持以下几种 Flink on k8s 运行模式: - -- Native-Kubernetes Application -- Native-Kubernetes Session -- Kubernetes Operator Application(基于官方operator实现) - -> Dinky 不强制要求部署在 Kubernetes 集群中或Kubernetes 节点,但务必保障Dinky与 Kubernetes 集群的网络互通,以便于 Dinky 与 Kubernetes 集群进行交互, -如果使用ClusterIP模式提交还需要确保Kubernetes内部网络与dinky互通 - - -## k8s环境准备 -**部分内容可参考 Flink 对应集成 k8s 文档链接** - - - - [https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/deployment/resource-providers/native_kubernetes/](https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/) - - - [https://nightlies.apache.org/flink/flink-docs-release-1.15/zh/docs/deployment/resource-providers/native_kubernetes/](https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/) - - - [https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/](https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/) - - - [https://nightlies.apache.org/flink/flink-docs-release-1.17/zh/docs/deployment/resource-providers/native_kubernetes/](https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/) - - - [https://nightlies.apache.org/flink/flink-docs-release-1.18/zh/docs/deployment/resource-providers/native_kubernetes/](https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/deployment/resource-providers/native_kubernetes/) - - - - -如果你的k8s集群已经创建好了命名空间与权限配置,那么可以跳过这一步 -```shell -# 创建命名空间 -kubectl create namespace dinky -# 为命名空间创建权限 -kubectl create clusterrolebinding flink-role-binding-default --clusterrole=edit --serviceaccount=dinky:default -``` - -:::tip -上述操作为创建一个命名空间 dinky 并为default用户赋予所有权限,请根据自身需求自行更改,参考官方文档 [https://nightlies.apache.org/flink/flink-docs-stable/docs/deployment/resource-providers/native_kubernetes/#rbac](https://nightlies.apache.org/flink/flink-docs-stable/docs/deployment/resource-providers/native_kubernetes/#rbac) -::: - ---- -## 镜像制作 -本教程以下内容均使用Flink 1.15版本为例,如果使用其他版本,请根据文档自行更改版本号即可 -### 手动制作镜像 -#### 基础镜像Dockerfile模板 -**首先,你需要在当前extends目录下准备以下几个jar包** -- commons-cli-1.3.1.jar -- dinky-app-1.15-1.0.0-SNAPSHOT-jar-with-dependencies.jar -- flink-table-planner_2.12-1.15.4.jar - -> 上述仅为基础必须的依赖,如果你的flink任务有其他依赖需求,请自行补充添加 - -**编写Dockerfile** -```shell -ARG FLINK_VERSION=1.15.4 # flink 版本号 - -FROM flink:${FLINK_VERSION}-scala_2.12 # flink官方镜像tag - -ADD extends /opt/flink/lib # 把当前extends目录下的jar添加进依赖目录 - -RUN rm -rf ${FLINK_HOME}/lib/flink-table-planner-loader-*.jar # 删除loader包,替换为不带loader的 -``` - -**构建镜像并推送到私有镜像仓库** -```shell -# 构建Dinky app镜像 -docker build -t dinky-flink:1.0.0-1.15.4 . --no-cache -# 这一步为推送到私有镜像仓库过程,请根据需要自行修改参数 -docker tag dinky-flink:1.0.0-1.15.4 192.168.0.10:5000/dinky-flink-1.0.0-1.15.4 -docker push 192.168.0.10:5000/dinky-flink-1.0.0-1.15.4 -``` - -#### 其他镜像Dockerfile模板 -##### Python支持 - -```shell -ARG FLINK_VERSION=1.15.4 - -FROM flink:${FLINK_VERSION}-scala_2.12 - -ARG FLINK_VERSION -ENV PYTHON_HOME /opt/miniconda3 - -USER root -RUN wget "https://s3.jcloud.sjtu.edu.cn/899a892efef34b1b944a19981040f55b-oss01/anaconda/miniconda/Miniconda3-py38_4.9.2-Linux-x86_64.sh" -O "miniconda.sh" && chmod +x miniconda.sh -RUN ./miniconda.sh -b -p $PYTHON_HOME && chown -R flink $PYTHON_HOME && ls $PYTHON_HOME - -USER flink -RUN rm -rf ${FLINK_HOME}/lib/flink-table-planner-loader-*.jar -ADD extends /opt/flink/lib # 把当前extends目录下的jar添加进依赖目录 -ENV PATH $PYTHON_HOME/bin:$PATH -RUN pip install "apache-flink==${FLINK_VERSION}" -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com -``` - -#### Hadoop支持 -请提前下载好hadoop安装包`hadoop-3.3.4.tar.gz`到当前目录,版本可自定义更改 -```shell -ARG FLINK_VERSION=1.15.4 - -FROM flink:${FLINK_VERSION}-scala_2.12 - -ARG FLINK_VERSION - -ENV HADOOP_VERSION 3.3.4 -ENV HADOOP_HOME=/opt/hadoop -ADD hadoop-${HADOOP_VERSION}.tar.gz /opt -RUN ln -s /opt/hadoop-${HADOOP_VERSION} ${HADOOP_HOME} -ENV HADOOP_CLASSPATH=${HADOOP_HOME}/etc/hadoop:${HADOOP_HOME}/share/hadoop/common/lib/*:${HADOOP_HOME}/share/hadoop/common/*:${HADOOP_HOME}/share/hadoop/hdfs:${HADOOP_HOME}/share/hadoop/hdfs/lib/*:${HADOOP_HOME}/share/hadoop/hdfs/*:${HADOOP_HOME}/share/hadoop/yarn/lib/*:${HADOOP_HOME}/share/hadoop/yarn/*:${HADOOP_HOME}/share/hadoop/mapreduce/lib/*:${HADOOP_HOME}/share/hadoop/mapreduce/*:${HADOOP_HOME}/contrib/capacity-scheduler/*.jar -ENV HADOOP_CONF_DIR=${HADOOP_HOME}/conf -ENV PATH=${PATH}:${HADOOP_CLASSPATH}:${HADOOP_CONF_DIR}:${HADOOP_HOME}/bin - -USER flink -RUN rm -rf ${FLINK_HOME}/lib/flink-table-planner-loader-1.15.4.jar -ENV PATH $PYTHON_HOME/bin:$PATH -ADD extends /opt/flink/lib # 把当前extends目录下的jar添加进依赖目录 -``` - -### 通过页面构建镜像 -> 正在快马加鞭赶来中,请耐心等待 - -## 配置Kubernetes集群信息 -在**注册中心页面**,点击 **集群==>集群配置==>新建** 进入新建集群页面 -![IMG](http://pic.dinky.org.cn/dinky/docs/test/k8s-new-config.png)类型选择`Kubernetes Native`或者`Kubernetes Operator` 目前阶段仍推荐Kubernetes Native方式,operator还在beta中 - -#### 填写集群信息 - -##### Kubernetes 配置 - -| 参数 | 说明 | 是否必填 | 默认值 | 示例值 | -|--------------------|------------------------------------------|:----:|:---:|:------------------------:| -| 暴露端口类型 | 支持NodePort与ClusterIP | 是 | 无 | NodePort | -| Kubernetes 命名空间 | 集群所在的 Kubernetes 命名空间 | 是 | 无 | dinky | -| K8s 提交账号 | 集群提交任务的账号 | 是 | 无 | default | -| Flink 镜像地址 | 上一步打包的镜像地址 | 是 | 无 | dinky-flink-1.0.0-1.15.4 | -| JobManager CPU 配置 | JobManager 资源配置 | 否 | 无 | 1 | -| TaskManager CPU 配置 | TaskManager 资源配置 | 否 | 无 | 1 | -| Flink 配置文件路径 | 仅指定到文件夹,dinky会自行读取文件夹下的配置文件并作为flink的默认配置 | 否 | 无 | /opt/flink/conf | - -**注意** -> 如果您是在k8s application模式下提交任务,您必须要Fink安装目录下面的conf目录拷贝到dinky的安装机器的/opt/flink/conf下面,如果目录不存在则创建这个目录。 - -> 如果您有其他的配置项需要添加,请点击添加配置项按钮,添加完毕后,点击保存即可 - -##### Kubernetes 连接与pod配置 -| 参数 | 说明 | 是否必填 | 默认值 | 示例值 | -|----------------------|-----------------------------------------------|:----:|:---:|:---:| -| K8s KubeConfig | 集群的KubeConfig内容,如果不填写,则默认使用`~/.kube/config`文件 | 否 | 无 | 无 | -| Default Pod Template | 默认的Pod模板 | 否 | 无 | 无 | -| JM Pod Template | JobManager的Pod模板 | 否 | 无 | 无 | -| TM Pod Template | TaskManager的Pod模板 | 否 | 无 | 无 | - -##### 提交 FlinkSQL 配置项 (Application 模式必填)-公共配置 - -| 参数 | 说明 | 是否必填 | 默认值 | 示例值 | -|----------|------------------------------------------------------------|:----:|:---:|:-----------------------------------------------------------------:| -| Jar 文件路径 | 指定镜像内dinky-app的 Jar 文件路径,如果该集群配置用于提交 Application 模式任务时 则必填 | 否 | 无 | local:///opt/flink/dinky-app-1.16-1.0.0-jar-with-dependencies.jar | -> 由于flink限制,k8s模式只能加载镜像内的jar包,也就是地址必须为local://开头,如果想要自定义jar提交,请查阅jar提交部分 - - -#### Flink 预设配置(高优先级)-公共配置 - -| 参数 | 说明 | 是否必填 | 默认值 | 示例值 | -|-----------------|--------------------|:----:|:---:|:------------------------:| -| JobManager 内存 | JobManager 内存大小! | 否 | 无 | 1g | -| TaskManager 内存 | TaskManager 内存大小! | 否 | 无 | 1g | -| TaskManager 堆内存 | TaskManager 堆内存大小! | 否 | 无 | 1g | -| 插槽数 | 插槽数量 | 否 | 无 | 2 | -| 保存点路径 | 对应SavePoint目录 | 否 | 无 | hdfs:///flink/savepoint | -| 检查点路径 | 对应CheckPoint目录 | 否 | 无 | hdfs:///flink/checkpoint | - -## 启动session集群(可选) - -除了您自己手动部署session集群外,dinky还提供了快捷方式部署Kubernetes session集群,在上面Kubernetes集群配置完成后,点击启动按钮即可向指定Kubernetes集群提交session集群 - -![IMG](http://pic.dinky.org.cn/dinky/docs/test/k8s-config-list.png) - -至此,所有准备工作均已完成完成,接下来就可以通过` kubernetes session`模式或`kubernetes application`模式进行任务提交啦。 - - -## 提交 kubernetes application 任务 - -进入数据开发页面,新建一个flink sql任务,选择集群类型为`kubernetes application`,集群选择为我们刚刚配置的集群,点击提交即可 - -![IMG](http://pic.dinky.org.cn/dinky/docs/test/k8s-task-demo.png) - -## 提交 kubernetes session 任务 - -进入数据开发页面,新建一个flink sql任务,选择集群类型为`kubernetes session`,集群选择为我们刚刚配置的集群,点击提交即可 -图片同上 \ No newline at end of file