Flink standalone集群问题记录

 官方配置:Configuration | Apache Flink

1、TM进程过一段时间就停止

报错信息:org.apache.flink.runtime.taskexecutor.TaskExecutor           [] - Task did not exit gracefully within 180 + seconds.
org.apache.flink.util.FlinkRuntimeException: Task did not exit gracefully within 180 + seconds.
        at org.apache.flink.runtime.taskmanager.Task$TaskCancelerWatchDog.run(Task.java:1791) [flink-dist_2.11-1.14.4.jar:1.14.4]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_291]

原因:任务取消超时

解决:TM配置文件${FLINK_HOME}/conf/flink-conf.yml

#取消任务取消watchdog

task.cancellation.timeout: 0

参数说明:Timeout in milliseconds after which a task cancellation times out and leads to a fatal TaskManager error. A value of 0 deactivates the watch dog. Notice that a task cancellation is different from both a task failure and a clean shutdown. Task cancellation timeout only applies to task cancellation and does not apply to task closing/clean-up caused by a task failure or a clean shutdown.

2、web端上传的jar包,在独立集群重启后全部丢失

原因:文件默认保存在/tmp目录,会被清除

解决:JM配置文件${FLINK_HOME}/conf/flink-conf.yml

web.upload.dir: /usr/local/flink/upload
web.tmpdir: /usr/local/flink/tmpdir

3、JM stop-cluster.sh stop不能停止独立集群

原因:pid文件默认保存在/tmp目录,会被清除导致脚本找不到pid结束进程

解决:JM配置文件${FLINK_HOME}/conf/flink-conf.yml

env.pid.dir: /usr/local/flink/piddir

4、zookeeper存储value太长,zookeeper集群down掉导致TM全部down掉,zookeeper报错信息:

Unexpected exception causing shutdown while sock still open
java.io.IOException: Unreasonable length = 1970218037

    at org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:95)
    at org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:85)
    at org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:103)
    at org.apache.zookeeper.server.quorum.LearnerHandler.run(LearnerHandler.java:249)


Zookeeper server went down in HA cluster. Please replay if there is any work around.     

You can attempt to increase your jute.maxbuffer Java System Property on the ZK servers to a value higher than 2-3 GB (in bytes) to overcome this. It appears a very large record was somehow placed into your ZK by an application, which appears to have then caused this issue.

解决方法:配置zookeeper的jute.maxbuffer参数到合适的长度

5、java.lang.OutOfMemoryError: Metaspace. 详细报错信息:

java.lang.OutOfMemoryError: Metaspace. The metaspace out-of-memory error has occurred. This can mean two things: either the job requires a larger size of JVM metaspace to load classes or there is a class loading leak. In the first case 'taskmanager.memory.jvm-metaspace.size' configuration option should be increased. If the error persists (usually in cluster after several job (re-)submissions) then there is probably a class loading leak in user code or some of its dependencies which has to be investigated and fixed. The task executor has to be shutdown...
        at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_291]
        at java.lang.ClassLoader.defineClass(ClassLoader.java:756) ~[?:1.8.0_291]
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.8.0_291]
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) ~[?:1.8.0_291]
        at java.net.URLClassLoader.access$100(URLClassLoader.java:74) ~[?:1.8.0_291]
        at java.net.URLClassLoader$1.run(URLClassLoader.java:369) ~[?:1.8.0_291]
        at java.net.URLClassLoader$1.run(URLClassLoader.java:363) ~[?:1.8.0_291]
        at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_291]
        at java.net.URLClassLoader.findClass(URLClassLoader.java:362) ~[?:1.8.0_291]

原因:没有找到具体原因,持续观察,网上搜索有两种说法:代码阻塞、背压

短期解决方案:TM配置文件${FLINK_HOME}/conf/flink-conf.yml

修改配置(默认256m)taskmanager.memory.jvm-metaspace.size: 512m

6、flink ui查询checkpoint报错

