Skip to content

[DO NOT MERGE] [RFC-15] Temporary PR to aid rebasing process#2395

Closed
vinothchandar wants to merge 45 commits intomasterfrom
rfc-15
Closed

[DO NOT MERGE] [RFC-15] Temporary PR to aid rebasing process#2395
vinothchandar wants to merge 45 commits intomasterfrom
rfc-15

Conversation

@vinothchandar
Copy link
Member

Tips

What is the purpose of the pull request

(For example: This pull request adds quick-start document.)

Brief change log

(for example:)

  • Modify AnnotationLocation checkstyle rule in checkstyle.xml

Verify this pull request

(Please pick either of the following options)

This pull request is a trivial rework / code cleanup without any test coverage.

(or)

This pull request is already covered by existing tests, such as (please describe tests).

(or)

This change added tests and can be verified as follows:

(example:)

  • Added integration tests for end-to-end.
  • Added HoodieClientWriteTest to verify the change.
  • Manually verified the change by running a job locally.

Committer checklist

  • Has a corresponding JIRA in PR title & commit

  • Commit message is descriptive of the change

  • CI is green

  • Necessary doc changes done or have another open PR

  • For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.

prashantwason and others added 30 commits October 6, 2020 12:04
Notable new classes:
 HoodieMetadata - The abstract interface through which the Metadata is accessed
 HoodieMetadataImpl - Implementation of Metadata as per RFC-15
 HoodieMetadataIndex - A HoodieIndex specialized for Metadata to speed up record tagging and improve metadata table performance
 HoodieMetadataPayload - Payload for Metadata Table with custom logic for record merging
 HoodieMetadataFileSystemView - File System View that uses Metadata Table instead of file listings
 metadataSchema.txt - The schema being used for metadata table
 - Fixed handling of CleanerPlan.
COW table rollback may delete files.
MOR table rollbacks may additionally append rollback blocks in LOG files. We track this via HoodieRollbackMetadata and update the metadata with new file size.
MarkerBasedRollbackStrategy needs to correctly provide the list of files for which rollback blocks were appended.
…dataset commit fails.

Next rollback will rollback the metadata table.
Config is used when opening the base and log files to decide the default paths for spillable map. So its better to create a default one.
Each type of metadata saved (FilesystemMetadata, ColumnIndexMetadata, etc.) will be a separate field with default null. The type of the record will identify the valid field. This way, we can grow the schema when new type of information is saved within in which still keeping it backward compatible.
…etadata table.

Choose only 1 partition for jsc as the number of records is low (hundreds to thousands). There is more overhead of creating large number of partitions for JavaRDD and it slows down operations like WorkloadProfile.
For the non-partitioned case, use "." as the name of the partition to prevent empty keys in HFile.
Brings in several improvements that help test rfc-15.
…e name of the partition and the latest base file id.
Multiple metrics were being published.
Simplified code by removing the usage of internal variables to track metric counts.
Code has been split into reader and writer side.
HoodieMetadata code to be accessed by using HoodieTable.metadata() to get instance of metdata for the table.
Code is serializable to allow executors to use the functionality.
…used to collect metrics from executors.

This helps create a stats dashboard which shows the metadata table improvements in real-time for production tables.
… the metadata table.

This is safer than full-fledged properties for the metadata table (like HoodieWriteConfig) as it makes burdensome to tune the metadata. With limited configuration, we can control the performance of the metadata table closely.
prashantwason and others added 15 commits October 29, 2020 22:33
…#2132)

This helps in removing reporter once the test has complete. Prevents log pollution from un-necessary metric logs.

- Added an API to shutdown the metrics reporter after tests.
…2266)

- moved MetadataReader to HoodieBackedTableMetadata, under the HoodieTableMetadata interface
 - moved MetadataWriter to HoodieBackedTableMetadataWriter, under the HoodieTableMetadataWriter
 - Pulled all the metrics into HoodieMetadataMetrics
 - Writer now wraps the metadata, instead of extending it
 - New enum for MetadataPartitionType
 - Streamlined code flow inside HoodieBackedTableMetadataWriter w.r.t initializing metadata state
- Changes the syncing model to only move over completed instants on data timeline
 - Syncing happens postCommit and on writeClient initialization
 - Latest delta commit on the metadata table is sufficient as the watermark for data timeline archival
 - Cleaning/Compaction use a suffix to the last instant written to metadata table, such that we keep the 1-1
 - .. mapping between data and metadata timelines.
 - Got rid of a lot of the complexity around checking for valid commits during open of base/log files
 - Tests now use local FS, to simulate more failure scenarios
 - Some failure scenarios exposed HUDI-1434, which is needed for MOR to work correctly
…d listing. (#2343)

* [HUDI-1469] Faster initialization of metadata table using parallelized listing which finds partitions and files in a single scan.
* MINOR fixes

Co-authored-by: Vinoth Chandar <vinoth@apache.org>
…able (#2342)

Co-authored-by: Ryan Pifer <ryanpife@amazon.com>
…file system (#2387)

Co-authored-by: Ryan Pifer <ryanpife@amazon.com>
…s through Hive/SparkSQL (#2366)

Co-authored-by: Ryan Pifer <ryanpife@amazon.com>
@vinothchandar vinothchandar deleted the rfc-15 branch May 10, 2021 21:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants