Apache flink 在ApacheFlink中,在节点之间共享数据集的最佳方式是什么?

我正在使用ApacheFlink处理数据流,我需要在处理输入数据的所有节点之间共享一个索引。索引经常被节点更新 我想知道,从效率的角度来看,通过广播变量共享数据集是否是一种好的做法 广播变量是否在每次更新后都会在所有节点中更新 Apache Flink是否仅针对最近的更改智能地增量更新广播变量?我认为解决方案在于使用基于Flink托管状态描述符的有状态函数。如果状态不可分区,请为运算符将并行度设置为1

Apache flink Flink关闭钩子以最大限度地减少数据丢失/重复

我有一个flink作业,它从kafka读取数据,从redis执行一些读取,然后将聚合的窗口数据写入redis接收器(redis写入操作实际上是调用加载到redis中的lua脚本,该脚本增加现有值,因此我只能在此处增加,而不能更新) 问题是,当我停止作业(维护、代码更改等)时,即使使用保存点,我也会向redis写入重复数据,或者在恢复时丢失一些数据,因为据我所知,redis sink对语义没有任何保证(确切地/至少/最多一次) 问题是-是否存在某种关闭信号,允许我完全关闭作业,以保证只执行一次 换

Apache flink 如何配置Flink以将Hdfs用于后端状态和检查点

我有一个Flink v1.2的设置,3个作业管理器,2个任务管理器。我想对后端状态和检查点以及zookeeper storageDir使用hdfs state.backend:文件系统 state.backend.fs.checkpointdir:hdfs://[ip:port]/flink检查点 state.checkpoints.dir:hdfs://[ip:port]/外部检查点 高可用性:zookeeper high-availability.zookeeper.storageDir:

Apache flink 如何使用Flink Java API对数据流中的不同项进行计数

我遇到了与Flink编程相同的问题。然而,答案是使用scalaapi来解决这个问题。Flink Java API是否支持filterWithStatetransform?Java API能解决这个问题吗?filterWithState和mapWithState是Flink Scala API的语法糖分,在Java API中是不可用的。但是Java中确实存在编写有状态转换和过滤器的底层机制——请参阅

Apache flink Can';t将保存点从1.2.1恢复到1.4

我们在1.4版中部署了一个新的Flink实例。 在尝试从旧的1.2.1部署中恢复保存点时,我们尝试恢复的所有作业都会出现相同的错误: org.apache.flink.runtime.execution.SuppressRestartsException: Unrecoverable failure. This suppresses job restarts. Please check the stack trace for the root cause. at org.apache.f

Apache flink 使用Docker启动flink本地集群,如何设置日志和标准输出路径?

我用Docker启动了Flink本地集群,在WebUI中,TaskManager的选项卡“Stdout”和“Logs”显示“获取TaskManager日志失败”。如何设置日志和Stdout路径 我使用以下docker命令启动Flink: docker run——名称为flink_local-p 8081:8081-it——rm flink local 然后我在WebUI中提交WordCount.jar(localhost:8081),即使作业运行成功,但我在WebUI TaskManager的日

Apache flink 数据集迭代非恒定结果

数据集迭代为不同的执行返回不同的结果。 有时,结果的大小与输出值的打印数量不匹配 我不能在这里分享完整的代码,但是如果有人想看的话,我可以直接分享 编辑1: CookiteFresh的回答修复了大小和迭代值不匹配的问题。但我仍然面临着一个实际问题,即使用相同的输入为不同的运行获得不同的结果 上面的代码有时打印小于返回大小的值,有时打印大于返回大小的值。关于为什么会这样的线索 编辑2: 在我的代码中识别了不同结果的错误。应在其中一个映射器中重置标志。在发布的代码片段中指出问题时,接受了FizzFr

Apache flink Flink taskmanager内存和内存配置不足

