flash asp网站,国际贸易网络营销,如何提升wordpress的打开速度,申请域名的流程目录
一、Flink简介
2.1 Flink 架构
2.2 Flink 应用程序 运行模式
二、Flink 集群 部署
2.1 本地集群模式
2.1.1 安装JDK编辑
2.1.2 下载、解压 Flink
2.1.3 启动集群
2.1.4 停止集群
2.2 Standalone 模式
2.2.0 集群规划
2.2.1 安装JDK
2.2.2 设置免密登录
2…目录
一、Flink简介
2.1 Flink 架构
2.2 Flink 应用程序 运行模式
二、Flink 集群 部署
2.1 本地集群模式
2.1.1 安装JDK编辑
2.1.2 下载、解压 Flink
2.1.3 启动集群
2.1.4 停止集群
2.2 Standalone 模式
2.2.0 集群规划
2.2.1 安装JDK
2.2.2 设置免密登录
2.2.3 修改配置文件
2.2.4 启动集群
2.2.5 关闭集群
2.2.6 Standalone 高可用服务
2.3 YARN 模式
2.4 K8S 模式
三、Flink 应用 开发
3.1 编写Flink 应用程序
3.1.1 maven引入jar
3.1.2 编写代码
3.1.3 打包程序
3.2 运行 Flink 应用程序
3.2.1 命令行运行
3.2.2 WEB管理端运行
3.2.3 查看完成的任务 一、Flink简介 Apache Flink是一个框架和分布式处理引擎用于在无界和有界数据流上进行有状态计算。Flink 提供了数据分发以及并行化计算的能力并且可以部署在各种集群环境中如Hadoop YARN、Kubernetes或独立集群。
2.1 Flink 架构 Flink 运行时由两种类型的进程组成一个 JobManager 和一个或者多个 TaskManager。 JobManager 具有许多与协调 Flink 应用程序的分布式执行有关的职责它决定何时调度下一个 task或一组 task、对完成的 task 或执行失败做出反应、协调 checkpoint、并且协调从失败中恢复等等。这个进程由三个不同的组件组成
ResourceManager负责 Flink 集群中的资源提供、回收、分配 - 它管理 task slots这是 Flink 集群中资源调度的单位请参考TaskManagers。Flink 为不同的环境和资源提供者例如 YARN、Kubernetes 和 standalone 部署实现了对应的 ResourceManager。在 standalone 设置中ResourceManager 只能分配可用 TaskManager 的 slots而不能自行启动新的 TaskManager。Dispatcher提供了一个 REST 接口用来提交 Flink 应用程序执行并为每个提交的作业启动一个新的 JobMaster。它还运行 Flink WebUI 用来提供作业执行信息。JobMaster负责管理单个JobGraph的执行。Flink 集群中可以同时运行多个作业每个作业都有自己的 JobMaster。 始终至少有一个 JobManager。高可用HA设置中可能有多个 JobManager其中一个始终是 leader其他的则是 standby。 TaskManager也称为 worker执行作业流的 task并且缓存和交换数据流。 必须始终至少有一个 TaskManager。在 TaskManager 中资源调度的最小单位是 task slot。TaskManager 中 task slot 的数量表示并发处理 task 的数量。一个 task slot 中可以执行多个算子。
2.2 Flink 应用程序 运行模式 当Flink应用程序编写好后可以通过会话模式、单作业模式和应用模式等三种方式运行
会话模式Session Mode 会话模式需要先启动一个集群保持一个会话在这个会话中通过客户端提交作业。集群启动时所有资源就都已经确定所以所有提交的作业会竞争集群中的资源。
单作业模式Per-Job Mode 会话模式因为资源共享会导致很多问题所以为了更好地隔离资源可以为每个提交的作业启动一个集群作业完成后集群就会关闭释放资源这就是所谓的单作业(Per-Job)模式。单作业模式运行稳定是实际应用的首选模式。 需要注意的是Flink本身无法直接这样运行所以单作业模式一般需要借助一些资源管理框架来启动集群比如YARN、Kubernetes(K8s)。
应用模式Application Mode 会话模式和单作业模式应用代码都是在客户端上执行然后由客户端提交给JobManager的。但是这种方式客户端需要占用大量网络带宽去下载依赖和把二进制数据发送给JobManager;加上很多情况下我们提交作业用的是同一个客户端就会加重客户端所在节点的资源消耗。 所以解决办法就是我们不要客户端了直接把应用提交到JobManger上运行。而这也就代表着我们需要为每一个提交的应用单独启动一个JobManager也就是创建一个集群。这个JobManager只为执行这一个应用而存在执行结束之后JobManager也就关闭了这就是所谓的应用模式。 应用程序各种运行模式需要的Flink集群不一样本地集群和Standalone集群适合会话模式YARN模式适合单作业模式和应用模式;K8S模式不熟悉暂时不介绍。
应用程序运行模式会话模式 Session Mode单作业模式 Per-Job Mode应用模式 Application Mode集群部署模式本地模式√×√Standalone模式√×√YARN模式√√√K8S模式
二、Flink 集群 部署
2.1 本地集群模式
2.1.1 安装JDK
2.1.2 下载、解压 Flink 2.1.3 启动集群
$ ./bin/start-cluster.sh 2.1.4 停止集群
$ ./bin/stop-cluster.sh
2.2 Standalone 模式
2.2.0 集群规划
flink01 192.168.179.151flink02 192.168.179.152flink01 192.168.179.153JobManagerTaskManagerTaskManagerTaskManager
2.2.1 安装JDK 在所有部署Flink的服务器上安装jkd要求jdk17jdk具体安装可参考搭建环境02安装前准备(配置CentOS7) 中的安装jdk部分。
2.2.2 设置免密登录 在所有部署Flink的服务器上设置免密登录具体操作可参考搭建环境02安装前准备(配置CentOS7) 中的设置免密登录部分。
2.2.3 修改配置文件
config.yaml 文件 vi conf/config.yaml jobmanager: bind-host: 0.0.0.0 rpc: address: 192.168.179.151 #修改成本节点IP taskmanager: bind-host: 0.0.0.0 host: 192.168.179.151 #修改成本节点IP rest: address: 192.168.179.151 #修改成本节点IP bind-address: 0.0.0.0 port: 8081 masters文件 vi conf/masters 192.168.179.151:8081 workers文件 vi conf/workers 192.168.179.151 192.168.179.152 192.168.179.153 2.2.4 启动集群 $ ./bin/start-cluster.sh 2.2.5 关闭集群 ./bin/stop-cluster.sh 2.2.6 Standalone 高可用服务 具体可参考官方文档。
2.3 YARN 模式 比较复杂另开一篇专门介绍。
2.4 K8S 模式 不熟悉暂时不做介绍。
三、Flink 应用 开发 Flink 程序看起来像一个转换 DataStream 的常规程序。每个程序由相同的基本部分组成
获取一个执行环境execution environment加载/创建初始数据指定数据相关的转换指定计算结果的存储位置触发程序执行。 3.1 编写Flink 应用程序
3.1.1 maven引入jar dependencygroupIdorg.apache.flink/groupIdartifactIdflink-streaming-java/artifactIdversion1.20.0/version
/dependency 3.1.2 编写代码
package com.yichenkeji.demo.flink;import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;public class Demo {public static void main(String[] args) throws Exception {//1.获取一个执行环境execution environmentStreamExecutionEnvironment env StreamExecutionEnvironment.getExecutionEnvironment();//2.加载/创建初始数据DataStreamSourceInteger source env.fromCollection(Arrays.asList(1,2,3,4,5,6,7,8,9,10));//3.指定数据相关的转换乘以2SingleOutputStreamOperatorInteger map source.map(x - x * 2);//4.指定计算结果的存储位置:直接输出到控制台map.print();//5.触发执行env.execute();}
}3.1.3 打包程序
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.yichenkeji.demo.flink/groupIdartifactIdyichen-demo-flink/artifactIdversion1.0/versionpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncodingflink.version1.20.0/flink.version/propertiesdependenciesdependencygroupIdorg.apache.flink/groupIdartifactIdflink-streaming-java/artifactIdversion${flink.version}/version/dependency/dependenciesbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-shade-plugin/artifactIdversion3.1.1/versionexecutionsexecutionphasepackage/phasegoalsgoalshade/goal/goalsconfigurationartifactSetexcludesexcludecom.google.code.findbugs:jsr305/exclude/excludes/artifactSetfiltersfilter!-- Do not copy the signatures in the META-INF folder.Otherwise, this might cause SecurityExceptions when using the JAR. --artifact*:*/artifactexcludesexcludeMETA-INF/*.SF/excludeexcludeMETA-INF/*.DSA/excludeexcludeMETA-INF/*.RSA/exclude/excludes/filter/filterstransformerstransformer implementationorg.apache.maven.plugins.shade.resource.ManifestResourceTransformer!-- Replace this with the main class of your job --mainClasscom.yichenkeji.demo.flink.Demo/mainClass/transformertransformer implementationorg.apache.maven.plugins.shade.resource.ServicesResourceTransformer//transformers/configuration/execution/executions/plugin/plugins/build
/project
3.2 运行 Flink 应用程序
3.2.1 命令行运行 ]$ ./bin/flink run /data/flink/demo/yichen-demo-flink-1.0.jar 3.2.2 WEB管理端运行 3.2.3 查看完成的任务