当前位置: 首页 > news >正文

那个网站做玉石最专业如何做网站新手

那个网站做玉石最专业,如何做网站新手,宣传方式有哪些,万载网站建设Flink内核源码 1、掌握Flink应用程序抽象2、掌握Flink核心组件整体架构抽象3、掌握Flink Job三种运行模式4、理解Flink RPC网络通信框架Akka详解5、理解TaskManager为例子#xff0c;分析Flink封装Akka Actor的方法和整个调用流程6、理解Flink高可用服务HighAvailabilityServ…Flink内核源码 1、掌握Flink应用程序抽象2、掌握Flink核心组件整体架构抽象3、掌握Flink Job三种运行模式4、理解Flink RPC网络通信框架Akka详解5、理解TaskManager为例子分析Flink封装Akka Actor的方法和整个调用流程6、理解Flink高可用服务HighAvailabilityServices7、理解Flink选举服务LeaderElectionService和监听LeaderRetrievalService机制8、理解Flink文件/大对象服务BlobService9、理解Flink心跳机制HeartbeatServices 总的来说先了解清楚Flink的一些重要工作和通信机制然后再去剖析一个Flink Job 到底是如何执行的Flink的 Cluster到底是如何管理和分配slot资源的等等就比较容易了。 1、Flink应用程序抽象 Flink 的整体架构设计 概念解释 Dataflow Graph是一个逻辑上的概念表示这个应用程序的执行图在客户端中会生成两张图 StreamGraphJobGraph StreamGraph中有两个非常重要的概念StreamNode(operation算子) StreamEdge(连续两个算子的边)JobGraphfinal JobGraph jobGraph PipelineExecutorUtils.getJobGraph(pipeline, configuration);client 是一个Http方式的Restful Client负责将JobGraph递交到JobMasterJobManager接收到JobGraph后会做一些非常重要的操作启动 jobMasterjobMaster负责该job的执行也就是一个jobMaster对应一个JobGraph在构造JobMaster时候会把JobGraph构造成ExecutionGraph Execution ExecutionVertex(顶点) (里面有一个抽象表示一个Task的一切信息) JobMaster接下来会向ResourceManager (并不是Yarn的ResourceManager而是JobManager组件) 申请资源申请slot资源部署task启动执行当所有的task都部署到taskManager里面以后启动完成了上下游的task都建立了连接最终组成PhysicalGraph (物理执行图) Flink的一个Job最终归根结底还是构建一个高效率的能用于分布式并行执行的DAG执行图。 Flink的执行图可以分为四层StreamGraph JobGraph ExecutionGraph PhysicalGraph (物理执行图) StreamGraph是根据用户通过Stream API 编写的代码生成的最初的图。用来表示程序的拓扑结构。ds.xx1.xx2.xx3.xx4()ds1.join(ds2)JobGraphStreamGraph经过优化后生成了 JobGraph提交给 JobManager的数据结构。主要的优化为将多个符合条件的节点 chain在一起作为一个节点这样可以减少数据在节点之间流动所需要的序列化反序列化传输消耗。ExecutionGraphJobManager根据JobGraph生成ExecutionGraph。ExecutionGraph 是JobGraph的并行化版本是调度层最核心的数据结构。PhysicalGraph (物理执行图)JobManager 根据ExecutionGraph 对Job 进行调度后在各个TaskManager上部署Task后形成的图并不是一个具体的数据结构。 Flink的四层图模型 上面这张图清晰的给出了Flink各个图的工作原理和转换过程。其中最后一个物理执行图并非Flink的数据结构而是程序开始执行后各个Task分布在不同的节点上所形成的物理上的关系表示 从JobGraph的图里可以看到数据从上一个operatorJobVertex流到下一个operatorJobVertex的过程中上游作为生产者提供了IntermediateDataSet而下游作为消费者需要JobEdge。事实上JobEdge是一个通信管道连接了上游生产的dataset和下游的JobVertex节点。在JobGraph转换到ExecutionGraph的过程中主要发生了以下转变 加入了并行度的概念成为真正可调度的图结构生成了与JobVertex对应的ExecutionJobVertexExecutionVertex与IntermediateDataSet 对应的IntermediateResult 和 IntermediateResultPartition等并行将通过这些类实现ExecutionGraph 已经可以用于调度任务我们可以看到Flink根据该图生成了——对应的Task每个Task对应一个ExecutionGraph的Execution。Task用InputGate、InputChannel和ResultPartition对应上面图中的 ExecutionEdge 和 IntermediateResult。 那么设计中为什么要设计这四层执行逻辑呢它的意义是什么 1、StreamGraph 是对用户逻辑的映射 2、JobGraph 在StreamGraph 基础上进行了一些优化比如把一部分操作串成 chain 以提高效率 3、ExecutionGraph 是为了调度存在的加入了并行处理的概念 4、物理执行结构真正执行的是 Task 及其相关结构 总结Flink的四层图结构 1、StreamGraph 就是通过用户编写程序时指定的算子进行逻辑拼接的     简单说就是进行算子拼接 2、JobGraph 其实就是在 StreamGraph 的基础上做了一定的优化然后生成的逻辑执行图     简单说就是把能优化的Operator拼接在一起放到一个Task中执行的算子的整合和               优化chain在一起形成OperatorChain类似于Spark Stage切分 3、ExecutionGraph 再把JobGraph进行并行化生成ExecutionGraph     简单说其实ExecutionGraph 就是JobGraph的并行化版本 4、物理执行图 其实是ExecutionGraph 调度运行之后形成的分布当一个Flink Stream Job中的所有     Task 都被调度执行起来了之后的状态     简单说就是最终运行状态图 两个重要的转化 1、StreamGraph 转变成 JobGraph帮我们把上下游两个相邻算子如果能chain到一起则chain到一起做优化 2、JobGraph转变成ExecutionGraphchain到一起的多个Operator就会组成一个OperatorChain当OperatorChain 执行的时候到底要执行多少个Task则就需要把 DAG 进行并行化变成实实在在的 Task 来调度 StreamGraph StreamGraph根据用户通过Stream API 编写的代码生成的最初的图。Flink把每一个算子 transform 成一个对流的转换比如 SingleOutputStreamOperator它就是一个 DataStream 的子类并且注册到执行环境中用于生成 StreamGraph。     它包含的主要抽象概念有 1、StreamNode用来代表 operator 的类并具有所有相关的属性如并发度、入边和出边等。 2、StreamEdge表示连接两个 StreamNode的边 JobGraph JobGraphStreamGraph 经过优化后生成了 JobGraph提交给 JobManager 的数据结构它包含的主要抽象概念有 1、JobVertex经过优化后符合条件的多个 StreamNode 可能会chain 在一起生成一个 JobVertex即一个JobVertex 包含一个或多个 operatorJobVertex 的输入是 JobEdge输出是 IntermediateDataSet。 2、IntermediateDataSet表示JobVertex 的输出即经过 operator 处理产生的数据集producer 是JobVertexconsumer 是 JobEdge。 3、JobEdge代表了job graph 中的一条数据传输通道。Source 是 IntermediateDataSettarge 是 JobVertex。即数据通过 JobEdge 由IntermediateDataSet 传递给目标 JobVertex。 ExecutionGraph ExecutionGraphJobManager(JobMaster) 根据 JobGraph 生成 ExecutionGraph。ExecutionGraph 是JobGraph 的并行化版本是调度层最核心的数据结构。     它包含的主要抽象概念有 1、ExecutionJobVertex和JobGraph中的JobVertex一一对应每一个ExecutionJobVertex都有和并发度一样多的 ExecutionVertex。 2、ExecutionVertex表示ExecutionJobVertex 的其中一个并发子任务输入是ExecutionEdge输出的是IntermediateResultPartition。 3、IntermediateResult和 JobGraph 中的 IntermediateDataSet一一对应。一个 IntermediateResult包含多个 IntermediateResultPartition其个数等于该 operator 的并发度。 4、IntermediateResultPartition表示ExecutionVertex的一个输出分区producer是ExecutionVertexconsumer是若干个ExecutionEdge。 5、ExecutionEdge表示ExecutionVertex的输入source 是IntermediateResultPartitiontarge 是 ExecutionVertex。source 和 target 都只能是一个 EdgeManager 6、Execution是执行一个 ExecutionVertex 的一次尝试。当发生故障或者数据需要重算的情况下 ExecutionVertex 可能会有多个 ExecutionAttemptID。一个 Execution 通过 ExecutionAttemptID 来唯一表示。JM 和 TM 之间关于 task 的部署和 task status 的更新都是通过 ExecutionAttemptID 来确定消息接受者。 物理执行图 物理执行图JobManager 根据 ExecutionGraph 对 Job 进行调度后在各个TaskManager 上部署 Task 后形成的“图”并不是一个具体的数据结构。     它包含的主要抽象概念有 1、TaskExecution 被调度后在分配的 TaskManager 中启动对应的 Task。Task包裹了具有用户执行逻辑的 operator。 2、ResultPartition代表由一个 Task 的生成的数据和 ExecutionGraph 中的IntermediateResultPartition 一一对应。 3、ResultSubPartition是 ResultPartition 的一个子分区每个 ResultPartition 包含多个 ResultSubPartition其数据要由下游消费 Task 数和 DistributionPattern 来决定。 4、InputGate代表 Task 的输入封装和 JobGraph 中 JobEdge 一一对应每个 InputGate 消费了一个或者多个的 ResultPartition。 5、InputChannel每个 InputGate 会包含一个以上的 InputChannel和 ExecutionGraph 中的 ExecutionEdge 一一对应也和 ResultSubpartition一对一的相连即一个 InputChannel 接收一个 ResultSubpartition 的输出。 2、Flink 核心组件整体架构抽象 JobManger 作业管理器 注意 JobManager 是控制一个应用程序执行的主进程相当于集群的Master节点且整个集群有且只有一个活跃的JobManagerJobManager 负责整个Flink集群任务的调度以及资源的管理。默认情况下每个Flink 集群只有一个JobManager 实例。可能会产生单点故障SPOF可配置高可用。 说明 jobManager 作业管理器会先接收到要执行的应用程序 包括作业图JobGraph、逻辑数据流图logicaldataflow graph和打包了所有的类、库和其他资源的JAR包。 JobManager 作业管理器会向资源管理器 ResourceManager请求执行任务必要的资源 也就是任务管理器TaskManager 上的插槽slot一旦获取到足够的资源就会将任务图分发到真正运行它们的TaskManager上。 在运行过程中作业管理器会负责所有需要中央协调的操作比如说检查点checkpoints的协调 描述 JobManger 负责整个 Flink 集群人物的调度以及资源的管理。JobManger 从客户端中获取提交的应用然后根据集群中TaskManger 上 TaskSlot 的使用情况为提交的应用分配相应的TaskSlot 资源并命令TaskManager 启动从客户端中获取的应用。当任务完成后Flink 会将任务执行的信息反馈给客户端并且释放掉 TaskManager 中的资源以供下一次提交任务使用。 ResourceManager 资源管理器 注意 ResourceManager 主要负责 任务管理器TaskManager的插槽SlotTaskManager插槽是Flink中定义的处理资源单元Flink为不同的环境和资源管理工具 提供了 不同的资源管理器比如YarnK8s以及 Standalone 部署。 作用 当JobManager 作业管理器申请插槽资源时ResourceManager 会将空闲插槽的 TaskManager分配给作业管理器。如果ResourceManager没有足够的插槽来满足作业管理器的请求他还可以向资源提供平台发起会话以提供启动 TaskManager进程的容器。ResourceManager 还负责终止空闲的TaskManager释放计算资源 描述 管理资源为不同环境提供各种的资源管理器分配 空闲插槽终止 空闲TaskManager释放资源 TaskManager 任务管理器 注意 TaskManager 是Flink中的工作进程相当于整个集群的Slave 节点Flink集群可存在 多个 TaskManager 运行。TaskManager 负责具体的 任务执行 和对应任务在每个节点上的 资源申请和管理。 描述 通常在Flink中会有多个TaskManager运行每一个TaskManager都包含了一定数量的插槽slots。插槽的数量限制了TaskManager能够执行的任务数量。启动之后TaskManager会向资源管理器注册它的插槽。收到资源管理器的指令后TaskManager就会将一个或者多个插槽提供给作业管理器调用作业管理器就可以向插槽分配任务。在执行过程中一个TaskManager可以跟其他运行同一应用程序的TaskManager交换数据同时TaskManager 之间的数据交互都是通过数据流的方式进行的。 Dispatcher 分发器 说明 Dispatcher 分发器可以跨作业运行它为应用提交提供了REST接口。当一个应用被提交执行时分发器就会启动并将应用移交给一个作业管理器。由于是REST接口所以Dispatcher可以作为集群的一个HTTP接入点这样就能够不受防火墙阻挡。Dispatcher也会启动一个Web UI用来方便地展示和监控作业执行的信息。Dispatcher在架构中可能并不是必须的这取决于应用提交运行的方式。 3、Flink Job 三种运行模式 在一些应用场景中对于集群资源分配和占用的方式可能会有特定的需求。Flink为各种场景提供了不同的部署模式主要有以下三种 会话模式Session Mode单作业模式Per-Job Mode应用模式Application Mode 它们的区别主要在于集群的生命周期和资源分配方式不同、以及应用程序的 main() 方法到底在哪执行。客户端Client还是 JobManager。     这里我们重点探讨 Flink On Yarn。 Flink RPC 网络通信框架Akka 以往我们接触过非常多的大数据技术栈相关的框架用的比较多的大数据相关组件常用的RPC实现技术如下 技术组件RPC实现HadoopNIO Protobuf (Protobuf即Protocol Buffers是Google公司开发的一种跨语言和平台的序列化数据结构的方式是一个灵活的, 高效的用于序列化数据的协议)HbaseHbase2.x以前NIO ProtoBufHbase2.x会议后NettyZooKeeperBIO(Blocking I/O同步阻塞I/O模式) NIO (New I/O同步非阻塞的I/O模型) NettySparkSpark-2.x 以前 基于 Akka ActorSpark2.x往后基于 Netty RpcEndpointFlinkAkka组件中间 Netty (operator)KafkaNIO 在Flink中主从节点之间的通信组件即akka可以通过Flink web ui进行确认 [外链图片转存失败,源站可能有防盗在这里插入!链机制,建描述]议将图片上https://传(im-log.animg.cn/95abeydD1907ef2e234a8895036959ea70(aa0.pngtps://img-blog.csdnimg.cn/951907ef2e234a889e553506ea909aa0.png)] 为什么Flink使用了两套通信框架呢这是因为Flink节点与节点之间组件与组件之间通信采用的是Akka但是数据交换比如算子与算子之间的数据交换采用的是Netty比如Flink中有JobManager还有TaskManager从节点而JobManager主节点里面有一些组件比如JobMasterDispatcher等组件与组件之间通信采用的是Akka而Netty是算子与算子之间比如Map算子后面跟着Filter,Filter后面跟着reducekeyby等操作这些算子之间采用的是Netty来通信的。 Fink 内部节点之间的通信是用Akka比如JobManager 和 TaskManager之间的通信而operator之间的数据传输是采用的Netty Flink通过Akka进行的分布式通信的实现有远程过程调用都实现为异步消息这主要影响组件JobManagerTaskManager 和JobClient. RPC框架是Flink任务运行的基础Flink整个RPC框架基于Akka实现并对Akka中的ActorSystem, Actor 进行了封装和使用Flink整个通信框架的组件主要由 RpcEndpointRpcServiceRpcServerAkkaInvocationHandlerAkkaRpcActor等构成。
http://www.zqtcl.cn/news/657159/