我们正在使用Flink streaming在单个集群上运行一些作业。我们的工作是用rocksDB来控制一个州。 集群配置为在3个单独的虚拟机上使用单个Jobmanager和3个Taskmanager运行。 每个TM配置为使用14GB的RAM运行。 JM配置为使用1GB运行 我们遇到2个与内存相关的问题: -当使用8GB堆分配运行Taskmanager时,TM堆内存不足,我们得到了堆内存不足异常。我们对此问题的解决方案是将堆大小增加到14GB。这个配置似乎解决了这个问题,因为我们不再因为堆内存不足

Apache flink 滚动聚合的GlobalWindow替代方案

我想知道Flink是否适合以下用例。假设我有一个测量流(设备id、值),例如 (1,10.2),(2,3.4),(3,9.1),(1,7.0),(3,6.3),(5,17.8) 我想每分钟报告迄今为止看到的任何设备id的最新值 鉴于数据: data: (1, 10.2), (2, 3.4), (3, 9.1), (1, 7.0), (3, 6.3), (5, 17.8) time: 0 ----------------- 1min -------------- 2min ----------

Apache flink 在弗林克计划中,散列、前进等术语是什么意思?

这是我部署作业时显示在仪表板上的Flink计划的图像。正如您所看到的,操作符之间的连接被标记为转发/HASH等。它们指的是什么?什么时候叫做散列,什么时候叫做转发 首先,我们知道,Flink流媒体作业将根据其作业图(或DAG)分成多个任务。前向/哈希是上游任务和下游任务之间的分区器,用于对输入数据进行分区 什么是前进?前进什么时候发生 这意味着分区器将只将元素转发给本地运行的下游任务。如果您不直接指定任何分区器,或者不使用诸如Rebalance/keyBy之类的分区器函数,则Forward是默认

Apache flink Flink-在时间限制内处理连续事件

我有一个用例,我想我需要一些关于如何处理它的帮助。 因为我是流媒体和Flink的新手,所以我会尽量描述我想要实现的目标。对不起,如果我没有使用正式和正确的语言 我的代码将用java编写,但我不想用python编写代码,也不想用伪代码或方法编写代码 TL:DR 在某个时间限制内对同一密钥的事件进行分组 在这些事件中,仅从最接近的两个(时域)事件创建结果事件 这需要(我认为)为每一个事件打开一扇窗户 如果你向前看批量解决方案,你将最了解我的问题 背景: 我有来自传感器的数据,是卡夫卡传来的 我需要使

Apache flink 是否有方法确定运行Flink作业(在运行之前)所需的总作业并行度或插槽数

是否有一种方法可以确定从执行计划或以其他方式运行作业所需的任务插槽总数,而无需首先实际启动作业 根据这份文件: “Flink群集需要的任务槽数与作业中使用的最高并行度完全相同。无需计算一个程序总共包含多少个任务(具有不同的并行度)。” 如果我从StreamExecutionEnvironment获取执行计划(安装后,但没有实际执行作业),并从执行计划json中的节点列表中获取任何节点的最大并行度,这是否足以确定运行作业所需的任务槽数 是否有任何情况不再如此?或者需要记住的任何警告?在一般情况下,

Apache flink 大小约为50Mb的侧面输入导致长GC暂停 我们正在Flink集群上运行Beam应用程序,侧面输入大小为50Mb。 根据发送到Kafka中通知主题的通知进行侧输入刷新(从外部数据源提取) 随着应用程序的进展,由于侧面输入,经常会发生完全GC,每个GC需要约30秒的时间,这会暂停任务管理器将心跳发送给主机 在连续的心跳未命中后,master假设工作人员已死亡并开始重新分配作业,结果导致应用程序重新启动 我们尝试删除侧输入,应用程序运行良好

