Skip to content

HBASE-23065 [hbtop] Top-N heavy hitter user and client drill downs - #722

Closed
ankitsinghal wants to merge 2 commits into
apache:masterfrom
ankitsinghal:HBASE-23065
Closed

HBASE-23065 [hbtop] Top-N heavy hitter user and client drill downs#722
ankitsinghal wants to merge 2 commits into
apache:masterfrom
ankitsinghal:HBASE-23065

Conversation

@ankitsinghal

Copy link
Copy Markdown
Contributor

No description provided.

@ankitsinghal

Copy link
Copy Markdown
ContributorAuthor

FYI @apurtell , @brfrn169

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@brfrn169brfrn169 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Left some comments for hbtop. Most of them are small nits. I have a question. It looks like this PR includes the changes of HBASE-15519, right? You are assuming that after committing the PR of HBASE-15519, we will commit this PR?

@brfrn169

Copy link
Copy Markdown
Member

And don't we need ClientModeTest?

@joshelserjoshelser left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Need to take this down locally and play with it too :)

Probably not a bad idea to also run this through a quick perf test to make sure no regressions come in (same way as the dependent user metrics change)

* @param countField Field which needs to be added with value 1 for each record
* @return records after selecting required fields and adding count field
*/
public static List<Record> selectModeFieldsAndAddCountField(List<FieldInfo> fieldInfos,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Instead of doing this in one fatal swoop, could you split this method into two parts?

pseudo-code-y

.map(Record::select)
.map(Record::addCountField)

I guess this would undo the optimization you're trying to make of copying Record objects?

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.

Yeah, Let me see if I can make it more readable.

Comment threadhbase-protocol-shaded/src/main/protobuf/ClusterStatus.proto Outdated
@ankitsinghal

Copy link
Copy Markdown
ContributorAuthor

Thank you @brfrn169 and @joshelser for the review. Have pushed the commit addressing most of the review comments.

@Apache-HBase

This comment has been minimized.

@apurtellapurtell 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.

One nit and a question. I defer comment on hbtop internal changes to @brfrn169

@ankitsinghal

Copy link
Copy Markdown
ContributorAuthor

Thanks a lot guys for the review @joshelser@brfrn169@apurtell , have updated the pull request as per the review comments.

@ankitsinghal

Copy link
Copy Markdown
ContributorAuthor

Need to take this down locally and play with it too :)

Probably not a bad idea to also run this through a quick perf test to make sure no regressions come in (same way as the dependent user metrics change)

./bin/ycsb run hbase20 -P workloads/workloada -s -threads 10 -p columnfamily=family

ycsb shows performance similar on single server cluster with and without patch.

without patch

