Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HBASE-26045 Master control the global throughput of all compaction servers #3538

Closed
wants to merge 2 commits into from

Conversation

nyl3532016
Copy link
Contributor

@nyl3532016 nyl3532016 commented Jul 28, 2021

Compaction servers report compaction tasks to  master via heartbeat report. 
The report response has throughput control message and compaction server use this message to adjust compaction throughtput.
We can set total throughtput of all compaction servers via hbase shell commands.

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 2m 9s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 1s No case conflicting files found.
+0 🆗 prototool 0m 0s prototool was not available.
+1 💚 hbaseanti 0m 0s Patch does not have any anti-patterns.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
_ HBASE-25714 Compile Tests _
+0 🆗 mvndep 0m 27s Maven dependency ordering for branch
+1 💚 mvninstall 5m 21s HBASE-25714 passed
+1 💚 compile 9m 9s HBASE-25714 passed
+1 💚 checkstyle 3m 33s HBASE-25714 passed
+1 💚 spotbugs 10m 40s HBASE-25714 passed
_ Patch Compile Tests _
+0 🆗 mvndep 0m 12s Maven dependency ordering for patch
+1 💚 mvninstall 4m 2s the patch passed
+1 💚 compile 7m 7s the patch passed
+1 💚 cc 7m 7s the patch passed
+1 💚 javac 7m 7s the patch passed
-0 ⚠️ checkstyle 0m 28s hbase-client: The patch generated 1 new + 38 unchanged - 0 fixed = 39 total (was 38)
-0 ⚠️ checkstyle 1m 11s hbase-server: The patch generated 7 new + 6 unchanged - 0 fixed = 13 total (was 6)
-0 ⚠️ rubocop 0m 29s The patch generated 20 new + 656 unchanged - 0 fixed = 676 total (was 656)
+1 💚 whitespace 0m 0s The patch has no whitespace issues.
+1 💚 hadoopcheck 20m 24s Patch does not cause any errors with Hadoop 3.1.2 3.2.1 3.3.0.
+1 💚 hbaseprotoc 2m 57s the patch passed
+1 💚 spotbugs 10m 12s the patch passed
_ Other Tests _
+1 💚 asflicense 0m 53s The patch does not generate ASF License warnings.
89m 57s
Subsystem Report/Notes
Docker ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3538/1/artifact/yetus-general-check/output/Dockerfile
GITHUB PR #3538
Optional Tests dupname asflicense javac spotbugs hadoopcheck hbaseanti checkstyle compile cc hbaseprotoc prototool rubocop
uname Linux 6bcc747bc9d2 4.15.0-147-generic #151-Ubuntu SMP Fri Jun 18 19:21:19 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision HBASE-25714 / 85f0291
Default Java AdoptOpenJDK-1.8.0_282-b08
checkstyle https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3538/1/artifact/yetus-general-check/output/diff-checkstyle-hbase-client.txt
checkstyle https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3538/1/artifact/yetus-general-check/output/diff-checkstyle-hbase-server.txt
rubocop https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3538/1/artifact/yetus-general-check/output/diff-patch-rubocop.txt
Max. process+thread count 86 (vs. ulimit of 30000)
modules C: hbase-protocol-shaded hbase-client hbase-server hbase-thrift hbase-shell U: .
Console output https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3538/1/console
versions git=2.17.1 maven=3.6.3 spotbugs=4.2.2 rubocop=0.80.0
Powered by Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 0m 34s Docker mode activated.
-0 ⚠️ yetus 0m 5s Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ HBASE-25714 Compile Tests _
+0 🆗 mvndep 0m 23s Maven dependency ordering for branch
+1 💚 mvninstall 4m 40s HBASE-25714 passed
+1 💚 compile 3m 55s HBASE-25714 passed
+1 💚 shadedjars 8m 22s branch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 2m 27s HBASE-25714 passed
_ Patch Compile Tests _
+0 🆗 mvndep 0m 16s Maven dependency ordering for patch
+1 💚 mvninstall 4m 24s the patch passed
+1 💚 compile 3m 48s the patch passed
+1 💚 javac 3m 48s the patch passed
+1 💚 shadedjars 8m 10s patch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 2m 27s the patch passed
_ Other Tests _
+1 💚 unit 1m 1s hbase-protocol-shaded in the patch passed.
+1 💚 unit 1m 18s hbase-client in the patch passed.
+1 💚 unit 142m 19s hbase-server in the patch passed.
+1 💚 unit 4m 40s hbase-thrift in the patch passed.
+1 💚 unit 7m 17s hbase-shell in the patch passed.
199m 9s
Subsystem Report/Notes
Docker ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3538/1/artifact/yetus-jdk11-hadoop3-check/output/Dockerfile
GITHUB PR #3538
Optional Tests javac javadoc unit shadedjars compile
uname Linux f83a3a0d36ed 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision HBASE-25714 / 85f0291
Default Java AdoptOpenJDK-11.0.10+9
Test Results https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3538/1/testReport/
Max. process+thread count 3694 (vs. ulimit of 30000)
modules C: hbase-protocol-shaded hbase-client hbase-server hbase-thrift hbase-shell U: .
Console output https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3538/1/console
versions git=2.17.1 maven=3.6.3
Powered by Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase
Copy link