问题: Apache梁侧输入中的侧输入大小是否有任何限制 我已经使用asSingleton()创建了侧输入映射,是否要为每个任务创建seprate副本?我给出了15个平行度。它是否将在JVM中创建15个副本(假设所有任务都分配给同一个工作者) 侧面输入的替代方案是什么 这是示例管道: public class BeamApplication { public static final CloseableHttpClient httpClient = HttpClients.createDef

Apache flink 与flink Parallelism相关的对象实例&;应用方法

首先让我问一下我的问题,然后你能澄清我关于应用方法的假设吗 问题:如果我的应用程序每一分钟创建1.500.000(大约)条记录,flink job使用15++不同的操作符从kafka消费者处读取这些记录,那么这种逻辑可能会产生延迟、背压等。。?(您可以假设并行度为16) 公共类示例{ //op1= 卡夫卡索 .凯比(某物) .时间窗口(时间.分钟(1)) .apply(新的ApplySomething()) .姓名(“姓名”) .addSink(卡夫卡辛银行); //op2= 卡夫卡索 .凯比

Apache flink 从FasterXML读取值时Flink收集器问题

我将Kafka值作为字符串,POJO如下所示 {"name":"John","timeStamp":"2020-08-11T13:31:31"} 这个时间戳是来自Kafka的字符串,并将它们转换为LocalDateTime 当我以独立方式运行该程序,并使用FasterXML中的必需库objectMapper.readValue(value,Person.class)时,它工作得很好。它正在转变 当我读到Flink框

Apache flink 如何将FlinkKafPartitioner实例注册到flink sql环境

我想在flink sql的kafka接收器中使用自定义的“sink.partitioner”策略。通过官方的flink文件(https://ci.apache.org/projects/flink/flink-docs-stable/dev/table/connectors/kafka.html#connector-选项),我通过继承org.apache.flink.streaming.connectors.kafka.partitioner.FlinkKafkaPartitioner类策略轻松

Apache flink Flink Map状态访问RocksDB后端是否懒惰? MapState someMapState; ... 公共void processElement(字符串s、上下文、收集器)引发异常{ //把东西存到地图上 Streams.stream(someMapState.values()).forEach(collector::collect); }

RocksDB后端的状态访问是否类似于MapState.values()lazy(值不会一次加载到内存) 此行为是否因状态类型(ValueState、ListState等)而异 注意:我试着翻阅文档和源代码,但找不到任何有关这方面的详细信息,请提供任何指针,谢谢RocksDB状态后端将其工作状态保留在磁盘上,作为序列化字节,并带有堆外(内存中)块缓存。每次状态访问/更新都需要Ser/de 使用MapState,地图中的每个条目都是一个单独的RocksDB对象,允许高效地读取和写入地图条目。Lis

Apache flink Flink 1.12.3升级触发“NoSuchMethodError:';scala.collection.mutable.ArrayOps scala.Predef$.refArrayOps`

当我将Flink Java应用程序从1.12.2升级到1.12.3时,出现了一个新的运行时错误。我可以将我的Flink应用程序剥离到以下两行: 仅限公共类{ 公共静态void main(字符串[]args)引发异常{ 最终StreamExecutionEnvironment streamEnv=StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tableEnv=StreamTableEnvir

Apache flink ApacheFlink:为什么reduce或groupReduce转换不能并行运行?

例如: DataSet input=env.from元素(1,2,3,4,5,6,7,8,9); 数据集总和=输入.reduce(新的ReduceFunction(){ 公共Tuple1 reduce(Tuple1值1,Tuple1值2){ 返回新的Tuple1(value1.f0+value2.f0); } } 如果上面的reduce转换不是并行操作,我是否需要使用另外两个转换“partitionByHash”和“mapPartition”,如下所示: DataSet input=env.f

Apache flink Flink CEP不是确定性的

我在没有群集的情况下在本地运行以下代码: val count = new AtomicInteger() val env = StreamExecutionEnvironment.getExecutionEnvironment env.setParallelism(1) val text: DataStream[String] = env.readTextFile("file:///flink/data2") val mapped: DataStream[Map[String, Any]] =

Apache flink Flink 1.x中EventTimeSourceFunction(Flink 0.10.x)的替代品是什么?

我正在尝试将基于Flink 0.10.1的示例迁移到Flink 1.1.1 示例中使用的TaxiRideSource数据流源实现了org.apache.flink.streaming.api.functions.source.EventTimeSourceFunction接口,该接口不再由flink 1.x提供 如何将源代码移植到Flink 1.x?自从Flink 1.0.0以来,所有的源函数都可以在事件时间模式下运行,也就是说,它们都有相应的接口 通过将EventTimeSourceFunct

Apache flink 具有窗口和状态的flink聚合

我正在寻找一种在同样具有状态的窗口上实现聚合/折叠功能的方法。 我了解如何在窗口上聚合,以及如何使用键/全局状态,但不能同时使用两者 要明确的是,当我说一个带有状态的窗口时,我的意思是,每次更改/移动窗口时,都应该初始化(取消)状态 例如:我想每5分钟计算一次按事件类型键入的事件数。但是除了事件类型(窗口键)之外,事件还有一些id字段——我只想对每个id计数一次——因此我需要保存我在该窗口中已经计数过的所有id的状态 在Flink中有一种简单的方法可以做到这一点吗?Flink有一个RichRed

Apache flink 弗林克';s协处理函数不';不定时触发

我试着像那样把两条溪流聚合起来 val joinedStream = finishResultStream.keyBy(_.searchId) .connect(startResultStream.keyBy(_.searchId)) .process(new SomeCoProcessFunction) class SomeCoProcessFunction extends CoProcessFunction[SearchFinished, SearchCreated, Search

Apache flink ApacheFlink-任务管理器HA安装程序

在任务关键型设置中,必须保持恒定可用性 我们正在考虑采用ApacheFlink作为我们的流媒体引擎,但我们有具有挑战性的SLA 我们的工作计划将基于单个窗口,因此复制工作可能是一个答案 建议在Flink中采用什么样的高可用性设置来保证服务始终处于运行状态?Job Manager HA不够,因为它不能保证所需的HA。为什么Flink的正常HA功能不足以满足您的用例?作业重新启动时间是否因状态过大而过高?它们不够。我们有非常精简的SLA,因此任何停机时间对我们来说都是至关重要的。在其他组件中,如果我

Apache flink 将运算符并行度设置为大于默认并行度时,Flink任务槽的分布不均匀

我正在一个集群上运行一个Flink作业,该集群在3个Kubernetes吊舱之上包含3个任务管理器。 作业的默认并行度为9,其中一个运算符设置为并行度18。 作业的任务槽数设置为最大并行度值18 我观察到以下行为: 设置为并行18的运算符在所有任务槽之间平均分布 设置为默认值-9的所有其他运算符的分布不均匀。例如: TM1:运行2个子任务 TM2:运行5个子任务 TM3:运行2个子任务 请有人解释一下: 是什么导致了这种不均匀分布? 我可以控制操作员分配进行平衡吗?我怎么做? 目前使用Flink

Apache flink 在Flink流媒体中如何在进程级别缓存局部变量?

在Flink任务实例中,当事件发生时,我需要访问远程web服务来获取一些数据,但是我不想每次事件发生时都访问远程web服务,所以我需要将数据缓存在本地内存中,并且可以被进程的所有任务访问,如何做到?在类级别将数据存储在静态私有变量中 例如下面的示例,如果将局部变量localCache设置为class Splitter,它将在操作符级别而不是进程级别进行缓存 公共类WindowWordCount{ 公共静态void main(字符串[]args)引发异常{ StreamExecutionEnvir

Apache flink 通过阅读卡夫卡的详细信息创建动态flink窗口

假设Kafka消息包含flink窗口大小配置 我想阅读卡夫卡的信息,并在flink中创建一个全局窗口 问题陈述: 我们可以使用BroadcastStream处理上述场景吗 或 支持上述情况的任何其他方法?Flink的窗口API不支持动态更改窗口大小 您需要做的是使用process函数实现自己的窗口。在这种情况下,是KeyedBroadcastProcessFunction,其中窗口配置是广播的 您可以查看如何使用KeyedProcessFunction(复制如下)实现时间窗口的示例: 公共类伪窗

Apache flink 如何连接流和数据集?

如何连接流和数据集? 我有一个流,文件中有一个静态数据。我想使用文件中的数据来丰富流的数据 示例:在流中我得到机场代码,在文件中我有机场的名称和文件中的代码。 现在,我想将流数据加入到文件中,以形成一个具有机场名称的新流。请提供如何实现这一点的步骤。根据具体要求,有很多方法可以使用Flink实现流富集。这是康斯坦丁·可耐夫(Konstantin Knauf)的一篇精彩演讲,涵盖了许多不同的方法,以及它们之间的权衡 在浓缩数据不可变且相当小的简单情况下,我将使用RichFlatMap并在open(

Apache flink Flink堆内存泄漏?

我是弗林克的新手。我的flink应用程序(1.10.0)使用hdfs在k8s上运行。似乎存在内存泄漏问题,因为当我检查堆内存使用情况时,堆内存总是上升。这将导致应用程序在某个点重新启动。我试图简化我的拓扑结构,只包含一个卡夫卡消费者和一个丢弃接收器。但我仍然看到它使用了大量内存。下图中使用的最大内存约为60%,即10 GB 我的flink-conf.yaml如下所示 jobmanager.rpc.address: streakerflink-jobmanager high-availabil

elasticsearch 使用Flink Rich InputFormat创建Elasticsearch的输入格式

我们正在使用Elasticsearch 6.8.4和Flink 1.0.18 我们在elasticsearch中有一个包含1个碎片和1个副本的索引,我想创建自定义输入格式,以便使用apache Flink dataset API在elasticsearch中读取和写入数据,其中包含1个以上的输入拆分,以获得更好的性能。那么我有没有办法达到这个要求呢 注意:每个文档的大小更大(几乎8mb),由于大小限制,我一次只能读取10个文档,每个读取请求,我们希望检索500k记录 根据我的理解,并行数应该等于

Apache flink 如何配置flink SQL客户端以提交启用检查点的作业?

启用检查点的flinksql客户端配置文件示例是什么 当我通过flink sql client提交流作业时,检查点未启用。检查点配置不能在flink sql client配置文件中设置,但可以在群集配置文件(flink-conf.yaml)中设置 您至少应该配置和 例如,类似这样的事情: execution.checkpointing.interval:10000 state.backend:文件系统 state.checkpoints.dir:file:///tmp/flink-checkpo

Apache flink 弗林克:没有Binlog的CDC

我想将MySQL和Postgres中存储的数据流传输到Kafka和另一个数据库节点 Binlog对我来说是不可访问的,并且没有删除操作,所以我只需要捕获最近插入的或更新的数据。现在我使用Logstash来实现这一点,但HA不可用,因为Logstash目前不支持集群 我想改用Flink CDC,但似乎需要binlog。有没有其他办法通过Flink做到这一点?我认为这是不可能的。

Apache flink 关于燧石在纱线上展开的错误

我试图在纱线上部署Flink,但失败了。看起来纱线无法将容器推出。有人知道这个问题吗?如有任何建议,将不胜感激 当我像这样开始Flink时: [admin@bufer108072.tbc ~/flink-0.10-SNAPSHOT]$ bin/yarn-session.sh -n 4 我得到以下控制台打印输出: 09:16:35,069 INFO org.apache.flink.yarn.FlinkYarnCluster - Start app

Apache flink 如何在ApacheFlink中并行写入接收器

我有一个并行度为8的map数据流。我向数据流添加了两个接收器。一个是慢速(Elasticsearch),另一个是快速(HDFS)。但是,我的事件只有在刷新到ES后才写入HDFS,因此使用ES所需的时间比不使用ES所需的时间长 dataStream.setParallelism(8); dataStream.addSink(elasticsearchSink); dataStream.addSink(hdfsSink); 在我看来,两个水槽使用相同的线程。使用同一个源和两个接收器是可能的,还是我

Apache flink 每个任务(或节点)的Flink吞吐量

如何计算Flink中任务或节点的吞吐量?我能在Flink的文档中找到的关于吞吐量的唯一参考是与。但我不确定这是否符合我的需要。有人能确认一下吗?在Flink 1.2中,会有每个任务的吞吐量指标 在1.1中,你必须自己建造一些东西。您可以使用此flatMap操作符作为示例来测量吞吐量:谢谢!我实际上要把目标定为1.2,这是个好消息

Apache flink 有关于ApacheFlink运行时上下文的文档吗?

我知道flink有一些预定义的变量,例如,我可以通过以下方式获得: context.getMetricGroup.getAllVariables.get 是否有关于所有这些变量的详细文档 谢谢您可以在此处的文档中找到有关度量的所有信息以及在Apache Flink中使用度量的示例:找到了它。谢谢!

Apache flink 如何处理flink流作业中的背压?

我正在运行一个流式flink作业,该作业使用来自kafka的流式数据,并在flink map函数中对数据进行一些处理,然后将数据写入Azure data lake和弹性搜索。对于map函数,我使用了1的并行性,因为我需要在作为全局变量维护的数据列表上逐个处理传入的数据。现在,当我运行作业时,flink开始从kafka获取流数据,它的反压力在map函数中变得很高。我可以做什么设置或配置来避免flink中的背压 给定操作员上的背压表明下一个操作员正在缓慢消耗元素。根据您的描述,其中一个水槽的性能似乎

Apache flink 如何动态地将模式附加到Flink数据流?

我正在处理一个数据库突变流,即一个变更日志流。我希望能够使用SQL查询转换值。 我很难将以下三个概念组合在一起 行类型信息,行和数据流 注意:我事先不知道模式。我使用Mutation对象中的数据动态构造它(Mutation是一种自定义类型) 更具体地说,我有这样的代码 val execEnv = StreamExecutionEnvironment.getExecutionEnvironment val tableEnv: StreamTableEnvironment = TableEnviro

Apache flink Flink stop作业API返回“;308永久重定向“;

我正在使用PATCH/jobs/:jobid?mode=stop停止作业,但是我得到了HTTP响应“308永久重定向”。这项工作肯定正在进行中。我不知道错误是什么意思,也不知道该如何停止作业。根据: 模式(可选):指定终止模式的字符串值。唯一支持的值是:“取消” 它应该是“取消”,而不是“停止”。根据: 模式(可选):指定终止模式的字符串值。唯一支持的值是:“取消” 应该是“取消”,而不是“停止”。该文档似乎已修复。谢谢看来医生已经修好了。谢谢

Apache flink 在同一源上Flink多个窗口

我的flink应用程序执行以下操作: 从卡夫卡读取记录形式的数据 8种按键组合和60秒翻滚时间窗口 水槽:弹性搜索 代码如下所示: DataStream<String> stream = env.addSource(new FlinkKafkaConsumer<>(topic, new SimpleStringSchema(), properties)); DataStream<Bean> input = stream.filter(...).

Apache flink Flink keyby/window操作员任务执行地点和内部

我对弗林克来说是新的大人物。我正在编写一个简单的Flink POC程序,在这里我能够获得预期的输出。但我无法获得钥匙和车窗操作的内部信息。下面是我的代码 environment .addSource(consumer) .name("MyKafkaSource") .setParallelism(2) .flatMap(pojoMapper) .name("MyPojoMapper") .setParallelism(2) .keyBy(new MyKeyExtractor()) .timeWi

Apache flink Flink 1.12.0在纱线上';我认不出他了

我使用以下脚本提交了我的纱线申请 MAIN_CLASS=org.example.app.HelloFlink flink run -m yarn-cluster -yn 4 -ys 1 -ynm FlinkHiveIntegrationTest -c $MAIN_CLASS /learn.flink.ioc-1.0-SNAPSHOT.jar 它抱怨无法从jar文件获取作业jar和依赖项:jar文件不存在:-yn 当我删除脚本中的-yn4时,它就会工作。我在以前的flink版本中使用了-yn来指

Apache flink 没有数据通过ES接收器写入ES

我使用的是Flink 1.12和ES 7.10.2 我有以下简单的代码片段,希望将一些数据写入ES。但是在应用程序运行之后 (成功,无错误发生),没有数据写入ES 更新 如果我在环境执行后睡眠几秒钟,那么我可以成功地写入ES。我会问为什么会这样。我认为如果源和接收器还没有完成运行,env.execute将不会返回 test("elastic search 7 update or replace") { val env = StreamExecutionEnvironm

上一页   1   2   3    4   5   6  ... 下一页 最后一页 共 51 页