flink-on-k8s-operator、Alink集成部署安装

[[Google官方参考文档]]: (Google_README.md)

1. 获取源码

## 下载源码
git clone https://github.com/leihongyang/flink-on-k8s-operator.git
git checkout pinnet

2. 准备镜像

从海外构建的镜像有:

FROM gcr.io/flink-operator/flink-operator:latest
## 和
FROM gcr.io/flink-operator/deployer:webhook-cert

pull到本地后,进行相应更名并上传harbor,参考spark-operator部署中的镜像获取方式

## flink-operator,管理flink任务生命周期
docker tag gcr.io/flink-operator/flink-operator:latest xxxxx:8000/spark-operator/flink-operator:latest## 一键部署时需要,暂不了解用途 TODO
docker tag gcr.io/flink-operator/deployer:webhook-cert xxxxx:8000/spark-operator/deployer:webhook-cert

另外额外需要flink和hdfs镜像,可直接docker pull

## 这是flink基础镜像,后面集成alink需要基于这个镜像进行二次加工
docker pull flink:1.12.2-scala_2.12-java8## 这是在flink集群中和hdfs进行文件获取所用
docker pull gchq/hdfs:3.2 && docker tag gchq/hdfs:3.2 xxxxx:8000/spark-operator/hdfs:3.2

3. 安装及Demo

1) 方式1

cd flink-on-k8s-operatorcd helm-chart/flink-operator## 执行更新脚本
./update_template.sh## 修改templates/flink-operator.yaml中的镜像为本地镜像
image: xxxxx/kubesphere/kube-rbac-proxy:v0.4.1## 设置本地镜像及namespace
export IMG=xxxxx:8000/spark-operator/flink-operator:latest
export NS=flink-operator-system## 创建crd
kubectl apply -k ../../config/crd## 将chart中crd文件移除,因为有bug,无法自动安装crd,应该是版本问题,google官方给的文档是基于k8s-1.17的版本
mv templates/flink-cluster-crd.yaml templates/flink-cluster-crd.yaml.bak## 尝试安装flink-operator-chart
helm install flink-operator . --set operatorImage.name=xxxxx:8000/spark-operator/flink-operator:latest,flinkOperatorNamespace.name=flink-operator-system,flinkOperatorNamespace.create=false
  1. 方式2
## 部署operator
## 修改Makefile中 IMG 参数,其他参数默认即可
cp kustomize /usr/bin/
make deploy## flink集群有两种运行模式,一种session集群,一种jobcluster。
## session模式:
##      预先创建集群,多个任务共享集群资源,资源隔离性差,但是提交任务快,适合测试任务以及对隔离性要求不高的任务
## jobcluster模式:
##      每次提交任务都会新建一个集群,资源隔离性最高,但是创建集群耗时较长,不适合小任务执行## 部署session模式
## 修改config/samples/flinkoperator_v1beta1_flinksessioncluster.yaml中镜像为本地镜像
kubectl apply -f config/samples/flinkoperator_v1beta1_flinksessioncluster.yaml
## 验证session模式
kubectl get podNAME                                           READY   STATUS      RESTARTS   AGE
pod/flinksessioncluster-sample-jobmanager-0    1/1     Running     0          35m
pod/flinksessioncluster-sample-taskmanager-0   2/2     Running     0          35m## 运行示例
cat <<EOF | kubectl apply --filename -
apiVersion: batch/v1
kind: Job
metadata:name: my-job-submitter
spec:template:spec:containers:- name: wordcountimage: flink:1.9.3args:- /opt/flink/bin/flink- run- -m- flinksessioncluster-sample-jobmanager:8081- /opt/flink/examples/batch/WordCount.jar- --input- /opt/flink/README.txtrestartPolicy: Never
EOF## jobcluster模式
## 该模式在operator部署完成后,让k8s可以直接理解flink语言,无需像session一样部署集群,直接编写任务yaml即可
## 官方已经提供了demo,只需要修改image参数即可,修改为本地镜像
kubectl apply -f config/samples/flinkoperator_v1beta1_flinkjobcluster.yaml## tips:
## 由于google官方的operator对flink的稳定支持尚处于flink<=1.9.3版本,对>=1.10的版本支持不太成熟,按上述步骤进行运行的时有可能发生## OOM错误,在yaml中添加如下参数(带注释部分)即可:
flinkProperties:taskmanager.numberOfTaskSlots: "1"jobmanager.heap.size: ""                # set empty value (only for Flink version 1.11 or above)jobmanager.memory.process.size: 600mb   # job manager memory limit  (only for Flink version 1.11 or above)taskmanager.heap.size: ""               # set empty valuetaskmanager.memory.process.size: 1gb    # task manager memory limit

4. Alink集成

Alink集成其实就是将alink相关的jar放入flink基础镜像中,但是alibaba对新版本hadoop及hive支持不及时,需要在其源码上手动修改相关依赖版本, vim pom.xml

