Streampark使用体验与建议

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Streampark使用体验与建议

01 引言

本文为Streampark的阅读笔记,旨在快速了解该项目的功能、用法等。

Streapark是 流处理极速开发框架,支持流批一体 & 湖仓一体的云原生平台,一站式流处理计算平台。

相关资料如下:

02 功能界面

安装教程可以参考:

如果是docker下安装,可以参考博主之前写的博客:

2.1 系统管理页面

系统管理页面似乎和我们普通的管理系统没什么区别,,主要就是做隔离和权限控制。这里不再细讲,直接贴图:

2.2 设置中心

2.2.1 界面

设置中心主要分为了如下几类:

分类 截图
系统设置
告警设置
flink版本
flink集群
扩展链接
yarn队列

2.2.2 功能描述

功能描述:

功能 子功能 描述
系统设置 maven配置 系统内置了maven,通过上传settings.xml到指定目录,便可以读取该文件来下载项目的依赖
docker环境配置 flink on k8s时使用,需要配置目标k8s集群所使用的 Docker 容器服务的连接信息,主要用于做镜像的pull和push
邮箱配置 主要配置发送人的邮箱账号密码、告警邮箱的host/port等,因为推送告警消息需要指定具体的发送人和使用的邮件服务器
k8s Ingress配置 配置ingress域名地址
告警设置 配置告警组,以及接受告警的对象,支持电子邮箱、钉钉、微信、飞书
flink版本 指的就是flink sdk解压后的路径,需要配置其路径
flink集群 最终都是部署flink集群到某个机器、yarn或k8s,都会有一个JobManager的url
独立集群 配置flink版本、JobManager URL即可,容器安装时已经自动也安装好了
yarn session集群 这里应该只能固定一个,写死的yarn集群。需要配置flink版本、yarn队列、还有其它的flink配置、需要export hadoop_home
k8s session集群 需要指定kube文件,使程序有权限部署指定镜像的flink session至k8s。需要配置flink版本、flink基础镜像标签、flink配置等
扩展链接 主要就是配置外链地址,点击作业详情,可以通过传入jobid来注入进预置的地址,然后就能跳转到指定的外链,如跳转到grafana页面查看flink的指标详情等
yarn队列 主要就是配置当前配置hadoop集群,能使用的队列名

2.3 Streampark(核心)

Streampark模块是最核心的部分,前面的配置都为它做基础,我们来看看其界面。

2.3.1 界面

分类 截图
项目管理
作业管理
变量管理

2.3.2 功能描述

功能 子功能 描述
项目管理 可以理解为一个小jenkis吧,可以通过指定仓库地址、账号密码以及指定分支来构建相关的项目,打包出来的jar直接就可以在作业管理使用(备注:不知道对项目是否有要求,未确认)
作业管理 Custom Code 就是从项目管理编译打包后的文件夹里面获取打包后的jar,然后通过指定程序的参数、还有配置相关的flink参数,提交到前面创建的flink集群(或Application模式),可以理解为jar模式
FlinkSQL flink sql就很容易理解了,就是写flink sql来提交作业,应该会有一个特定的主程序去执行的(备注:还没看代码),它还有一个特点,就可以通过写maven的依赖或上传jar包来对该作业添加依赖,只是不明白为什么Custom Code不给它添加依赖的jar。

03 环境

使用docker安装,一键式部署,很容易忽略了其环境,我们看看项目里面的 DockerFile 的内容,便知道整个镜像用到了什么环境了,里面已添加注释。

# Step1. 把当前项目生成的安装包复制到基础镜像的当前目录
FROM alpine:3.16 as deps-stage
COPY . /
WORKDIR /
RUN tar zxvf dist/apache-streampark*-*-bin.tar.gz \
&& mv apache-streampark*-*-bin streampark
FROM docker:dind
WORKDIR /streampark
COPY --from=deps-stage /streampark /streampark
ENV NODE_VERSION=16.1.0
ENV NPM_VERSION=7.11.2
# Step2. 镜像安装jdk、maven、以及插件(wget、vim、bash、curl)
RUN apk add openjdk8 \
    && apk add maven \
    && apk add wget \
    && apk add vim \
    && apk add bash \
    && apk add curl
# Step3. Export环境变量(JAVA_HOME、MAVEN_HOME)
ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
ENV MAVEN_HOME=/usr/share/java/maven-3
ENV PATH $JAVA_HOME/bin:$PATH
ENV PATH $MAVEN_HOME/bin:$PATH
# Step4. 下载前端环境(nodejs)、kubectl命令工具并把它们复制到bin目录,直接就能使用
RUN wget "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz" \
    && tar zxvf "node-v$NODE_VERSION-linux-x64.tar.gz" -C /usr/local --strip-components=1 \
    && rm "node-v$NODE_VERSION-linux-x64.tar.gz" \
    && ln -s /usr/local/bin/node /usr/local/bin/nodejs \
    && curl -LO https://dl.k8s.io/release/v1.23.0/bin/linux/amd64/kubectl \
    && install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# Step5. 创建kube目录,主要用于存放认证config
