说明:该部分旨在通过简单的操作步骤,体验使用StreamPark平台提交flink作业的便捷流程。

1_config_flink_home

2_add_flink_home_info

点击”OK”,保存

3_display_flink_home_config

根据flink 部署模式 以及 资源管理方式,StreamPark 支持以下6种作业模式

  • Standalone Session
  • Yarn Session
  • Yarn Per-job
  • Yarn Application
  • K8s Session
  • K8s Application

本次选取较为简单的 Standalone Session 模式(下图绿色连线),快速上手。

4_flink_deployment_execute_model

  1. start-cluster.sh

5_start_flink_standalone_session_service

页面访问:http://hadoop:8081/

6_flink_standalone_session_web_ui

7_config_flink_cluster_menu.png

8_add_flink_cluster_info.png

9_add_flink_cluster_successfully

10_display_flink_cluster_list

创建作业

11_add_flink_job_menu

主要参数

  • Development Mode: 选择 “Flink SQL”
  • Execution Mode: 选择 “remote”
  • Flink Version: 选择 “flink-1.14”, 即 “1.1 配置FLINK_HOME”里面配置的
  • Flink Cluster: 选择 “myStandalonSession”, 即“1.2 配置FLINK Cluster”里面配置的
  • Flink SQL: 详见下面示例
  • Application Name: 作业名称

创建作业

12_add_flink_job_param_1

13_add_flink_job_param_2

14_add_flink_job_param_3

保存作业

点击 蓝色“Submit”按钮,提交作业

15_save_flink_job

16_display_flink_job_list

构建作业

17_build_flink_job

构建成功

18_build_flink_job_successfully

启动作业

19_start_flink_job

启动检查点设置

20_set_checkpoint_when_start_flink_job

提交作业

21_submit_flink_job_1 22_submit_flink_job_2

查看作业状态

通过Apache StreamPark™看板查看

StreamPark dashboard

23_flink_job_dashboard

查看作业详情

24_display_flink_job_details

25_display_flink_job_details_page

26_display_native_flink_job_web_ui

27_display_native_flink_job_web_ui_2

至此,一个使用StreamPark平台提交flink job的流程基本完成。下面简单总结下StreamPark平台管理flink作业的大致流程。

28_streampark_process_workflow

通过 StreamPark 平台 停止、修改、删除 flink job 相对简单,大家可自行体验,需要说明的一点是:若作业为running状态,则不可删除,需先停止

Apache StreamPark™系统模块简介

系统设置

菜单位置

29_streampark_system_menu

User Management

用于管理StreamPark平台用户

30_streampark_user_management_menu

Token Management

允许用户以Restful api形式操作flink job

31_streampark_token_management_menu

32_streampark_token_management_menu_usage

  1. curl -X POST '/flink/app/cancel' \
  2. -H 'Authorization: 69qMW7reOXhrAh29LjPWwwP+quFqLf++MbPbsB9/NcTCKGzZE2EU7tBUBU5gqG236VF5pMyVrsE5K7hBWiyuLuJRqmxKdPct4lbGrjZZqkv5lBBYExxYVMIl+f5MZ9dbqqslZifFx3P4A//NYgGwkx5PpizomwkE+oZOqg0+c2apU0UZ9T7Dpnu/tPLk9g5w9q+6ZS2p+rTllPiEgyBnSw==' \
  3. -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \
  4. --data-urlencode 'savePoint=' \
  5. --data-urlencode 'id=100001' \
  6. --data-urlencode 'savePointed=false' \
  7. --data-urlencode 'drain=false' \
  8. -i

Role Management

用户角色:目前有2种,develop 和 admin。

33_streampark_role_menu

Team Management

团队:用于区分管理企业不同团队的作业。

34_streampark_team_menu

Member Management

(团队)成员管理

35_streampark_member_menu

Menu Management

管理系统菜单

36_streampark_menu_management

Apache StreamPark™菜单模块

Project

StreamPark结合代码仓库实现CICD

37_streampark_project_menu

使用时,点击 “+ Add new ”,配置repo信息,保存。

38_streampark_project_menu_usage_1

39_streampark_project_menu_usage_2

Application

核心模块:用于对 flink job 全生命周期(创建、构建、启动、停止、删除等)管理。