-        <alink.scala.major.version>2.11</alink.scala.major.version>
-        <scala.version>2.11.11</scala.version>
+        <alink.scala.major.version>2.12</alink.scala.major.version>
+        <scala.version>2.12.2</scala.version>
...
-        <breeze.version>0.11.2</breeze.version>
+        <breeze.version>0.13</breeze.version>
## 打包依赖
cd Alink && mvn -Dmaven.test.skip=true clean package shade:shade## 下载额外依赖
## 临时容器
docker run -itd --name flink flink:1.12.2-scala_2.12-java8 bash
docker exec -it flink bash
## 在容器中下载依赖文件
apt update && apt install -y python3.7 python3-pip --fix-missing && \ln -s /usr/bin/python3.7 /usr/bin/python && ln -s /usr/bin/pip3 /usr/bin/pip && \pip install pyalink && download_pyalink_dep_jars -d
## 退出容器并将依赖文件拷贝到外面
mkdir alink && cd alink
docker cp flink:/usr/local/lib/python3.7/dist-packages/pyalink/lib lib## 删除s3和oss相关依赖,会导致bug
rm -rf lib/plugins/flink-1.12/o*
rm -rf lib/plugins/flink-1.12/s3*## 删除alink_core_flink依赖
rm -rf lib/alink_core_flink-1.12_2.11-1.3.2.jar
## 复制之前Alink编译的内核依赖到此lib目录
cp ../core/target/alink_core_flink-1.12_2.12-1.3-SNAPSHOT.jar lib/## 下载监控相关依赖
wget https://repo1.maven.org/maven2/org/apache/flink/flink-metrics-prometheus_2.12/1.12.2/flink-metrics-prometheus_2.12-1.12.2.jar
mv flink-metrics-prometheus_2.12-1.12.2.jar lib/## 编写Dockerfile文件, 添加以下内容
================
FROM flink:1.12.2-scala_2.12-java8ADD lib/* lib/
RUN echo "classloader.resolve-order: parent-first" >> conf/flink-conf.yaml
================## 编译镜像并上传
docker build -t xxxxx:8000/spark-operator/alink:1.12.2 .
docker push xxxxx:8000/spark-operator/alink:1.12.2

5. 运行示例

## 编写算法任务yaml文件,内容如下
apiVersion: flinkoperator.k8s.io/v1beta1
kind: FlinkCluster
metadata:name: alink12
spec:image:name: xxxxx:8000/spark-operator/alink:1.12.2jobManager:ports:ui: 18081resources:limits:memory: "1024Mi"cpu: "200m"taskManager:replicas: 2resources:limits:memory: "1024Mi"cpu: "200m"job:jarFile: /cache/this.jarclassName: com.alibaba.alink.ALSExample
#    args: ["--input", "./README.txt"]parallelism: 2volumes:- name: cache-volumeemptyDir: {}volumeMounts:- mountPath: /cachename: cache-volumeinitContainers:- name: hdfs-clientimage: xxxxx:8000/spark-operator/hdfs:3.2command: ["hdfs"]args:- "dfs"- "-copyToLocal"- "hdfs://10.10.12.141:9000/tmp/demo2/original-alink_examples_flink-1.12_2.12-1.3-SNAPSHOT.jar"- "/cache/this.jar"flinkProperties:taskmanager.numberOfTaskSlots: "1"jobmanager.heap.size: ""                # set empty value (only for Flink version 1.11 or above)jobmanager.memory.process.size: 600mb   # job manager memory limit  (only for Flink version 1.11 or above)taskmanager.heap.size: ""               # set empty valuetaskmanager.memory.process.size: 1gb    # task manager memory limit
## 运行上述文件
kubectl apply -f demo.yaml

验证结果:

6. 带有监控指标数据的运行示例

apiVersion: flinkoperator.k8s.io/v1beta1
kind: FlinkCluster
metadata:name: alink12
spec:image:name: xxxxx:8000/spark-operator/alink:1.12.2pullPolicy: Always# Activate metric exporterenvVars:- name: HADOOP_CLASSPATHvalue: /opt/flink/lib/flink-metrics-prometheus_2.12-1.12.2.jarjobManager:extraPorts:- name: promcontainerPort: 9249ports:ui: 8081resources:limits:memory: "1024Mi"cpu: "200m"taskManager:extraPorts:- name: promcontainerPort: 9249replicas: 2resources:limits:memory: "1024Mi"cpu: "200m"job:jarFile: /cache/this.jarclassName: com.alibaba.alink.ALSExample
#    args: ["--input", "./README.txt"]parallelism: 2volumes:- name: cache-volumeemptyDir: {}volumeMounts:- mountPath: /cachename: cache-volumeinitContainers:- name: hdfs-clientimage: xxxxx:8000/spark-operator/hdfs:3.2command: ["hdfs"]args:- "dfs"- "-copyToLocal"- "hdfs://10.10.12.141:9000/tmp/demo2/original-alink_examples_flink-1.12_2.12-1.3-SNAPSHOT.jar"- "/cache/this.jar"flinkProperties:taskmanager.numberOfTaskSlots: "1"jobmanager.heap.size: ""                # set empty value (only for Flink version 1.11 or above)jobmanager.memory.process.size: 600mb   # job manager memory limit  (only for Flink version 1.11 or above)taskmanager.heap.size: ""               # set empty valuetaskmanager.memory.process.size: 1gb    # task manager memory limitmetrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter

mory.process.size: 600mb # job manager memory limit (only for Flink version 1.11 or above)
taskmanager.heap.size: “” # set empty value
taskmanager.memory.process.size: 1gb # task manager memory limit
metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReporter


flink-on-k8s-operator部署安装及alink集成相关推荐

  1. Spark on k8s Operator 部署安装

    Spark on k8s Operator 部署安装 1. 背景 受限于公司内网环境,无法构建梯子及部分网络策略,不能使用网络资源直接部署,需要手动编译安装 2. 环境准备 centos 7 Kube ...

  2. K8S—二进制部署安装(包含UI界面设置)

    安装步骤 一.准备工作 二.部署单master K8S 2.1 部署etcd集群 master 节点 node 节点(1/2) 查看集群状态 2.2 部署docker引擎 node 节点(1/2) 2 ...

  3. Flink 怎么部署安装?

    前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技 ...

  4. 【Flink】flink on k8s 部署方案

    1. HDFS部署 (k8s) hdfs的作用是用户保存flink的检查点与保持点 但是大数据集群目前还是建议单独使用CDH或者HDP部署 目前文中的这种hdfs on k8s方式做高可用不太方便 1 ...

  5. flink on k8s部署方案实践--详细步骤

    背景 Flink-operator极大的方便了我们管理 Flink 集群及其作业,我们只需要自定义yaml文件就可以做到. Flink 官方还未给出 flink-operator 方案,不过 Goog ...

  6. 使用Spring Boot Operator部署SpringBoot到K8S

    点击关注公众号,实用技术文章及时了解 来源:qingmu.io/2020/04/08/ Spring-Boot-Operator-User-Guide 前言 在Kubernetes中部署spring ...

  7. flink on k8s部署方案调研

    背景 flink是目前最常用的大数据流计算处理引擎,一共有local,standalone,yarn,kubernetes四种安装部署机构方案.通常使用yarn进行管理,随着k8s云计算体系越来越成熟 ...

  8. 1.24版本k8s集群安装部署rook-ceph存储集群

    一.初始花基本环境 1.主机环境信息 系统 主机名 主机IP地址 配置说明 AlmaLinux release 8.6 (Sky Tiger) master01 192.168.3.31 k8s管理节 ...

  9. centos7 如何安装部署k8s_五步教你如何使用k8s快速部署ES

    前言 今天小编打算用五步教大家如何使用k8s快速部署ES,有兴趣的小伙伴可以了解一下~ 由于是使用本地存储,所以需要先创建pv 1.创建存储类 local-elasticsearch.yaml kin ...

最新文章

  1. 如何写出一个好的单例模式
  2. Go 语言 bytes.buffer write 相关操作
  3. js截取超链接后参数
  4. 7种CSS圆角框解决方案
  5. zcmu1157: 新年彩灯Ⅱ(二维树状数组)
  6. Java黑皮书课后题第8章:*8.2(求矩阵对角线元素的和)使用下面的方法头编写一个方法,求n*n的double类型矩阵中主对角线上所有数字的和。编写一个程序,读取一个4*4的矩阵,显示主对角线和
  7. Golang 常见设计模式之装饰模式
  8. 10个Github热门Python库,非常实用!
  9. 解决 Angular 官网下载的 library Schematics build 出错的办法
  10. centos 7安装_OrthoMCL软件安装
  11. perl 中部分正则表达式中匹配非空字符和正常使用字符
  12. 威斯康星大学计算机案例,美国威斯康星大学麦迪逊分校CS硕士录取
  13. Emacs使用Tramp远程编辑服务器上的文件
  14. idea创建jsp项目并运行
  15. 吉林大学计算机游戏程序设计,吉林大学在2018年大学生程序设计竞赛中夺得佳绩...
  16. Ubuntu配置Wine教程
  17. ext布局问题之tab panel内的gridpanel内容数据变多,出现滚动条
  18. 7 tips for using UIWebView
  19. 计算机开机报一长两短,电脑开机发出一长两短报警声启动不了怎么办
  20. 透透彻彻IoC(你没有理由不懂!)

热门文章

  1. openwrt编译环境搭建
  2. 02-JS基础-浏览器API
  3. 【ODX介绍】-4.26.3-OBD诊断$09服务Request vehicle information(CVN)在ODX-D诊断描述文件中如何描述
  4. 软件测试学习 之 Python 模拟倒计时、百分比进度
  5. linux top交叉编译_简单搭建MIPS交叉编译环境——新手推荐 | 学步园
  6. 【数学建模】灰色预测模型(预测)
  7. JVM之内存区域与内存溢出异常
  8. RFID原理与应用第一章
  9. P02014252 孙浩宸 信息论课程问答题作业
  10. 《百面机器学习》读书笔记(十一)-强化学习