RUN mkdir -p ~/.kube
EXPOSE 10000

也就是streampark的镜像,里面已经包含了jdk、nodejs、maven等环境了,就是官网的截图:

04 评价与建议

总体来说,Streampark功能是挺全的,也使用了不少的技术,它拆分之后的自我描述如下:

  • 让流处理更简单, 使用StreamPark开发;
  • 可以极大降低学习成本和开发门槛, 让开发者只用关心最核心的业务;
  • StreamPark 规范了项目的配置,鼓励函数式编程,定义了最佳的编程方式;
  • 提供了一系列开箱即用的Connectors;
  • 标准化了配置、开发、测试、部署、监控、运维的整个过程;
  • 提供了scalajava两套api
  • 其最终目的是打造一个一站式大数据平台,流批一体,湖仓一体的解决方案。

个人使用之后,如果能在以下方面能做得更好,就很nice了

  • hadoop集群可支持多个,不要写死,指的是界面可以上传,做集群测试,但是可能要安装多一个oss服务;
  • flink版本也支持多个,指的是界面可以上传sdk,当然也可以指定链接下载解压;
  • 监控这块不是很明确,目前是通过外链的形式,如果能再集成多一个Prometheus这套就更完美了,因为这已经是监控标准了;
  • 作业管理,Custom Code模式似乎不支持依赖jar的添加,一般打的包都是源码的,如果是shade打包方式,类容易出现无法加载的问题;
  • jar没有做统一管理(如:connector、format、catalog等),即使flnk sql模式依赖了jar,写代码时也没有自动补全;
  • 提交作业到yarn,kerberos认证不知道怎么处理,需要配置哪些参数(如:krb5.conf、keytab、principal等要放到哪);
  • k8s部署方式,多实例处理;
  • 。。。。。。。

05 文末

以上是博主对Streampark使用的初体验,难免会有一些纰漏错误之处,欢迎大家的评论与留言,谢谢大家的阅读,本文完!

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
存储 缓存 流计算
Flink / Scala- BroadCast 广播流数据先到再处理 Source 数据
Flink 支持增加 DataStream KeyBy 之后 conncet BroadCastStream 形成 BroadConnectedStream,广播流内数据一般为不间断更新的上下文信息,这里介绍如果等待广播流初始化完毕再处理 Source 数据
1457 0
Flink / Scala- BroadCast 广播流数据先到再处理 Source 数据
|
7月前
|
分布式计算 Java Apache
快速体验Spark Connect
在Apache Spark 3.4中,引入了一个解耦的客户端-服务器架构的新模块Spark Connect,允许使用DataFrame API和未解析的逻辑计划作为协议远程连接到Spark集群。客户端
|
7月前
|
SQL Apache 流计算
Apache StreamPark系列教程第一篇——安装和体验
Apache StreamPark系列教程第一篇——安装和体验
693 0
|
分布式计算 Java Hadoop
apache-streamparkpr和代码规范指南
apache-streamparkpr和代码规范指南
101 0
|
资源调度 Kubernetes Java
Streampark使用体验与建议
Streampark使用体验与建议
2533 0
|
分布式计算 Apache Spark
Apache Doris Spark Load快速体验之Spark部署(1)2
Apache Doris Spark Load快速体验之Spark部署(1)2
166 0
|
SQL 机器学习/深度学习 分布式计算
Apache Doris Spark Load快速体验之Spark部署(1)1
Apache Doris Spark Load快速体验之Spark部署(1)1
131 0
|
存储 分布式计算 网络协议
Sparkstreaming 案例 — socket 回顾 | 学习笔记
快速学习 Sparkstreaming 案例 — socket 回顾
Sparkstreaming 案例 — socket 回顾 | 学习笔记
|
SQL 分布式计算 NoSQL
Spark Connector Reader 原理与实践
本文主要讲述如何利用 Spark Connector 进行 Nebula Graph 数据的读取。
764 0
|
分布式计算 Spark
8月14日Spark社区直播【Spark Shuffle 优化】
本次直播介绍EMR Spark 在shuffle方面的相关优化工作,主要包含shuffle 优化的背景以及shuffle 优化的设计方案,最后会介绍Spark shuffle 在 TPC-DS测试中的性能数据
8月14日Spark社区直播【Spark Shuffle 优化】