[OVERALL], RunTime(ms), 52493
[OVERALL], Throughput(ops/sec), 19050.159068828223
[TOTAL_GCS_PS_Scavenge], Count, 73
[TOTAL_GC_TIME_PS_Scavenge], Time(ms), 123
[TOTAL_GC_TIME_%PS_Scavenge], Time(%), 0.23431695654658716
[TOTAL_GCS_PS_MarkSweep], Count, 1
[TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 32
[TOTAL_GC_TIME
%PS_MarkSweep], Time(%), 0.06096050902025032
[TOTAL_GCs], Count, 74
[TOTAL_GC_TIME], Time(ms), 155
[TOTAL_GC_TIME
%], Time(%), 0.2952774655668375
[READ], Operations, 468618
[READ], AverageLatency(us), 518.8190018309156
[READ], MinLatency(us), 144
[READ], MaxLatency(us), 105983
[READ], 95thPercentileLatency(us), 815
[READ], 99thPercentileLatency(us), 1395
[READ], Return=OK, 468618
[READ], Return=NOT_FOUND, 31339
[CLEANUP], Operations, 20
[CLEANUP], AverageLatency(us), 122.7
[CLEANUP], MinLatency(us), 0
[CLEANUP], MaxLatency(us), 2081
[CLEANUP], 95thPercentileLatency(us), 263
[CLEANUP], 99thPercentileLatency(us), 2081
[UPDATE], Operations, 500043
[UPDATE], AverageLatency(us), 513.8964949014385
[UPDATE], MinLatency(us), 171
[UPDATE], MaxLatency(us), 118143
[UPDATE], 95thPercentileLatency(us), 780
[UPDATE], 99thPercentileLatency(us), 1448
[UPDATE], Return=OK, 500043
[READ-FAILED], Operations, 31339
[READ-FAILED], AverageLatency(us), 401.0351957624685
[READ-FAILED], MinLatency(us), 122
[READ-FAILED], MaxLatency(us), 22671
[READ-FAILED], 95thPercentileLatency(us), 633
[READ-FAILED], 99thPercentileLatency(us), 1195

With Patch

[OVERALL], RunTime(ms), 51625
[OVERALL], Throughput(ops/sec), 19370.46004842615
[TOTAL_GCS_PS_Scavenge], Count, 77
[TOTAL_GC_TIME_PS_Scavenge], Time(ms), 133
[TOTAL_GC_TIME_%PS_Scavenge], Time(%), 0.2576271186440678
[TOTAL_GCS_PS_MarkSweep], Count, 1
[TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 25
[TOTAL_GC_TIME
%PS_MarkSweep], Time(%), 0.048426150121065374
[TOTAL_GCs], Count, 78
[TOTAL_GC_TIME], Time(ms), 158
[TOTAL_GC_TIME
%], Time(%), 0.30605326876513317
[READ], Operations, 383745
[READ], AverageLatency(us), 492.0543016847125
[READ], MinLatency(us), 119
[READ], MaxLatency(us), 124479
[READ], 95thPercentileLatency(us), 752
[READ], 99thPercentileLatency(us), 1380
[READ], Return=OK, 383745
[READ], Return=NOT_FOUND, 116557
[CLEANUP], Operations, 20
[CLEANUP], AverageLatency(us), 122.8
[CLEANUP], MinLatency(us), 0
[CLEANUP], MaxLatency(us), 2019
[CLEANUP], 95thPercentileLatency(us), 309
[CLEANUP], 99thPercentileLatency(us), 2019
[READ-FAILED], Operations, 116557
[READ-FAILED], AverageLatency(us), 420.47432586631436
[READ-FAILED], MinLatency(us), 122
[READ-FAILED], MaxLatency(us), 89279
[READ-FAILED], 95thPercentileLatency(us), 654
[READ-FAILED], 99thPercentileLatency(us), 1274
[UPDATE], Operations, 499698
[UPDATE], AverageLatency(us), 535.2963730092977
[UPDATE], MinLatency(us), 173
[UPDATE], MaxLatency(us), 135935
[UPDATE], 95thPercentileLatency(us), 801
[UPDATE], 99thPercentileLatency(us), 1561
[UPDATE], Return=OK, 499698

@Apache-HBase

This comment has been minimized.

@Apache-HBase

This comment has been minimized.

@brfrn169brfrn169 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I tested this locally and found some bugs. Left some comments for that.

I think this feature should be great for HBase administrators. Thank you! @ankitsinghal

@ankitsinghal

Copy link
Copy Markdown
ContributorAuthor

Thank you @brfrn169 for the review, Let me work on the review comments today.

@ankitsinghal

Copy link
Copy Markdown
ContributorAuthor

@brfrn169 , have taken the review comments in the latest push. Let me know how it looks?

@Apache-HBase

This comment has been minimized.

@Apache-HBase

Copy link
Copy Markdown

💔 -1 overall

VoteSubsystemRuntimeComment
+0 🆗reexec0m 32sDocker mode activated.
_ Prechecks _
+1 💚dupname0m 0sNo case conflicting files found.
+0 🆗prototool0m 1sprototool was not available.
+1 💚hbaseanti0m 0sPatch does not have any anti-patterns.
+1 💚@author0m 0sThe patch does not contain any @author tags.
+1 💚test4tests0m 0sThe patch appears to include 7 new or modified test files.
_ master Compile Tests _
+0 🆗mvndep0m 34sMaven dependency ordering for branch
+1 💚mvninstall5m 19smaster passed
+1 💚compile3m 23smaster passed
+1 💚checkstyle3m 1smaster passed
+1 💚shadedjars4m 33sbranch has no errors when building our shaded downstream artifacts.
+1 💚javadoc2m 18smaster passed
+0 🆗spotbugs4m 2sUsed deprecated FindBugs config; considering switching to SpotBugs.
+1 💚findbugs10m 25smaster passed
_ Patch Compile Tests _
+0 🆗mvndep0m 15sMaven dependency ordering for patch
+1 💚mvninstall4m 56sthe patch passed
+1 💚compile3m 20sthe patch passed
+1 💚cc3m 20sthe patch passed
+1 💚javac3m 20sthe patch passed
+1 💚checkstyle2m 59sthe patch passed
+1 💚whitespace0m 0sThe patch has no whitespace issues.
+1 💚shadedjars4m 34spatch has no errors when building our shaded downstream artifacts.
+1 💚hadoopcheck15m 39sPatch does not cause any errors with Hadoop 2.8.5 2.9.2 or 3.1.2.
+1 💚hbaseprotoc3m 21sthe patch passed
+1 💚javadoc2m 17sthe patch passed
+1 💚findbugs11m 26sthe patch passed
_ Other Tests _
+1 💚unit0m 42shbase-protocol-shaded in the patch passed.
+1 💚unit0m 32shbase-hadoop-compat in the patch passed.
+1 💚unit0m 41shbase-hadoop2-compat in the patch passed.
+1 💚unit0m 27shbase-protocol in the patch passed.
+1 💚unit1m 52shbase-client in the patch passed.
-1 ❌unit163m 15shbase-server in the patch failed.
+1 💚unit1m 7shbase-hbtop in the patch passed.
+1 💚asflicense3m 41sThe patch does not generate ASF License warnings.
259m 15s
SubsystemReport/Notes
DockerClient=19.03.5 Server=19.03.5 base: https://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-722/8/artifact/out/Dockerfile
GITHUB PR#722
Optional Testsdupname asflicense javac javadoc unit spotbugs findbugs shadedjars hadoopcheck hbaseanti checkstyle compile cc hbaseprotoc prototool
unameLinux 65e4d40f91f6 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64 GNU/Linux
Build toolmaven
Personality/home/jenkins/jenkins-slave/workspace/HBase-PreCommit-GitHub-PR_PR-722/out/precommit/personality/provided.sh
git revisionmaster / a3efa59
Default Java1.8.0_181
unithttps://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-722/8/artifact/out/patch-unit-hbase-server.txt
Test Resultshttps://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-722/8/testReport/
Max. process+thread count4685 (vs. ulimit of 10000)
modulesC: hbase-protocol-shaded hbase-hadoop-compat hbase-hadoop2-compat hbase-protocol hbase-client hbase-server hbase-hbtop U: .
Console outputhttps://builds.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-722/8/console
versionsgit=2.11.0 maven=2018-06-17T18:33:14Z) findbugs=3.1.11
Powered byApache Yetus 0.11.1 https://yetus.apache.org

This message was automatically generated.

@brfrn169brfrn169 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Left a comment that's a very small nit. It looks good to me 👍 Thanks! Ankit

if (!filters.isEmpty()) {
filtersString = String.join(" + ",
filters.stream().map(f -> String.format("'%s'", f)).collect(Collectors.toList()));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We don't need this line :)

@brfrn169

Copy link
Copy Markdown
Member

Can I merge this? @ankitsinghal@joshelser@apurtell

@joshelser

Copy link
Copy Markdown
Member

Can I merge this

OK by me. I know Ankit was traveling with intermittent access. I think he might be back soon, but I don't think you need to wait for him if you think this is good.

@brfrn169

Copy link
Copy Markdown
Member

Merged.

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.

6 participants

@ankitsinghal@Apache-HBase@brfrn169@joshelser@apurtell@tomscut