Skip to content

HBASE-28216 HDFS erasure coding support for table data dirs - #5579

Merged
bbeaudreault merged 7 commits into
apache:masterfrom
HubSpot:HBASE-28216
Dec 19, 2023
Merged

HBASE-28216 HDFS erasure coding support for table data dirs#5579
bbeaudreault merged 7 commits into
apache:masterfrom
HubSpot:HBASE-28216

Conversation

@bbeaudreault

Copy link
Copy Markdown
Contributor

Since we require hadoop-3 for master and branch-3, I can use the EC APIs directly. If we want to backport to branch-2, we'll need to figure out how to do this with reflection.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@jojochuangjojochuang left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. One question: will hbase shell show erasure coding policy of a table too?

@bbeaudreault

Copy link
Copy Markdown
ContributorAuthor

Great question! That actually slipped my mind and I will get that working next week

@Apache-HBase

This comment was marked as off-topic.


@BeforeClass
public static void beforeClass() throws Exception {
UTIL.startMiniDFSCluster(6); // 6 necessary for RS-6-3-1024k

@NihalJainNihalJainDec 17, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment not related to test:
Just wondering, what happens if some one mistakenly sets tis policy on a cluster with less than 6 nodes? Can the table/system be recovered/fixed?
Also, do we have any checks to ensure ECP cannot be configured if this condition is not satisfied? Is it worth adding?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great question. Typically a hdfs client will fail to write in this case (it would actually be better to have at least 9 nodes as 6 nodes provide no redundancy). In the case of HBase, it looks like compaction will fail, in which case administrator will need to step in and update the EC policy of the table.

@jojochuangjojochuangDec 19, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To check if the EC policy is compliant with rack/host setup, check out these two jiras:
https://issues.apache.org/jira/browse/HDFS-14061
https://issues.apache.org/jira/browse/HDFS-12946

It's going to be a sizeable change so I'd suggest to leave that out of this PR.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh ok, I didn't see those. For now I implemented a check in TableDescriptorChecker which sets the requested policy on a temp dir, and then tries to write to the temp dir. As you said, the write will fail. I have a test to validate that as well.

Will look at those 2 jiras for a follow-up improvement.

@NihalJain

Copy link
Copy Markdown
Contributor

Hi @bbeaudreault thanks for the PR, overall looks good. Also have posted a few questions/reviews. Please let me know of your opinion on same.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@bbeaudreault

Copy link
Copy Markdown
ContributorAuthor

Thanks for the review @NihalJain! I believe I covered all of your feedback. I also made sure it works in the shell @jojochuang.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@Apache-HBase

This comment was marked as outdated.

@NihalJain

Copy link
Copy Markdown
Contributor

Hi @bbeaudreault added a new comment, please have a look. Otherwise changes looks good and all previous feedbacks seemed to be covered. Thanks :)

@NihalJain

Copy link
Copy Markdown
Contributor

+1 to the change.

Just realized, we may want to add sample command which sets EC in doc section of create.rb and alter.rb. We usually add those for any new feature that we add. Or could be done as part of documentation story as well.