相关文章:

  • 建站之星演示谷歌网站建站
  • wordpress是建站工具 还是语言表格制作
  • 北京中国建设银行招聘信息网站店标logo图片免费制作
  • 网站建设分金手指专业二七文章网站是怎么做的
  • 东莞网站设计企业怎么制作手机app及网站
  • 林州做网站下载做蛋糕网站
  • 做网站改版的做实验用哪些国外网站
  • 什么是静态页面网站甜品网站建设方案
  • 做一个网站大概多少钱养生网站源码
  • 淘宝客网站建设分类校园网站开发设计报告
  • 个人网站模板 免费儿童编程培训机构
  • 运动健身型网站开发免费ddns域名注册
  • 专业pc网站建设wordpress 支持php7.1
  • 廊坊网站制作系统虚拟服务器搭建
  • 做网站的优势wordpress百度索引链接
  • 网站哪些功能是PHP做的wordpress 正文宽度
  • wordpress考试主题株洲优化公司
  • 怎么做企业网站建设方案怎样查网站有没有备案
  • 浙江短视频seo优化网站专做童装的网站
  • 印刷包装公司网站模板陕西住房和城乡建设厅网站
  • 成都响应式网站建设公司网站 建设的必要性
  • 江苏省建设局官方网站查询wordpress收到登录错误
  • 个人与企业签订网站开发合同北京个人网站建设
  • 阀门网站设计dede静态网站
  • 做暧暧视频网站在线网站建设项目推文
  • 岳池发展建设集团有限公司门户网站毕设做网站工作量够吗
  • 手机网站客户端设计与实现手机网站 焦点图
  • 网站建设常用的开发语言介绍设计公司官网首页
  • 做网站能拿多少钱视频策划方案怎么写
  • 权威的顺德网站建设dw不会写代码能建立网站吗