ERROR org.apache.flink.runtime.rest.handler.job.checkpoints.CheckpointingStatisticsHandler [] - Unhandled exception.
org.apache.commons.math3.exception.NullArgumentException: input array
        at org.apache.commons.math3.util.MathArrays.verifyValues(MathArrays.java:1650) ~[flink-dist_2.11-1.14.4.jar:1.14.4]
        at org.apache.commons.math3.stat.descriptive.AbstractUnivariateStatistic.test(AbstractUnivariateStatistic.java:158) ~[flink-dist_2.11-1.14.4.jar:1.14.4]
        at org.apache.commons.math3.stat.descriptive.rank.Percentile.evaluate(Percentile.java:272) ~[flink-dist_2.11-1.14.4.jar:1.14.4]
        at org.apache.commons.math3.stat.descriptive.rank.Percentile.evaluate(Percentile.java:241) ~[flink-dist_2.11-1.14.4.jar:1.14.4]
        at org.apache.flink.runtime.metrics.DescriptiveStatisticsHistogramStatistics$CommonMetricsSnapshot.getPercentile(DescriptiveStatisticsHistogramStatistics.java:158) ~[flink-dist_2.11-1.14.4.jar:1.14.4]
        at org.apache.flink.runtime.metrics.DescriptiveStatisticsHistogramStatistics.getQuantile(DescriptiveStatisticsHistogramStatistics.java:52) ~[flink-dist_2.11-1.14.4.jar:1.14.4]
        at org.apache.flink.runtime.checkpoint.StatsSummarySnapshot.getQuantile(StatsSummarySnapshot.java:108) ~[flink-dist_2.11-1.14.4.jar:1.14.4]
        at org.apache.flink.runtime.rest.messages.checkpoints.StatsSummaryDto.valueOf(StatsSummaryDto.java:81) ~[flink-dist_2.11-1.14.4.jar:1.14.4]
        at org.apache.flink.runtime.rest.handler.job.checkpoints.CheckpointingStatisticsHandler.createCheckpointingStatistics(CheckpointingStatisticsHandler.java:129) ~[flink-dist_2.11-1.14.4.jar:1.14.4]
        at org.apache.flink.runtime.rest.handler.job.checkpoints.CheckpointingStatisticsHandler.handleRequest(CheckpointingStatisticsHandler.java:84) ~[flink-dist_2.11-1.14.4.jar:1.14.4]
        at org.apache.flink.runtime.rest.handler.job.checkpoints.CheckpointingStatisticsHandler.handleRequest(CheckpointingStatisticsHandler.java:58) ~[flink-dist_2.11-1.14.4.jar:1.14.4]
        at org.apache.flink.runtime.rest.handler.job.AbstractAccessExecutionGraphHandler.handleRequest(AbstractAccessExecutionGraphHandler.java:68) ~[flink-dist_2.11-1.14.4.jar:1.14.4]
        at org.apache.flink.runtime.rest.handler.job.AbstractExecutionGraphHandler.lambda$handleRequest$0(AbstractExecutionGraphHandler.java:87) ~[flink-dist_2.11-1.14.4.jar:1.14.4]
        at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:616) [?:1.8.0_291]
        at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:591) [?:1.8.0_291]
        at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:456) [?:1.8.0_291]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_291]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_291]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_291]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_291]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_291]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_291]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_291]

原因:flink 版本≤1.14.4 序列化bug

解决:升级版本到1.14.5 1.15.0,不过release还没发布-20220524[FLINK-25904] NullArgumentException when accessing checkpoint stats on standby JobManager - ASF JIRA

