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使用的初体验,难免会有一些纰漏错误之处,欢迎大家的评论与留言,谢谢大家的阅读,本文完!

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
4月前
|
SQL Apache 流计算
Apache StreamPark系列教程第一篇——安装和体验
Apache StreamPark系列教程第一篇——安装和体验
202 0
|
4月前
|
分布式计算 Java Apache
快速体验Spark Connect
在Apache Spark 3.4中,引入了一个解耦的客户端-服务器架构的新模块Spark Connect,允许使用DataFrame API和未解析的逻辑计划作为协议远程连接到Spark集群。客户端
|
8月前
|
资源调度 Kubernetes Java
Streampark使用体验与建议
Streampark使用体验与建议
1647 0
|
8月前
|
分布式计算 Apache Spark
Apache Doris Spark Load快速体验之Spark部署(1)2
Apache Doris Spark Load快速体验之Spark部署(1)2
98 0
|
8月前
|
SQL 机器学习/深度学习 分布式计算
Apache Doris Spark Load快速体验之Spark部署(1)1
Apache Doris Spark Load快速体验之Spark部署(1)1
91 0
|
分布式计算 Apache Spark
《# Apache Spark系列技术直播# 第五讲【 Spark RDD编程入门 】》电子版地址
# Apache Spark系列技术直播# 第五讲【 Spark RDD编程入门 】
85 0
《# Apache Spark系列技术直播# 第五讲【 Spark RDD编程入门 】》电子版地址
|
Java API
手把手带你体验Stream流
一般人第一次看Stream流的代码,都会有点看不懂(它的代码看起来好像就不是写Java一样.),希望这篇文章能带大家入个门
129 0
手把手带你体验Stream流
|
分布式计算 Spark
8月14日Spark社区直播【Spark Shuffle 优化】
本次直播介绍EMR Spark 在shuffle方面的相关优化工作,主要包含shuffle 优化的背景以及shuffle 优化的设计方案,最后会介绍Spark shuffle 在 TPC-DS测试中的性能数据
8月14日Spark社区直播【Spark Shuffle 优化】
Spark Streaming的优化之路—从Receiver到Direct模式
Spark Streaming是一种分布式的大数据实时计算框架,他提供了动态的,高吞吐量的流式数据处理。个推开发者服务—消息推送“应景推送”应用了Spark Streaming技术,在应用Spark Streaming做实时处理kafka数据时,采用Direct代替Receiver模式的手段,实现了资源优化和程序稳定性提升。
1457 0
|
分布式计算 API Apache
# Apache spark系列技术直播# 第五讲【 Spark RDD编程入门 】
主讲人:王道远(健身) 阿里巴巴计算平台EMR技术专家 直播时间:2018.12.13(本周四)19:00 - 20:00 内容提要:本次讲座主要涵盖Spark RDD编程入门基础,包括: Spark、RDD简介 RDD API简介 打包与spark-submit 性能分析与调优基础 ppt链接:https://yq.
1512 0