Skip to content

Commit

Permalink
[Feature] Implementing Yarn mode cluster configuration supports confi…
Browse files Browse the repository at this point in the history
…guring the rs protocol (DataLinkDC#3442)

Signed-off-by: Zzm0809 <[email protected]>
Co-authored-by: Zzm0809 <[email protected]>
  • Loading branch information
Zzm0809 and Zzm0809 authored Apr 30, 2024
1 parent 3695aaf commit 95f6e00
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.dinky.gateway.result.GatewayResult;
import org.dinky.gateway.result.YarnResult;
import org.dinky.utils.LogUtil;
import org.dinky.utils.URLUtils;

import org.apache.flink.client.deployment.ClusterSpecification;
import org.apache.flink.client.deployment.application.ApplicationConfiguration;
Expand All @@ -42,6 +43,8 @@
import java.util.Collections;
import java.util.stream.Collectors;

import cn.hutool.core.util.URLUtil;

/**
* YarnApplicationGateway
*
Expand All @@ -54,14 +57,28 @@ public GatewayType getType() {
return GatewayType.YARN_APPLICATION;
}

/**
* format url
* <p>if url is rs protocol, convert to file path</p>
* @param url url
* @return formatted url
*/
private String formatUrl(String url) {
if (URLUtil.url(url).getProtocol().equals("rs")) {
return URLUtils.toFile(url).getAbsolutePath();
} else {
return url;
}
}

@Override
public GatewayResult submitJar(FlinkUdfPathContextHolder udfPathContextHolder) {
if (Asserts.isNull(yarnClient)) {
init();
}

AppConfig appConfig = config.getAppConfig();
configuration.set(PipelineOptions.JARS, Collections.singletonList(appConfig.getUserJarPath()));
configuration.set(PipelineOptions.JARS, Collections.singletonList(formatUrl(appConfig.getUserJarPath())));
configuration.setString(
"python.files",
udfPathContextHolder.getPyUdfFile().stream().map(File::getName).collect(Collectors.joining(",")));
Expand Down
4 changes: 3 additions & 1 deletion dinky-web/src/locales/en-US/pages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -785,8 +785,10 @@ export default {
'rc.cc.sqlSubmitJarPath': 'Jar File Path',
'rc.cc.sqlSubmitJarPathHelp':
'Please enter the Jar file path! eg: hdfs:///dinky/dinky-app-1.16-with-dependencies.jar',
'rc.cc.sqlSubmitJarPathHelpTips':
'In Yarn mode, this parameter can be set to: hdfs:///dinky/dinky-app-1.17-with-dependencies.jar Alternatively, if rs:/dinky/inky app 1.17 with dependencies. jar is set to the rs:/ protocol, the jar package needs to be uploaded to Dinky`s resource center and the path filled in. In K8s mode, only the local://protocol is supported',
'rc.cc.start': 'Start Session Cluster',
'rc.cc.submitSqlConfig': 'Submit FlinkSQL Config items (required in Application mode)',
'rc.cc.submitSqlConfig': 'Submit FlinkSQL Config items',
'rc.cc.tmHeap': 'TaskManager Heap Memory',
'rc.cc.tmHeapHelp':
'Please enter the TaskManager heap memory size! This parameter configuration item is',
Expand Down
4 changes: 3 additions & 1 deletion dinky-web/src/locales/zh-CN/pages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -752,8 +752,10 @@ export default {
'rc.cc.sqlSubmitJarPath': 'Jar 文件路径',
'rc.cc.sqlSubmitJarPathHelp':
'请输入 Jar 文件路径! eg: hdfs:///dinky/dinky-app-1.16-with-dependencies.jar',
'rc.cc.sqlSubmitJarPathHelpTips':
'Yarn 模式下此参数可以设置为: hdfs:///dinky/dinky-app-1.17-with-dependencies.jar 或者 rs:/dinky/dinky-app-1.17-with-dependencies.jar 如果设置为 rs:/ 协议,则需要将该jar包上传到 Dinky 的资源中心中,然后填写该路径。K8s 模式下仅支持 local:// 协议',
'rc.cc.start': '启动 Session 集群',
'rc.cc.submitSqlConfig': '提交 FlinkSQL 配置项 (Application 模式必填)',
'rc.cc.submitSqlConfig': '提交 FlinkSQL 配置项',
'rc.cc.tmHeap': 'TaskManager 堆内存',
'rc.cc.tmHeapHelp': '请输入 TaskManager 堆内存大小! 此参数配置项为',
'rc.cc.tmMem': 'TaskManager 内存',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,16 @@ const ApplicationConfig = () => {
<ProFormGroup labelLayout={'inline'}>
<ProFormText
width={'xl'}
rules={[
{
required: true,
message: l('rc.cc.sqlSubmitJarPathHelp')
}
]}
name={['config', 'appConfig', 'userJarPath']}
placeholder={l('rc.cc.sqlSubmitJarPathHelp')}
label={l('rc.cc.sqlSubmitJarPath')}
tooltip={l('rc.cc.sqlSubmitJarPathHelp')}
tooltip={l('rc.cc.sqlSubmitJarPathHelpTips')}
/>
</ProFormGroup>
</>
Expand Down
24 changes: 13 additions & 11 deletions docs/docs/user_guide/register_center/cluster_manage.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,10 @@ title: 集群
3. 自动注册的集群无需关心注册过多的情况, 系统会定时清理过期的 自动注册的 Flink 实例,手动注册的无影响
4. 手动注册的集群需要手动管理 Flink 实例, 如需删除 Flink 实例,请鼠标悬浮某一 Flink 实例,点击删除按钮即可删除 Flink 实例
5. 提供手动进行心跳检测
6. 所有Flink 实例删除前会进行引用检测,如果有引用,则无法删除(此为避免实际运行中的任务关联到该Flink 实例,从而导致一系列问题)
7. 手动注册的集群可以直接删除(前提是未被使用),如果自动注册的集群如果状态为`健康`需要先停止 Flink 实例,然后再删除 Flink 实例.
6. 所有Flink 实例删除前会进行引用检测,如果有引用,则无法删除(此为避免实际运行中的任务关联到该Flink
实例,从而导致一系列问题)
7. 手动注册的集群可以直接删除(前提是未被使用),如果自动注册的集群如果状态为`健康`需要先停止 Flink 实例,然后再删除 Flink
实例.

如需查看 自动注册 和 手动注册 下的 Flink 实例,请点击切换按钮进行查看
:::
Expand All @@ -47,13 +49,13 @@ title: 集群

### 参数解读

| 参数 | 说明 | 是否必填 | 默认值 | 示例值 |
|-----------------|------------------------------------------------------------------------------------|:----:|:-----:|:-------------:|
| 集群名称 | 集群名称, 用于区分不同集群 ||| flink-session |
| 集群别名 | 集群别名, 用于区分不同集群, 如不填默认同集群名称 || 同集群名称 | flink-session |
| 集群类型 | 集群类型, 目前支持 Local, Standalone, Yarn Session, Kubernetes Session ||| Standalone |
| 参数 | 说明 | 是否必填 | 默认值 | 示例值 |
|------------------|----------------------------------------------------------------------------------|:----:|:-----:|:-------------:|
| 集群名称 | 集群名称, 用于区分不同集群 ||| flink-session |
| 集群别名 | 集群别名, 用于区分不同集群, 如不填默认同集群名称 || 同集群名称 | flink-session |
| 集群类型 | 集群类型, 目前支持 Local, Standalone, Yarn Session, Kubernetes Session ||| Standalone |
| JobManager 高可用地址 | 添加 Flink 集群的 JobManager 的 RestApi 地址。当 HA 模式时,地址间用英文逗号分隔,例如:192.168.123.101:8081 |||
| 备注 | 备注, 用于备注集群信息 ||| flink-session |
| 备注 | 备注, 用于备注集群信息 ||| flink-session |

## 集群配置

Expand Down Expand Up @@ -91,9 +93,9 @@ title: 集群

- 提交 FlinkSQL 配置项 (Application 模式必填)-公共配置

| 参数 | 说明 | 是否必填 | 默认值 | 示例值 |
|----------|----------------------------------------------------------------------------------------------------------|:----:|:---:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| Jar 文件路径 | 指定 Jar 文件路径,如果该集群配置用于提交 Application 模式任务时 则必填<br/>需要包含以下文件:dinky-app-{version}-jar-with-dependencies.jar | || hdfs:///dinky/dinky-app-1.16-1.0.0-SNAPSHOT-jar-with-dependencies.jar <br/>请注意: 如果使用 Kubernetes 模式,路径需要指定为: local:///dinky/dinky-app-1.16-1.0.0-SNAPSHOT-jar-with-dependencies.jar |
| 参数 | 说明 | 是否必填 | 默认值 | 示例值 |
|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:----:|:---:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| Jar 文件路径 | 指定 Jar 文件路径,如果该集群配置用于提交 Application 模式任务时 则必填<br/>需要包含以下文件:dinky-app-{version}-jar-with-dependencies.jar<br/>Yarn 模式下此参数可以设置为: hdfs:///dinky/dinky-app-1.17-with-dependencies.jar 或者 rs:/dinky/dinky-app-1.17-with-dependencies.jar <br/>如果设置为 rs:/ 协议,则需要将该jar包上传到 Dinky 的资源中心中,然后填写该路径。<br/>K8s 模式下仅支持 local:// 协议 | || hdfs:///dinky/dinky-app-1.16-1.0.0-SNAPSHOT-jar-with-dependencies.jar <br/>请注意: 如果使用 Kubernetes 模式,路径需要指定为: local:///dinky/dinky-app-1.16-1.0.0-SNAPSHOT-jar-with-dependencies.jar |

- Flink 预设配置(高优先级)-公共配置

Expand Down

0 comments on commit 95f6e00

Please sign in to comment.