40_application_menu

Variable

变量管理:管理变量,可在Application 作业创建时使用。

41_variable_menu_usage_1

42_variable_menu_usage_2

43_variable_menu_usage_3

Setting

System Setting

用于系统配置:Maven 、 Docker 、 alert email、Ingress

44_system_menu_1

45_system_menu_2

46_system_menu_3

47_system_menu_4

Alert Setting

支持多种告警通知模式

48_alert_setting_menu

待完善】可对flink作业进行一些操作,如对flink sql校验等

49_flink_home_list

50_flink_home_usage

51_flink_home_usage_2

52_add_flink_cluster_info

53_display_flink_cluster_list

54_visit_flink_cluster_web_ui

原生flink 与 Apache StreamPark™关联使用

待完善】其实,个人理解,StreamPark一大特点是对flink原生作业的管理模式在用户使用层面进行了优化,使得用户能利用该平台快速开发、部署、运行、监控flink作业。所以,想表达的意思是:如果用户对原生flink比较熟悉的话,那StreamPark使用起来就会更加得心应手。

下面内容摘自 张利兵 老师 极客时间专栏Flink核心技术与实战

55_flink_deployment_difference_1

56_flink_deployment_difference_2

57_flink_deployment_difference_3

58_flink_deployment_difference_4

59_flink_deployment_difference_5

60_flink_deployment_difference_6

如何在Apache StreamPark™中使用

Session 模式

  1. 配置 Flink Cluster

61_flink_session_cluster_usage_1

  1. 创建作业时在 Execution Mode选择对应资源管理器的model 和 已经建立好的Flink Cluster

62_flink_session_cluster_usage_2

Application 模式

63_flink_application_model_usage_1

64_flink_application_model_usage_2

65_flink_application_model_usage_3

66_flink_application_model_usage_4

设置作业参数

官网:https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/deployment/config/

原生提交命令(含参数)

  1. flink run-application -t yarn-application \
  2. -Dyarn.provided.lib.dirs="hdfs://myhdfs/my-remote-flink-dist-dir" \
  3. hdfs://myhdfs/jars/my-application.jar

如何在Apache StreamPark™中使用

创建 或 修改 作业时,在“Dynamic Properties”里面按指定格式添加即可

67_dynamic_params_usage

告警策略

待完善

参考:https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/ops/state/task_failure_recovery/

68_native_flink_restart_strategy

如何在Apache StreamPark™中使用

待完善】一般在作业失败或出现异常时,会触发告警

  1. 配置告警通知

69_streampark_alert_settings_1

70_streampark_alert_settings_2

  1. 创建 或 修改 作业时,在”Fault Alert Template”、“CheckPoint Failure Options”里面配置即可

71_streampark_alert_usage

cp/sp

待完善

cp: https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/dev/datastream/fault-tolerance/checkpointing/ sp: https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/ops/state/savepoints/

72_native_flink_save_checkpoint_gramma

如何在Apache StreamPark™中配置savepoint

当停止作业时,可以让用户设置savepoint

73_streampark_save_checkpoint

74_streampark_set_checkpoint_location

75_streampark_save_checkpoint_log

查看savepoint

76_show_checkpoint_file_name

77_show_checkpoint_file_name_2

如何在Apache StreamPark™中由指定savepoint恢复作业

启动作业时,会让选择

78_usage_checkpoint_in_streampark

作业状态

待完善

参考:https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/internals/job_scheduling/#jobmanager-%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84

79_native_flink_job_status

Apache StreamPark™中的作业状态

待完善

作业详情

通过 “Apache Flink Dashboard”查看

80_native_flink_job_details_page

Apache StreamPark™中作业详情

81_streampark_flink_job_details_page

同时在k8s模式下的作业,StreamPark还支持启动日志实时展示,如下

82_streampark_flink_job_starting_log_info

如何与第三方系统集成

原生flink提供了 rest api 参考:https://nightlies.apache.org/flink/flink-docs-release-1.14/zh/docs/ops/rest_api/

Apache StreamPark™如何与第三方系统集成

也提供了Restful Api,支持与其他系统对接, 比如:开启作业 启动|停止 restapi 接口

83_streampark_restful_api_1 84_streampark_restful_api_2