## What is the purpose of the change

New StreamingFileSink ( introduced in 1.6 Flink version ) use 
HadoopRecoverableFsDataOutputStream wrapper to write data in HDFS.

HadoopRecoverableFsDataOutputStream is an wrapper on FSDataOutputStream to have 
an ability to restore from certain point of file after failure and continue 
write data. To achive this recover functionality the 
HadoopRecoverableFsDataOutputStream use "truncate" method which was introduced 
only in Hadoop 2.7 .

Unfortently there are a few official Hadoop distibutives which latast version 
still use Hadoop 2.6 (This distibutives: Cloudera, Pivotal HD ). As the result 
Flink can't work with this distibutives.

Flink declares that supported Hadoop from version 2.4.0 upwards 
(https://ci.apache.org/projects/flink/flink-docs-release-1.6/start/building.html#hadoop-versions)

I guess we should emulate the functionality of "truncate" method for older 
Hadoop versions.

This is possible fix . I would like to start discussion here. 
The fix of this issue is vital for us as Hadoop 2.6 users.

## Brief change log

  - Add new abstraction TruncateManager
  - Add Implementation for old Hadoop version ( LegacyTruncateManager)
  - Add Implementation for Hadoop 2.7 and upwards


## Verifying this change

This change contains only possible solution but currently without any test 
coverage.
Tests will be added after final consensus about implementation .

## Does this pull request potentially affect one of the following parts:

  - Dependencies (does it add or upgrade a dependency): (no)
  - The public API, i.e., is any changed class annotated with 
`@Public(Evolving)`: (no)
  - The serializers: ( no)
  - The runtime per-record code paths (performance sensitive): (don't know)
  - Anything that affects deployment or recovery: JobManager (and its 
components), Checkpointing, Yarn/Mesos, ZooKeeper: (yes)
  - The S3 file system connector: ( no)

## Documentation

  - Does this pull request introduce a new feature? (no, but I think it should 
be documented)
  - If yes, how is the feature documented? (not documented yet)


[ Full content available at: https://github.com/apache/flink/pull/6608 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to