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
; - 标准化了配置、开发、测试、部署、监控、运维的整个过程;
- 提供了
scala
和java
两套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
使用的初体验,难免会有一些纰漏错误之处,欢迎大家的评论与留言,谢谢大家的阅读,本文完!