Hadoop Flink 1.6 bucketing sink HDFS文件卡在中。正在进行

Hadoop Flink 1.6 bucketing sink HDFS文件卡在中。正在进行,hadoop,apache-kafka,hdfs,apache-flink,flink-streaming,Hadoop,Apache Kafka,Hdfs,Apache Flink,Flink Streaming,我正在将Kafka数据流写入HDFS路径中的bucketing接收器。卡夫卡给出了字符串数据。使用FlinkKafkaConsumer010从卡夫卡消费 -rw-r--r-- 3 ubuntu supergroup 4097694 2018-10-19 19:16 /streaming/2018-10-19--19/_part-0-1.in-progress -rw-r--r-- 3 ubuntu supergroup 3890083 2018-10-19 19:16 /st

我正在将Kafka数据流写入HDFS路径中的bucketing接收器。卡夫卡给出了字符串数据。使用FlinkKafkaConsumer010从卡夫卡消费

-rw-r--r--   3 ubuntu supergroup    4097694 2018-10-19 19:16 /streaming/2018-10-19--19/_part-0-1.in-progress
-rw-r--r--   3 ubuntu supergroup    3890083 2018-10-19 19:16 /streaming/2018-10-19--19/_part-1-1.in-progress
-rw-r--r--   3 ubuntu supergroup    3910767 2018-10-19 19:16 /streaming/2018-10-19--19/_part-2-1.in-progress
-rw-r--r--   3 ubuntu supergroup    4053052 2018-10-19 19:16 /streaming/2018-10-19--19/_part-3-1.in-progress

只有当我使用一些映射函数动态操作流数据时,才会发生这种情况。如果我直接将流写入HDFS,它的工作就很好了。知道为什么会这样吗?我使用的是Flink 1.6.1、Hadoop 3.1.1和Oracle JDK1.8。这种情况通常在禁用检查点时发生


运行带有映射功能的作业时,是否可以检查检查点设置?看起来您已经为直接写入HDFS的作业启用了检查点。

此情况通常在禁用检查点时发生


运行带有映射功能的作业时,是否可以检查检查点设置?看起来您已经为直接写入HDFS的作业启用了检查点。

这个问题有点晚了,但我也遇到了类似的问题。 我有一个案例类的地址

case class Address(val i: Int)
例如,我从带有地址编号的集合中读取源代码

    env.fromCollection(Seq(new Address(...), ...)) 

    ...
    val customAvroFileSink = StreamingFileSink
      .forBulkFormat(
        new Path("/tmp/data/"),
        ParquetAvroWriters.forReflectRecord(classOf[Address]))
      .build()
    ... 
    xxx.addSink(customAvroFileSink)
启用检查点后,我的拼花地板文件也将以进行中结束


我发现Flink在触发检查点之前完成了这个过程,所以我的结果从未完全刷新到磁盘上。在我将检查点间隔更改为较小的数字后,拼花不再进行。

这个问题有点晚了,但我也遇到了类似的问题。 我有一个案例类的地址

case class Address(val i: Int)
例如,我从带有地址编号的集合中读取源代码

    env.fromCollection(Seq(new Address(...), ...)) 

    ...
    val customAvroFileSink = StreamingFileSink
      .forBulkFormat(
        new Path("/tmp/data/"),
        ParquetAvroWriters.forReflectRecord(classOf[Address]))
      .build()
    ... 
    xxx.addSink(customAvroFileSink)
启用检查点后,我的拼花地板文件也将以进行中结束


我发现Flink在触发检查点之前完成了这个过程,所以我的结果从未完全刷新到磁盘上。将检查点间隔更改为较小的数字后,拼花不再进行。

我遇到了类似的问题,启用检查点并将状态后端从默认的
MemoryStateBackend
更改为
FsStateBackend
。在我的例子中,检查点失败是因为
MemoryStateBackend
maxStateSize
太小,以至于其中一个操作的状态无法放入内存

StateBackend stateBackend = new FsStateBackend("file:///home/ubuntu/flink_state_backend");
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment()
    .enableCheckpointing(Duration.ofSeconds(60).toMillis())
    .setStateBackend(stateBackend);

我遇到了类似的问题,启用检查点并将状态后端从默认的
MemoryStateBackend
更改为
fsstatebend
。在我的例子中,检查点失败是因为
MemoryStateBackend
maxStateSize
太小,以至于其中一个操作的状态无法放入内存

StateBackend stateBackend = new FsStateBackend("file:///home/ubuntu/flink_state_backend");
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment()
    .enableCheckpointing(Duration.ofSeconds(60).toMillis())
    .setStateBackend(stateBackend);

我将环境配置为
env.enableCheckpointing(5*1000*60)但是我得到的输出是
.part-0-138.inprogress.91eaf4ce-5385-46cd-b6ac-3d1b27c5b550
我将环境配置为
环境启用检查点(5*1000*60)但是我得到的输出是
。part-0-138。inprogress.91eaf4ce-5385-46cd-b6ac-3d1b27c5b550