第1章概述
1.1编写目的
暂无
1.2业务背景
暂无
第2章组件介绍
2.1组件介绍与架构说明
Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink设计为在所有常见的集群环境中运行,以内存速度和任何规模执行计算。
Apache Flink是一个分布式系统,需要计算资源才能执行应用程序。Flink与所有常见的集群资源管理器(如Hadoop YARN,Apache Mesos和Kubernetes)集成,但也可以设置为作为独立集群运行。
Flink流处理特性
支持高吞吐、低延迟、高性能的流处理
支持带有事件时间的窗口(Window)操作
支持有状态计算的Exactly-once语义
支持高度灵活的窗口(Window)操作,支持基于time、count、session,以及data-driven的窗口操作
支持具有Backpressure功能的持续流模型
支持基于轻量级分布式快照(Snapshot)实现的容错
一个运行时同时支持Batch on Streaming处理和Streaming处理
Flink在JVM内部实现了自己的内存管理
支持迭代计算
支持程序自动优化:避免特定情况下Shuffle、排序等昂贵操作,中间结果有必要进行缓存
2.2逻辑部署拓扑
Flink的部署一般有四种模式,分别是Standalone模式、Yarn Session-cluster模式、Yarn Per-Job-Cluster模式和Kubernetes 部署。
Standalone模式
让Flink不依赖Hadoop与K8s等计算平台,独立运行,此模式主要的问题是不能复用已有的大数据资源,会造成比较大的资源浪费。
Yarn Session-cluster模式:
Session-Cluster 模式需要先启动集群,然后再提交作业,接着会向 yarn 申请一块空间后,资源永远保持不变。如果资源满了,下一个作业就无法提交,只能等到 yarn 中的其中一个作业执行完成后,释放了资源,下个作业才会正常提交。所有作业共享 Dispatcher 和 ResourceManager;共享资源;适合规模小执行时间短的作业。此模式的主要问题是如果有一个有问题的Flink作业很可能会将找那个Yarn Cluster拖垮导致相关的其他作业也失败。
Yarn Per-Job-Cluster模式:
一个 Job 会对应一个集群,每提交一个作业会根据自身的情况,都会单独向 yarn 申请资源,直到作业执行完成,一个作业的失败与否并不会影响下一个作业的正常提交和运行。独享 Dispatcher 和 ResourceManager,按需接受资源申请;适合规模大长时间运行的作业。每次提交都会创建一个新的flink集群,任务之间互相独立,互不影响,方便管 理。任务执行完成之后创建的集群也会消失。本项目采用此种方法运行Flink程序。
Kubernetes 部署:
容器化部署时目前业界很流行的一项技术,基于 Docker 镜像运行能够让用户更 加方便地对应用进行管理和运维。容器管理工具中最为流行的就是 Kubernetes (k8s),而 Flink 也在最近的版本中支持了 k8s 部署模式。此种模式应该是Flink的最佳部署模式,但是由于目前尚未部署K8s环境,此种方法无法实施。
2.3物理部署拓扑
基于node1进行flink部署,之后基于Yarn Per-Job-Cluster模式利用Yarn的资源管理能力向yarn所管理的几点动态分发flink程序并运行。
2.4依赖环境
硬件:Phytium ARM CPU,银河麒麟v10 内核版本4.19.90-17 arm64 桌面版
JDK依赖:JDK 1.8
组件依赖:Hadoop
2.5界面效果
2.5.1Flink启动
2.5.2Flink日志
第3章部署步骤
Flink只需要在node1上安装
3.1部署配置
3.1.1安装包上传
将安装包上传至/opt/abd_env_soft
/opt/abd_env_soft/flink-1.14.2-bin-scala_2.11.tgz
3.1.2解压缩并重命名安装目录文件夹
gzip -dv flink-1.14.2-bin-scala_2.11.tgz
tar xvf flink-1.14.2-bin-scala_2.11.tar
mv flink-1.14.2 flink
3.1.3建立程序、日志文件夹与复制样例程序
在node1节点建立如下文件夹,分别用于存储程序与门户调用日志
mkdir /opt/flink_program/
mkdir /opt/flink_log/
cp /opt/abd_env_soft/flink/examples/streaming/SocketWindowWordCount.jar /opt/flink_program/SocketWindowWordCount.jar
3.1.4环境变量配置
vi ~/.bashrc
export JAVA_HOME=/opt/abd_env_soft/jdk
export HADOOP_HOME=/opt/abd_env_soft/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
3.1.5建立常用命令软连接
为了方便程序运行,需要对常用命令建立软连接
ln -s /opt/abd_env_soft/hadoop/bin/yarn /usr/bin/yarn
ln -s /opt/abd_env_soft/flink/bin/flink /usr/bin/flink
ln -s /opt/abd_env_soft/hadoop/bin/hadoop /usr/bin/hadoop
3.1.6检查hadoop classpath执行结果
直接在命令行输入如下命令
hadoop classpath
3.2程序启动
3.2.1命令行Yarn(Per-Job-Cluster)启动Flink
启动一个临时监听端口
nc -l 9010
启动Flink程序
export HADOOP_CLASSPATH=hadoop classpath
flink run -m yarn-cluster /opt/abd_env_soft/flink/examples/streaming/SocketWindowWordCount.jar --hostname 192.168.11.110 --port 9010
3.2.2验证Flink
通过yarn查看其执行结果,访问yarn管理控制台
http://192.168.11.115:8088
注意如flink控制台无法显示请将修改生成URL的域名,正式环境需要修改host文件
第4章常见操作
4.1命令行Yarn(Per-Job-Cluster)模式启动Flink
export HADOOP_CLASSPATH=hadoop classpath
flink run -m yarn-cluster /opt/abd_env_soft/flink/examples/streaming/SocketWindowWordCount.jar --hostname 192.168.11.110 --port 9010
4.2命令行Yarn(Per-Job-Cluster)模式关闭Flink
yarn application -kill 【yarn job id】
4.5Yarn作业任务检查
通过yarn查看其执行结果,访问yarn管理控制台
http://192.168.11.115:8088
4.6日志查看命令
Flink运行的日志需要通过Yarn控制台来查看
http://192.168.11.115:8088
4.7健康检查方法
Flink的验证必须使其运行起来,可以使用3.2章节的SocketWindowWordCount.jar进行验证与检查