docker 部署flink和遇到webui 下taskmanager的无stdout 打印解决

这篇具有很好参考价值的文章主要介绍了docker 部署flink和遇到webui 下taskmanager的无stdout 打印解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

部署教程

# 拉取镜像
$ docker pull flink:1.13.6-scala_2.12-java8
# 设置FLINK_PROPERTIES, 这里我设置了slot的插槽数,需要在创建容器的时候就进行设置,
# 之后进入到容器里面的flink-conf.yaml里面再进行修改重启是没有用的,默认是1
$ FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager 
taskmanager.numberOfTaskSlots: 8 
"
$ docker network create flink-network
# 创建容器运行 jobmanager
$ docker run -d\
    --name=jobmanager \
    --network flink-network \
    --publish 8081:8081 \
    --env FLINK_PROPERTIES="${FLINK_PROPERTIES}" \
    flink:1.13.6-scala_2.12-java8 jobmanager
# 创建容器运行 taskmanager 
$ docker run -d\
    --name=taskmanager \
    --network flink-network \
    --env FLINK_PROPERTIES="${FLINK_PROPERTIES}" \
    flink:1.13.6-scala_2.12-java8 taskmanager
# 查看容器是否在运行,两个进程都在运行就可以在ip:8081下进入webui界面进行查看
$ docker ps

问题1:webui界面 有log打印但是没有stdout 输出

这个问题的解决办法我网上参考了很多教程,在下面这个教程找到了一点思路

https://blog.csdn.net/Allocator/article/details/106858679

我跟他的情况稍有不一样:

1. 他是log和stdout都没有显示,我是有log显示但是没有stdout显示

2. flink 的版本不一样,所以里面的一些脚本不太一致,按照他的方法进行改动导致我taskmanager启动不了

但是还是给了我一些思路,下面是排查过程,不感兴趣的可以跳过

  1. webui界面查看stdout的请求:我之前的错误,不是下面这个,之前的错误异常大概是找不到.out文件这样的(我懒得复现,就口头说了)大概就是没有生成.out文件,查看log界面的请求,是有返回的。

docker 部署flink和遇到webui 下taskmanager的无stdout 打印解决,docker,flink

2. 当我按照上面的思路,把docker-entrypoint.sh 的start-foregroud  改成start  且在最后一行添加

exec /bin/bash -c "tail -f $FLINK_HOME/log/*.log"  之后,我的taskmanager起不来,日志是这样的。

docker 部署flink和遇到webui 下taskmanager的无stdout 打印解决,docker,flink

3. 到这里我很感谢原博主提供的思路,查找原因在哪,以及为什么要添加最后一行,观察上面的日志我猜测,大概是没有执行到最后一行的代码,所以导致容器判断没有程序在运行,所以自己退出了,所以下面是我的修改

/docker-entrypoint.sh

docker 部署flink和遇到webui 下taskmanager的无stdout 打印解决,docker,flink

通过查找日志打印的   “daemon on host”  定位到了/opt/flink/bin/flink-daemon.sh 文件,在执行java命令的下面添加了exec /bin/bash -c "tail -f $FLINK_HOME/log/*.log"  命令  然后保存配置文件,传到容器里面。然后重启,就可以发现log和stdout显示就都有了,至少我实测是这样的(docker里面修改配置的命令我下面会提到)

docker 部署flink和遇到webui 下taskmanager的无stdout 打印解决,docker,flink

 问题二:  通过修改flink-conf.yaml 里面的taskmanager.numberOfTaskSlots 来改动slot的数量不生效

这块我通过修改 flink-conf.yaml的taskmanager.numberOfTaskSlots: 8配置,然后保存重启,发现不生效,然后我查看容器里面这个文件发现又被改成了 默认的1,然后看了一下日志,这个选项是通过命令行进行指定的

docker 部署flink和遇到webui 下taskmanager的无stdout 打印解决,docker,flink

 所以修改有两个途径:

1. 修改docker-compose.yml 里面的taskmanager.numberOfTaskSlots 配置,但是这个还要重新build镜像太麻烦了,我没用

docker 部署flink和遇到webui 下taskmanager的无stdout 打印解决,docker,flink

 2. 观察上面可以发现它使用了FLINK_PROPERTIES 变量,这个是可以通过外部传入的,所以可以通过这个变量进行修改  修改步骤放在了部署教程里面,这里就不赘述了。

docker 容器里面没有vi 怎么修改配置文件

我也是参考这个文章的Docker修改容器内部文件的方法_docker内部如何修改文件_Miracle42的博客-CSDN博客

上面用到的两个docker-entrypoint.sh和flink-daemon.sh的文件传输命令,我贴在这里,需要的自取

# 获取镜像内部的文件,注意我这里需要创建  flink目录
docker cp jobmanager:/docker-entrypoint.sh ./flink/docker-entrypoint.sh
docker cp jobmanager:/opt/flink/bin/flink-daemon.sh ./flink/flink-daemon.sh
# 覆盖镜像内部的文件
docker cp ./flink/docker-entrypoint.sh taskmanager:/docker-entrypoint.sh
docker cp ./flink/flink-daemon.sh taskmanager:/opt/flink/bin/flink-daemon.sh

 完结撒花文章来源地址https://www.toymoban.com/news/detail-820172.html