flink集群问题flink错误本-错误记录_大数据男的博客-CSDN博客_flink 错误日志查看

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Flink standalone集群搭建步骤如下: 1. 下载Flink安装包并解压缩到指定目录。 2. 配置Flink集群的masters和workers节点,可以在conf目录下的masters和workers文件中进行配置。 3. 启动Flink集群的masters节点,可以使用bin/start-cluster.sh命令启动。 4. 启动Flink集群的workers节点,可以使用bin/taskmanager.sh start命令启动。 5. 验证Flink集群是否正常运行,可以使用bin/flink list命令查看当前运行的Flink作业。 6. 在Flink集群中提交作业,可以使用bin/flink run命令提交作业。 7. 监控Flink集群的运行状态,可以使用Flink的Web UI或者JMX监控工具进行监控。 以上就是Flink standalone集群搭建的基本步骤,希望对您有所帮助。 ### 回答2: Apache Flink是一个处理流和批量数据的通用分布式计算引擎,可在大规模数据集上快速实现低延迟和高吞吐量。Flink提供了一个Standalone集群模式,使开发人员可以在自己的本地机器上测试和验证他们的应用程序,而无需构建一个完整的分布式环境。在本文中,我们将介绍如何搭建一个Flink Standalone集群。 1. 确保你的环境满足Flink的要求,比如安装Java环境等。 2. 下载Flink二进制文件。从Flink官网下载最新的tar文件,然后解压到一个目录下。 3. 配置Flink。打开conf/flink-conf.yaml文件,配置Flink的参数,比如jobmanager.rpc.address(JobManager监听的主机地址),taskmanager.numberOfTaskSlots(每个TaskManager能够执行的任务数)等。 4. 启动JobManager。在Flink的bin目录下执行以下命令: ./start-cluster.sh 这将启动JobManager和TaskManager进程。 5. 访问Flink Web Dashboard。在浏览器中输入http://localhost:8081,可以访问Flink Web Dashboard。这里可以查看集群的状态、运行中的任务、日志等。 6. 启动应用程序。使用Flink提供的运行脚本(bin/flink run)来提交应用程序。 7. 观察应用程序的运行状态。可以在Flink Web Dashboard中查看应用程序的运行状态和日志,还可以监控各种指标,如吞吐量、延迟、资源使用情况等。 8. 停止集群。在bin目录下执行以下命令: ./stop-cluster.sh 这将停止JobManager和TaskManager进程。 总之,通过Flink Standalone集群,您可以在本地机器上测试和验证您的应用程序,并且几乎没有任何成本。值得注意的是,Standalone集群并不适合生产环境,但当您需要在本地机器上调试应用程序时,它是一个很好的选择。 ### 回答3: Apache Flink是一个开源的分布式流处理系统。它以高效、可伸缩和容错为设计目标,因此广泛应用于大数据领域。Flink可以运行在各种集群上,包括Hadoop YARN和Apache Mesos等。在本文中,我们将讨论如何在Flink standalone集群上搭建分布式流处理系统。 Flink standalone集群搭建的准备工作: 在搭建Flink standalone集群之前,需要确保已经完成以下准备工作: 1. 安装Java 8或更高版本。 2. 下载Flink发行版,并解压缩至安装目录。 Flink standalone集群搭建的步骤: 1. 在主节点上启动Flink集群管理器。在Flink所在目录下,输入以下命令: ./bin/start-cluster.sh 2. 查看集群状态。在Flink所在目录下,输入以下命令: ./bin/flink list 如果输出结果为空,则说明集群状态正常。 3. 在从节点上启动TaskManager。在从节点所在机器上,输入以下命令: ./bin/taskmanager.sh start 4. 查看TaskManager状态。在从节点所在机器上,输入以下命令: ./bin/taskmanager.sh status 如果输出结果为“正常运行”,则说明TaskManager已经成功启动。 5. 提交Flink作业。在Flink所在目录下,输入以下命令: ./bin/flink run ./examples/streaming/SocketWindowWordCount.jar --port 9000 其中,SocketWindowWordCount.jar是一个简单的Flink作业,用于计算流式数据的词频统计。 6. 监控作业运行情况。在浏览器中输入以下地址: http://localhost:8081 可以查看作业的运行状态、性能指标等信息。 总结: 通过以上步骤,我们已经成功搭建了Flink standalone集群,并提交了一个简单的流处理作业。需要注意的是,本文仅提供了基础的搭建步骤,实际生产环境中还需要进行更加细致的配置和管理。同时,Flink具有丰富的API和生态系统,可以灵活应对不同的数据处理场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值