项目场景:Flink StreamingFileSink写入hdfs,文件一直处于inprogress

使用StreamingFileSink写入hdfs时,文件一直处于inprogress,导致下游无法使用


问题描述

关键代码

 //sinkpublic static StreamingFileSink<String> getHdfsSinkWithFile(String path) {return StreamingFileSink.forRowFormat(new Path(path), new SimpleStringEncoder<String>(Constants.CHARSET_NAME)).withRollingPolicy(DefaultRollingPolicy.builder().withRolloverInterval(TimeUnit.MINUTES.toMinutes(5)).withInactivityInterval(TimeUnit.MINUTES.toMinutes(1)).withMaxPartSize(1024 * 1024 * 128).build()).withBucketAssigner(new DateTimeBucketAssigner<>("yyyy-MM-dd--HH",ZoneId.of("Asia/Shanghai"))).build();}//job...eventStream.addSink(getKafkaProducer(readValue("kafka.event.topic"))).setParallelism(12);env.execute("DataTohdfsJob");

原因分析:

  1. 写入文件已存在
  2. 没有checkpoint或checkpoint失败
  3. 并行度过大

解决方案:

  1. 由于我这是测试环境,我就直接把hdfs写入目录删除了,正式环境慎重考虑

  2. 关于checkpoint,官方文档特别指出StreamingFileSink需要做checkpoint,否则就会一直处于inprogress,所以需要开启checkpoint
    官方文档: 传送门

  3. env的全局并行度需要设为与running的subtasks数一致

    kafka source并行度与kafka的partition数保持一致设置的为10,但由于kakfa存在数据倾斜问题,只有三个partition有数据,导致存在七个finish 的 subtask ,影响 checkpoint ,checkpoint 不成功。

修改并行度后成功解决问题

问题二、

解决inprogress后,发现存在很多小文件,导致hadoop集群压力大,namenode查询速度慢

解决方案

主要是由checkpoint间隔太短造成的,试着将checkpoint间隔调大些

总结

文件一直处于inprogress归根结底就是checkpoint不成功。

使用StreamingFileSink 时需要启用 Checkpoint ,每次做 Checkpoint 时写入完成后,桶中临时文件转成正式文件。如果 Checkpoint 被禁用,部分文件(part file)将永远处于 ‘in-progress’ 或 ‘pending’ 状态,下游系统无法安全地读取。

Flink StreamingFileSink写入hdfs,文件一直处于inprogress相关推荐

  1. python读写hdfs文件的实用解决方案

      大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...

  2. springboot和flink 大数据实时写入hdfs

    一:flink 官网API: https://nightlies.apache.org/flink/flink-docs-release-1.13/zh/docs/connectors/datastr ...

  3. 【Hadoop】HDFS文件写入与文件读取过程

    HDFS文件写入与文件读取过程 1. 文件读取过程 2. 文件写入过程 1. 文件读取过程 详细过程: 客户端通过调用FileSystem对象的open()来读取希望打开的文件. Client向Nam ...

  4. hdfs文件写入kafka集群

    1. 场景描述 因新增Kafka集群,需要将hdfs文件写入到新增的Kafka集群中,后来发现文件不多,就直接下载文件到本地,通过Main函数写入了,假如需要部署到服务器上执行,需将文件读取这块稍做修 ...

  5. flink读取不到文件_日处理数据量超10亿:友信金服基于Flink构建实时用户画像系统的实践...

    简介: 友信金服公司推行全域的数据体系战略,通过打通和整合集团各个业务线数据,利用大数据.人工智能等技术构建统一的数据资产,如 ID-Mapping.用户标签等.友信金服用户画像项目正是以此为背景成立 ...

  6. HDFS文件读写流程

    1.HDFS文件读取流程: 2.HDFS写入文件流程 转载于:https://www.cnblogs.com/shijiaoyun/p/5790344.html

  7. hdfs mv命令_大数据入门:HDFS文件管理系统简介

    Hadoop作为大数据主流的基础架构选择,至今仍然占据着重要的地位,而基于Hadoop的分布式文件系统HDFS,也在大数据存储环节发挥着重要的支撑作用.今天的大数据入门分享,我们就主要来讲讲HDFS分 ...

  8. Hive数据分析——Spark是一种基于rdd(弹性数据集)的内存分布式并行处理框架,比于Hadoop将大量的中间结果写入HDFS,Spark避免了中间结果的持久化...

    转自:http://blog.csdn.net/wh_springer/article/details/51842496 近十年来,随着Hadoop生态系统的不断完善,Hadoop早已成为大数据事实上 ...

  9. 《深入理解大数据:大数据处理与编程实践》一一3.3 HDFS文件存储组织与读写...

    本节书摘来自华章计算机<深入理解大数据:大数据处理与编程实践>一书中的第3章,第3.3节,作者 主 编:黄宜华(南京大学)副主编:苗凯翔(英特尔公司),更多章节内容可以访问云栖社区&quo ...

  10. python读取HDFS文件

    2019独角兽企业重金招聘Python工程师标准>>> ###方法一:使用hdfs库读取HDFS文件 ###在读取数据时,要加上 encoding='utf-8',否则字符串前面会有 ...

最新文章

  1. windows下cipher和efsdump工具的初步使用
  2. ITK:从图像区域中随机选择像素而不进行替换
  3. 如何调试SAP CRM产品主数据应用后台ABAP端抛出的错误消息
  4. C# 系统环境变量读取
  5. ZREVRANK key member
  6. python多进程间通信
  7. AJAX - 浏览器支持
  8. hadoop 查看集群的网页监控状态
  9. C++与QT学习路线
  10. Ubuntu1804安装ROS(melodic版本)
  11. 利用Excel爬取网页数据
  12. MCU学习笔记_ARM Cortex M0_简介
  13. 如何养狗完整版 !-为了迎接我的大宝做好准备
  14. win10 电脑内存占用率过高解决
  15. ubuntu 内存清理【亲测有效】
  16. 任天堂国行 Switch OLED 版 评测
  17. TTL、CMOS、LVTTL、LVCMOS、LVDS
  18. VITA 49.0协议阅读笔记
  19. 暴力破解周边Wi-Fi密码
  20. mei yan xiao guo for android

热门文章

  1. 了解记录管理系统RMS
  2. 13讲项目实战内页滚动图效果实现
  3. 如何下载IAR历史版本
  4. 云计算机应用论文,关于云计算应用的研究(本科毕业论文)
  5. 为什么硅谷初级程序员工资堪比腾讯T3技术专家级
  6. 每日新知——MySQL索引类型及创建
  7. opencv图像对比度
  8. Matlab 划分网格,三维曲面,网格划分好之后还需要提取网格上的每个点的位置坐标,之后需要用这些点的坐标进行运算。望各位大佬解惑,感激不尽
  9. 正态总体均值假设检验
  10. 服务总线 开源_UltraESB企业服务总线将开源