@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 37sDocker mode activated.
_ Prechecks _
+1 💚dupname0m 1sNo case conflicting files found.
+0 🆗prototool0m 0sprototool was not available.
+1 💚hbaseanti0m 0sPatch does not have any anti-patterns.
+1 💚@author0m 0sThe patch does not contain any @author tags.
_ master Compile Tests _
+0 🆗mvndep0m 24sMaven dependency ordering for branch
+1 💚mvninstall4m 3smaster passed
+1 💚compile5m 14smaster passed
+1 💚checkstyle1m 23smaster passed
+1 💚spotless0m 56sbranch has no errors when running spotless:check.
+1 💚spotbugs6m 41smaster passed
-0 ⚠️patch2m 34sUsed diff version of patch file. Binary files and potentially other changes not applied. Please rebase and squash commits if necessary.
_ Patch Compile Tests _
+0 🆗mvndep0m 11sMaven dependency ordering for patch
+1 💚mvninstall4m 16sthe patch passed
+1 💚compile6m 22sthe patch passed
+1 💚cc6m 22sthe patch passed
+1 💚javac6m 22sthe patch passed
+1 💚checkstyle1m 22sthe patch passed
-0 ⚠️rubocop0m 11sThe patch generated 1 new + 742 unchanged - 0 fixed = 743 total (was 742)
+1 💚whitespace0m 0sThe patch has no whitespace issues.
+1 💚hadoopcheck13m 40sPatch does not cause any errors with Hadoop 3.2.4 3.3.6.
+1 💚hbaseprotoc2m 19sthe patch passed
+1 💚spotless1m 2spatch has no errors when running spotless:check.
+1 💚spotbugs7m 45sthe patch passed
_ Other Tests _
+1 💚asflicense0m 46sThe patch does not generate ASF License warnings.
66m 6s
SubsystemReport/Notes
DockerClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5579/6/artifact/yetus-general-check/output/Dockerfile
GITHUB PR#5579
Optional Testsdupname asflicense javac spotbugs hadoopcheck hbaseanti spotless checkstyle compile cc hbaseprotoc prototool rubocop
unameLinux a3a03ab33af7 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personalitydev-support/hbase-personality.sh
git revisionmaster / 53e01b2
Default JavaEclipse Adoptium-11.0.17+8
rubocophttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5579/6/artifact/yetus-general-check/output/diff-patch-rubocop.txt
Max. process+thread count81 (vs. ulimit of 30000)
modulesC: hbase-protocol-shaded hbase-client hbase-server hbase-shell U: .
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5579/6/console
versionsgit=2.34.1 maven=3.8.6 spotbugs=4.7.3 rubocop=1.37.1
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@bbeaudreault

Copy link
Copy Markdown
ContributorAuthor

+1 to the change.

Just realized, we may want to add sample command which sets EC in doc section of create.rb and alter.rb. We usually add those for any new feature that we add. Or could be done as part of documentation story as well.

If you don't mind, I might file a new jira for this. I took a look, and yes we put a bunch of examples in there but there doesn't seem to be any rhyme or reason. I wonder if we should improve the help text to list the possible options explicitly. We already hardcode the supported options in admin.rb -- update_tdb_from_arg, so it seems like we could refactor that a bit to print them to the help text.

@NihalJain

Copy link
Copy Markdown
Contributor

If you don't mind, I might file a new jira for this.

Sounds good. 🚀

@jojochuangjojochuang left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM from my side. There are some comments that are worth addressing in follow jiras.

@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 28sDocker mode activated.
-0 ⚠️yetus0m 3sUnprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+0 🆗mvndep0m 39sMaven dependency ordering for branch
+1 💚mvninstall3m 3smaster passed
+1 💚compile1m 47smaster passed
+1 💚shadedjars5m 14sbranch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 52smaster passed
-0 ⚠️patch6m 32sUsed diff version of patch file. Binary files and potentially other changes not applied. Please rebase and squash commits if necessary.
_ Patch Compile Tests _
+0 🆗mvndep0m 11sMaven dependency ordering for patch
+1 💚mvninstall2m 39sthe patch passed
+1 💚compile1m 47sthe patch passed
+1 💚javac1m 47sthe patch passed
+1 💚shadedjars5m 13spatch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 53sthe patch passed
_ Other Tests _
+1 💚unit0m 34shbase-protocol-shaded in the patch passed.
+1 💚unit1m 26shbase-client in the patch passed.
+1 💚unit216m 10shbase-server in the patch passed.
+1 💚unit7m 42shbase-shell in the patch passed.
253m 0s
SubsystemReport/Notes
DockerClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5579/6/artifact/yetus-jdk11-hadoop3-check/output/Dockerfile
GITHUB PR#5579
Optional Testsjavac javadoc unit shadedjars compile
unameLinux 8c2b59e08fe1 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personalitydev-support/hbase-personality.sh
git revisionmaster / 53e01b2
Default JavaEclipse Adoptium-11.0.17+8
Test Resultshttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5579/6/testReport/
Max. process+thread count4294 (vs. ulimit of 30000)
modulesC: hbase-protocol-shaded hbase-client hbase-server hbase-shell U: .
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5579/6/console
versionsgit=2.34.1 maven=3.8.6
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase

Copy link
Copy Markdown

🎊 +1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 25sDocker mode activated.
-0 ⚠️yetus0m 3sUnprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+0 🆗mvndep0m 13sMaven dependency ordering for branch
+1 💚mvninstall2m 32smaster passed
+1 💚compile1m 30smaster passed
+1 💚shadedjars5m 14sbranch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 52smaster passed
-0 ⚠️patch6m 30sUsed diff version of patch file. Binary files and potentially other changes not applied. Please rebase and squash commits if necessary.
_ Patch Compile Tests _
+0 🆗mvndep0m 12sMaven dependency ordering for patch
+1 💚mvninstall2m 16sthe patch passed
+1 💚compile1m 32sthe patch passed
+1 💚javac1m 32sthe patch passed
+1 💚shadedjars5m 11spatch has no errors when building our shaded downstream artifacts.
+1 💚javadoc0m 49sthe patch passed
_ Other Tests _
+1 💚unit0m 25shbase-protocol-shaded in the patch passed.
+1 💚unit1m 21shbase-client in the patch passed.
+1 💚unit225m 25shbase-server in the patch passed.
+1 💚unit7m 15shbase-shell in the patch passed.
259m 34s
SubsystemReport/Notes
DockerClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5579/6/artifact/yetus-jdk8-hadoop3-check/output/Dockerfile
GITHUB PR#5579
Optional Testsjavac javadoc unit shadedjars compile
unameLinux 97ebebb22853 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build toolmaven
Personalitydev-support/hbase-personality.sh
git revisionmaster / 53e01b2
Default JavaTemurin-1.8.0_352-b08
Test Resultshttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5579/6/testReport/
Max. process+thread count4683 (vs. ulimit of 30000)
modulesC: hbase-protocol-shaded hbase-client hbase-server hbase-shell U: .
Console outputhttps://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5579/6/console
versionsgit=2.34.1 maven=3.8.6
Powered byApache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@bbeaudreault
bbeaudreault merged commit 9f0625c into apache:masterDec 19, 2023
@bbeaudreault

Copy link
Copy Markdown
ContributorAuthor

Thank you both for the reviews!

@bbeaudreault
bbeaudreault deleted the HBASE-28216 branch December 19, 2023 19:54
bbeaudreault added a commit that referenced this pull request Dec 19, 2023
Signed-off-by: Nihal Jain <nihaljain@apache.org>
Signed-off-by: Wei-Chiu Chuang <weichiu@apache.org>
bbeaudreault added a commit to HubSpot/hbase that referenced this pull request Dec 19, 2023
)
Signed-off-by: Nihal Jain <nihaljain@apache.org>
Signed-off-by: Wei-Chiu Chuang <weichiu@apache.org>
bbeaudreault added a commit to HubSpot/hbase that referenced this pull request Jan 2, 2024
…ata dirs (apache#5579)
Signed-off-by: Nihal Jain <nihaljain@apache.org>
Signed-off-by: Wei-Chiu Chuang <weichiu@apache.org>
kadirozde pushed a commit to kadirozde/hbase that referenced this pull request Jan 5, 2024
)
Signed-off-by: Nihal Jain <nihaljain@apache.org>
Signed-off-by: Wei-Chiu Chuang <weichiu@apache.org>
bbeaudreault added a commit to HubSpot/hbase that referenced this pull request Jan 14, 2024
)
Signed-off-by: Nihal Jain <nihaljain@apache.org>
Signed-off-by: Wei-Chiu Chuang <weichiu@apache.org>
Sign up for freeto 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

@bbeaudreault@Apache-HBase@NihalJain@jojochuang