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

网站开发定制公司网络营销郑州优化推广公司

网站开发定制公司,网络营销郑州优化推广公司,wordpress ios客户端,前端和做网站Flink的API分层 Apache Flink的API分为四个层次#xff0c;每个层次都提供不同的抽象和功能#xff0c;以满足不同场景下的数据处理需求。下面是这四个层次的具体介绍#xff1a; CEP API#xff1a;Flink API 最底层的抽象为有状态实时流处理。其抽象实现是Process Functi…Flink的API分层 Apache Flink的API分为四个层次每个层次都提供不同的抽象和功能以满足不同场景下的数据处理需求。下面是这四个层次的具体介绍 CEP APIFlink API 最底层的抽象为有状态实时流处理。其抽象实现是Process Function并且Process Function被  框架集成到了DataStream API中来为我们使用。它允许用户在应用程序中自由地处理来自单流或多流的事件数据并提供具有全局一致性和容错保障的状态。此外用户可以在此层抽象中注册事件时间event time和处理时间processing time回调方法从而允许程序可以实现复杂计算。 Core APIsFlink API 第二层抽象是Core APIs。实际上许多应用程序不需要使用到上述最底层抽象的 API而是可以使用Core APIs进行编程其中包含DataStream API应用于有界/无界数据流场景和DataSet API应用于有界数据集场景两部分。Core APIs 提供的流式 APIFluent API为数据处理提供了通用的模块组件例如各种形式的用户自定义转换transformations、联接joins、聚合aggregations、窗口windows和状态state操作等。此层 API 中处理的数据类型在每种编程语言中都有其对应的类。 Process Function 这类底层抽象和 DataStream API 的相互集成使得用户可以选择使用更底层的抽象 API 来实现自己的需求。DataSet API 还额外提供了一些原语比如循环/迭代loop/iteration操作。 Table APIFlink API 第三层抽象是Table API。Table API是以表Table为中心的声明式编程DSLAPI例如在流式数据场景下它可以表示一张正在动态改变的表。Table API遵循扩展关系模型即表拥有 schema类似于关系型数据库中的 schema并且 Table API 也提供了类似于关系模型中的操作比如 select、project、join、group-by 和 aggregate 等。Table API 程序是以声明的方式定义应执行的逻辑操作而不是确切地指定程序应该执行的代码。尽管 Table API 使用起来很简洁并且可以由各种类型的用户自定义函数扩展功能但还是比 Core API 的表达能力差。此外Table API 程序在执行之前还会使用优化器中的优化规则对用户编写的表达式进行优化。        表和DataStream/DataSet可以进行无缝切换Flink 允许用户在编写应用程序时将Table API与DataStream/DataSetAPI 混合使用。Table API提供了更简洁、易读的编程模型适合对结构化数据进行处理。 SQL APIFlink API 最顶层抽象是SQL。这层抽象在语义和程序表达式上都类似于Table API但是其程序实现都是 SQL 查询表达式。SQL抽象与 Table API 抽象之间的关联是非常紧密的并且 SQL 查询语句可以在Table API中定义的表上执行。用户可以将SQL查询直接提交给Flink引擎然后Flink会将查询解析为对应的Table API操作并执行查询计划。SQL API使得熟悉SQL语言的用户能够更方便地使用Flink进行数据处理无需编写额外的代码。 这四个层次的API相互补充用户可以根据自己的需求和技术背景选择适合的API进行数据处理。无论使用哪个层次的API底层都是Flink的核心引擎来执行计算任务因此它们在性能和功能上是相当的只是提供了不同的编程模型和抽象层次。 Flink架构 当 Flink 集群启动后首先会启动一个 JobManger 和一个或多个的 TaskManager。由 Client 提交任务给 JobManagerJobManager 再调度任务到各个 TaskManager 去执行然后 TaskManager 将心跳和统计信息汇报给 JobManager。TaskManager 之间以流的形式进行数据的传输。上述三者均为独立的 JVM 进程。 Client 为提交 Job 的客户端可以是运行在任何机器上与 JobManager 环境连通即可。提交 Job 后Client 可以结束进程Streaming的任务也可以不结束并等待结果返回。 Client 不是运行时和程序执行的一部分而是用于准备数据流并将其发送给 JobManager。之后客户端可以断开连接分离模式或保持连接来接收进程报告附加模式。客户端可以作为触发执行 Java/Scala 程序的一部分运行也可以在命令行进程./bin/flink run ...中运行。 可以通过多种方式启动 JobManager 和 TaskManager直接在机器上作为standalone 集群启动、在容器中启动、或者通过YARN等资源框架管理并启动。TaskManager 连接到 JobManagers宣布自己可用并被分配工作。 JobManager 主要负责从 Client 处接收到 Job 和 JAR 包等资源后会生成优化后的执行计划并以 Task 的单元调度到各个 TaskManager 去执行。JobManager 具有许多与协调 Flink 应用程序的分布式执行有关的职责它决定何时调度下一个 task或一组 task、对完成的 task 或执行失败做出反应、协调 checkpoint、并且协调从失败中恢复等等。这个进程由三个不同的组件组成 ResourceManager ResourceManager 负责 Flink 集群中的资源提供、回收、分配 - 它管理 task slots这是 Flink 集群中资源调度的单位请参考TaskManagers 。Flink 为不同的环境和资源提供者例如 YARN、Kubernetes 和 standalone 部署实现了对应的 ResourceManager。在 standalone 设置中ResourceManager 只能分配可用 TaskManager 的 slots而不能自行启动新的 TaskManager。 Dispatcher Dispatcher 提供了一个 REST 接口用来提交 Flink 应用程序执行并为每个提交的作业启动一个新的 JobMaster。它还运行 Flink WebUI 用来提供作业执行信息。 JobMaster JobMaster 负责管理单个JobGraph 的执行。Flink 集群中可以同时运行多个作业每个作业都有自己的 JobMaster。 始终至少有一个 JobManager。高可用HA设置中可能有多个 JobManager其中一个始终是 leader其他的则是 standby。 TaskManager TaskManager也称为 worker执行作业流的 task并且缓存和交换数据流。 在启动的时候就设置好了槽位数Slot每个 slot 能启动一个 TaskTask 为线程。从 JobManager 处接收需要部署的 Task部署启动后与自己的上游建立 Netty 连接接收数据并处理。 必须始终至少有一个 TaskManager。在 TaskManager 中资源调度的最小单位是 task slot。TaskManager 中 task slot 的数量表示并发处理 task 的数量。请注意一个 task slot 中可以执行多个算子 flnik架构中的角色间的通信使用Akka数据的传输使用Netty Task Slot         在上图中我们介绍了 TaskManager 是一个 JVM 进程并会以独立的线程来执行一个task或多个subtask。为了控制一个 TaskManager 能接受多少个 taskFlink 提出了 Task Slot 的概念。 Flink 中的计算资源通过 Task Slot 来定义。每个 task slot 代表了 TaskManager 的一个固定大小的资源子集。例如一个拥有3个slot的 TaskManager会将其管理的内存平均分成三分分给各个 slot。将资源 slot 化意味着来自不同job的task不会为了内存而竞争而是每个task都拥有一定数量的内存储备。需要注意的是这里不会涉及到CPU的隔离slot目前仅仅用来隔离task的内存。 通过调整 task slot 的数量用户可以定义task之间是如何相互隔离的。每个 TaskManager 有一个slot也就意味着每个task运行在独立的 JVM 中。每个 TaskManager 有多个slot的话也就是说多个task运行在同一个JVM中。而在同一个JVM进程中的task可以共享TCP连接基于多路复用和心跳消息可以减少数据的网络传输。也能共享一些数据结构一定程度上减少了每个task的消耗。 Flink 主要组件 JobManager: JobManager是Flink集群的主节点负责接收和调度任务并协调所有TaskManager的工作。它还负责检查各个任务的状态以及提供监控和管理服务。 TaskManager: TaskManager是Flink集群中的工作节点每个TaskManager都会启动一个或多个任务执行具体的计算逻辑。TaskManager负责维护和管理本地资源包括内存、CPU、IO等资源。 DataStream: DataStream是Flink中的基本数据处理单元代表了一个无限的数据流。用户可以通过DataStream API来定义数据流的输入源、转换操作和输出目的地。 DataSet: DataSet是Flink中的批处理组件它可以在有限的数据集上执行批处理操作。DataSet API提供了类似于Spark的RDD API的编程模型允许用户对数据集进行转换、过滤、聚合等操作。 Connector: 连接器是Flink中用于连接外部系统的组件包括Kafka、Hadoop、Elasticsearch等常见的数据存储和消息队列系统。Flink提供了丰富的Connector库使得用户可以方便地与各种外部系统进行交互。 Flink的核心实现原理 流式计算模型Flink采用基于时间的窗口机制来对无限数据流进行处理任务被切分为若干个子任务每个子任务处理一部分数据。数据在不同的TaskManager之间通过网络传输Flink使用基于消息的异步通信模型来实现高效的数据传输。 基于内存的计算引擎Flink使用内存存储来提高计算性能和效率它利用了Java虚拟机的内存管理机制并采用了紧凑的数据结构和高效的内存管理策略来减少内存开销。 分布式快照机制Flink采用了基于检查点的容错机制通过定期创建快照来记录任务状态并恢复故障。检查点可以保存在HDFS等分布式存储系统中以保证数据的持久性和可靠性。 优化器和执行引擎Flink提供了强大的查询优化器和执行引擎能够对Job进行优化和重排以提高执行效率和性能。Flink还支持各种类型的窗口、聚合和Join操作以满足不同的计算需求。 总的来说Flink的架构和组件设计充分考虑了分布式计算的特点和要求采用了多项高级技术来提高计算性能和可靠性使得它成为了一个高效、灵活和可扩展的分布式数据处理框架。 flink 的并行度 Flink的并行度是指在执行数据处理任务时将任务分解为多个子任务并行执行的能力。并行度可以帮助提高计算性能和吞吐量充分利用集群中的资源。 在Flink中有两种类型的并行度任务并行度Task Parallelism和数据并行度Data Parallelism。 任务并行度Task Parallelism任务并行度是指将一个Flink作业分解为多个任务Tasks这些任务可以在不同的TaskManager上并行执行。任务并行度由JobManager进行调度和分配它决定了作业的整体并行度。通过增加任务并行度可以提高作业的并发度和处理速度但也会增加系统的负载和资源消耗。 数据并行度Data Parallelism数据并行度是指将一个任务根据数据流进行切分让每个子任务处理不同的数据分片。数据并行度通常涉及到数据的分区和并行操作并且可以根据数据源的特性进行设置。通过增加数据并行度可以使得每个子任务处理更少的数据量从而提高任务的执行效率。 在Flink中任务并行度和数据并行度可以同时使用以实现更好的性能和资源利用。通过合理设置并行度参数可以根据数据的特点、计算的复杂度和集群的资源情况来优化作业的执行效果。 需要注意的是并行度的设置需要综合考虑多个因素包括可用的计算资源、数据源的分布、任务之间的依赖关系等。过低的并行度可能导致资源浪费和性能瓶颈而过高的并行度则可能导致资源竞争和系统负载过重。因此在设置并行度时需要进行实际测试和调优找到最佳的配置参数。 flink 任务执行计划 Flink是一个开源的流处理和批处理框架它提供了用于构建高性能、可伸缩的分布式数据处理应用程序的工具和库。在执行Flink任务时它会根据任务的逻辑生成执行计划。 Flink的执行计划描述了任务在集群中的执行方式和顺序它将任务转化为一系列的操作算子这些算子会在不同的并行任务槽task slot上执行。执行计划包含以下几个关键组成部分 数据源Source执行计划的起点是数据源它可以是从文件、消息队列、数据库等读取数据的操作。数据源会生成一个或多个数据流作为整个任务的输入。 转换操作Transformation转换操作是对输入数据流进行处理和转换的操作如过滤、映射、聚合等。每个转换操作都会生成一个新的数据流并形成有向无环图DAG结构描述了数据流之间的依赖关系。 算子Operator每个转换操作都会被映射为一个具体的算子例如Map、Filter、Join等。算子会在任务的task slot上执行并处理输入数据流的每个数据元素。 并行度ParallelismFlink任务可以以并行的方式执行算子的并行度定义了在集群中并行执行的任务槽数量。并行度可以根据数据量和任务的处理能力进行调整以提高任务的吞吐量和性能。 数据分区Data Partitioning数据分区定义了数据在不同算子之间的分发方式它决定了数据在不同任务槽之间的均衡性和负载情况。Flink支持多种数据分区策略如哈希分区、重分区、广播等。 Sink操作SinkSink操作将处理后的数据流输出到外部系统如文件、数据库、消息队列等。它是执行计划的终点。 在执行计划生成后Flink会将其提交给执行引擎执行引擎会根据执行计划中定义的算子和并行度在集群中分配任务槽并分配资源进行任务执行。执行引擎会负责任务的调度、数据的传输和故障恢复等工作确保任务能够按照计划顺利执行。 总之Flink的执行计划描述了任务的逻辑和执行方式通过转换操作和算子将任务映射到具体的执行环境中。这种灵活和可扩展的执行计划是Flink实现高性能、可伸缩数据处理的关键。 更多消息资讯请访问昂焱数据https://www.ayshuju.com
http://www.hkea.cn/news/14297190/