到了这里,关于docker 部署flink和遇到webui 下taskmanager的无stdout 打印解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flink源码之TaskManager启动流程

    从启动命令flink-daemon.sh可以看出TaskManger入口类为org.apache.flink.runtime.taskexecutor.TaskManagerRunner 在TaskManagerRunner构造函数中,可以看出与JobManger类似,也是先构造出一些公共服务: 这些服务在构造TaskExecutor时作为构造函数参数传入 构造TaskExecutor前会先构造TaskManagerServices辅助Task

    2024年02月13日
    浏览(33)
  • 关于Flink,TaskManager日志问题的一个记录

    疑问:不知道大家有和我一样,开发完的flink代码推送到flink集群上执行的时候log.info(xxxx)打印的日志不会打印到task-manager节点上去(在IDEA上执行可以打印日志到控制台上),为此一直在困扰了,经过一系列的尝试,终于在java和scala中实现log.info(xxx)打印到task-manager节点上。 java代

    2024年02月16日
    浏览(40)
  • flink任务内存调优,TaskManager、JobManager内存配置

            Flink是基于java的JVM运行,拥有高效的数据处理能力,但是考虑到用户在 Flink 上运行的应用的多样性,尽管flink框架已经为所有配置项提供合理的默认值,仍无法满足所有情况下的需求。 为了给用户生产提供最大化的价值, Flink 允许用户在整体上以及细粒度上对集

    2024年02月06日
    浏览(47)
  • 【大数据】Flink 内存管理(四):TaskManager 内存分配(实战篇)

    《 Flink 内存管理 》系列(已完结),共包含以下 4 篇文章: Flink 内存管理(一):设置 Flink 进程内存 Flink 内存管理(二):JobManager 内存分配(含实际计算案例) Flink 内存管理(三):TaskManager 内存分配(理论篇) Flink 内存管理(四):TaskManager 内存分配(实战篇) 😊

    2024年03月13日
    浏览(55)
  • go语言将cmd stdout和stderr作为字符串返回而不是打印到控制台

    从 golang 应用程序中执行 bash 命令,现在 stdout 和 stderr 直接进入控制台: 如果 bash 命令太慢( killInMilliSeconds 参数),程序应该保持其终止 bash 命令的能力。 希望 stdout 和 stderr 作为字符串变量从 runBashCommandAndKillIfTooSlow 函数返回,而不立即打印到控 制台,如何实现。 将输出设

    2024年01月23日
    浏览(56)
  • flink的异常concurrent.TimeoutException: Heartbeat of TaskManager with id的解决

    在使用flink进行集成测试时,我们会使用MiniClusterWithClientResource类,但是当我们断点导致在某个方法执行的时间比较长时,会有错误发生,那么该如何解决这个错误呢? 其实关键的配置是heartbeat.timeout,这个错误是JobManager抛出的,意思是和某个TaskManager的心跳中断超过了指定的

    2024年02月03日
    浏览(40)
  • cdh6.3.2 Flink On Yarn taskmanager任务分配倾斜问题的解决办法

    Flink On Yarn任务启动 CDH:6.3.2 Flink:1.13.2 Hadoop:3.0.0 在使用FLink on Yarn调度过程中,发现taskmanager总是分配在集中的几个节点上,集群有11个节点,但每个任务启动,只用到两三个节点,导致这几台服务器负载过高,其他节点又比较空闲。 1、yarn.scheduler.fair.assignmultiple 2、yarn.s

    2024年02月12日
    浏览(44)
  • 如何使用 Docker 部署 FreeGPT-WebUI:一个简单的教程

    目录 1. FreeGPT-WebUI 项目简介 2. 安装 Docker 3. 从 Docker Hub 拉取 FreeGPT-WebUI 镜像 4. 使用 Docker 运行 FreeGPT-WebUI 应用程序 5. 访问 FreeGPT-WebUI 应用程序 总结 在本教程中,我们将了解如何使用 Docker 部署 FreeGPT-WebUI,一个基于 Python 的开源项目,它为 GPT 模型提供了一个简单的 Web 用户界

    2024年02月16日
    浏览(52)
  • docker部署jenkins遇到常见问题

    最近在用docker搭建jenkins,来完成项目部署,过程中碰到的问题记录如下: 1、从git中拉去代码到jenkins中 2、将拉去的代码使用maven 构建 3、将maven生成的jar包推送到目标服务器 4、使用shell脚本在目标服务器上运行 配置目标服务器的环境变量时 系统配置中Publish over SSH模块下 使

    2024年02月05日
    浏览(67)
  • Docker 部署 Flink 集群环境

    Flink 部署笔记: Ubuntu 环境下部署 Flink 集群环境 Docker 部署 Flink 集群环境 kubernetes(K8S) 部署 Flink 集群环境 下面的1、2两个方法选其一即可。 创建网络 配置属性 在命令行界面直接输入。 启动jobmanager容器 启动taskmanager容器 可启动一个或多个。 准备工作 创建flink-docker文件夹,

    2024年02月02日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包