💔 -1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 0m 35s Docker mode activated.
-0 ⚠️ yetus 0m 5s Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ HBASE-25714 Compile Tests _
+0 🆗 mvndep 0m 22s Maven dependency ordering for branch
+1 💚 mvninstall 4m 25s HBASE-25714 passed
+1 💚 compile 3m 28s HBASE-25714 passed
+1 💚 shadedjars 8m 29s branch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 2m 7s HBASE-25714 passed
_ Patch Compile Tests _
+0 🆗 mvndep 0m 16s Maven dependency ordering for patch
+1 💚 mvninstall 4m 5s the patch passed
+1 💚 compile 3m 29s the patch passed
+1 💚 javac 3m 29s the patch passed
+1 💚 shadedjars 9m 22s patch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 2m 9s the patch passed
_ Other Tests _
+1 💚 unit 0m 52s hbase-protocol-shaded in the patch passed.
+1 💚 unit 1m 18s hbase-client in the patch passed.
-1 ❌ unit 155m 15s hbase-server in the patch failed.
+1 💚 unit 4m 14s hbase-thrift in the patch passed.
+1 💚 unit 7m 26s hbase-shell in the patch passed.
211m 11s
Subsystem Report/Notes
Docker ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3538/1/artifact/yetus-jdk8-hadoop3-check/output/Dockerfile
GITHUB PR #3538
Optional Tests javac javadoc unit shadedjars compile
uname Linux 5d39b79c2fbc 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision HBASE-25714 / 85f0291
Default Java AdoptOpenJDK-1.8.0_282-b08
unit https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3538/1/artifact/yetus-jdk8-hadoop3-check/output/patch-unit-hbase-server.txt
Test Results https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3538/1/testReport/
Max. process+thread count 3760 (vs. ulimit of 30000)
modules C: hbase-protocol-shaded hbase-client hbase-server hbase-thrift hbase-shell U: .
Console output https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3538/1/console
versions git=2.17.1 maven=3.6.3
Powered by Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@@ -2256,6 +2256,17 @@ void cloneTableSchema(TableName tableName, TableName newTableName, boolean prese
*/
boolean isCompactionOffloadEnabled() throws IOException;

/**
* update compaction server total throughput bound
* @param upperBound the total throughput upper bound of all compaction servers
Copy link
Contributor

Choose a reason for hiding this comment

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

When we talk of compaction servers here, are we talking about the new compaction server facility or are we talking about regionservers?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

we can control compaction throughtput on compactionServers, can not control regionservers

Copy link
Contributor

Choose a reason for hiding this comment

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

Most deploys will not use a compaction server suite. Is it correct then to talk of compaction servers in our Admin API? Should there be another channel for interacting with compaction servers? A CompactionServersAdmin ?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This method talk to master only, compaction servers get throughput control message through periodic heartbeat report

@nyl3532016
Copy link
Contributor Author

@Apache9 @saintstack Mind help take a look at your convenience.

Copy link
Contributor

@Apache9 Apache9 left a comment

Choose a reason for hiding this comment

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

So the algorithm here does not count for ongoing compactions, instead, just divide the quota evenly across different compaction servers? If there are 10 compaction server, but only one compaction server has ongoing compactions, it still can only use 1/10 of the quota?

* @return the now total throughput of all compaction servers
* @throws IOException if a remote or network exception occurs
*/
Map<String, Long> updateCompactionServerTotalThroughput(Long upperBound, Long lowerBound,
Copy link
Contributor

Choose a reason for hiding this comment

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

We have 'CompactionServer' in the method name, so this global control is only for compaction server? Region server can not have the same limit? And why Long, not long?

Copy link
Contributor Author

@nyl3532016 nyl3532016 Sep 10, 2021

Choose a reason for hiding this comment

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

Yes, We do not control regionserver's compaction throughtput in this PR (it is OK?), For HRegionserver can adjust their compaction throughtput via update_config shell commend, no need restart server. They implement ConfigurationObserver interface.

@nyl3532016
Copy link
Contributor Author

So the algorithm here does not count for ongoing compactions, instead, just divide the quota evenly across different compaction servers? If there are 10 compaction server, but only one compaction server has ongoing compactions, it still can only use 1/10 of the quota?

OK, let me promote the algorithm according to ongoing compactions

@nyl3532016 nyl3532016 changed the title HBASE-26045 Master control the global throughtput of all compaction servers HBASE-26045 Master control the global throughput of all compaction servers Sep 18, 2021
@Apache-HBase
Copy link

💔 -1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 0m 0s Docker mode activated.
-1 ❌ patch 0m 5s #3538 does not apply to HBASE-25714. Rebase required? Wrong Branch? See https://yetus.apache.org/documentation/in-progress/precommit-patchnames for help.
Subsystem Report/Notes
GITHUB PR #3538
Console output https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3538/2/console
versions git=2.17.1
Powered by Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

2 similar comments
@Apache-HBase
Copy link

💔 -1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 0m 0s Docker mode activated.
-1 ❌ patch 0m 5s #3538 does not apply to HBASE-25714. Rebase required? Wrong Branch? See https://yetus.apache.org/documentation/in-progress/precommit-patchnames for help.
Subsystem Report/Notes
GITHUB PR #3538
Console output https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3538/2/console
versions git=2.17.1
Powered by Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase
Copy link

💔 -1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 0m 0s Docker mode activated.
-1 ❌ patch 0m 5s #3538 does not apply to HBASE-25714. Rebase required? Wrong Branch? See https://yetus.apache.org/documentation/in-progress/precommit-patchnames for help.
Subsystem Report/Notes
GITHUB PR #3538
Console output https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-3538/2/console
versions git=2.17.1
Powered by Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.

@nyl3532016 nyl3532016 closed this Sep 18, 2021
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