相关文章:

  • 网站建设设计计划表建设银行 英文版网站
  • 360网站推广电话网站制作 徐州
  • 唐山建设集团下岗职工网站做网站策划需要什么技能
  • 苏州兼职网站开发水陆运输类网站如何建设
  • 网站服务器错误403网站广告通栏效果
  • 本地网站构建设计服务
  • 上海网站建设公司电话医院网站建设的话术
  • 网站建设技术论坛网站开发方案书
  • 网站ping怎么做wordpress chrome插件
  • 怎么用链接进自己做的网站wordpress更改固定连接后404
  • 怎么用wordpress建立自己的网站郑州做网站的多不多
  • 免费写作文网站wordpress 点击 排名
  • 做美容美发学校网站公司正规男科医院
  • thinkphp手机网站制作网站建设什么价格
  • 建设网站的计划书网站功能配置
  • 网站建设教学设计维护网址
  • 网站点击图片放大怎么理解网站开发
  • 国外建站网址响应式衣柜网站
  • 在国外建网站方便吗最近10个新闻
  • 网站首页的浮窗怎么做网站源码可以做淘宝客
  • 专业微网站云南省建设学校网站
  • 聊城网站推广动态如何做网站建设方案
  • 做网站的一个专题网页界面设计中一般使用的分辨率的显示密度是多少dpi
  • 常见的网站名称有哪些宁波市城乡和建设网站
  • 如何做网站的软件网站多页面布局
  • 二级网站建设与管理会议网站建设一般多少费用
  • 网站开发用原生网站到底是域名需要备案还是空间
  • 长春网站建设哪个公司好网站开发最新书籍
  • 百度是什么网站安庆市建设局网站首页
  • 网站开发设2018网站设计报价表