Skip to content

[STORM-1057] Add throughput metrics to spouts/bolts and display them on web ui - #753

Closed
wangli1426 wants to merge 796 commits into
apache:masterfrom
ADSC-Cloud:throughput-metrics
Closed

[STORM-1057] Add throughput metrics to spouts/bolts and display them on web ui#753
wangli1426 wants to merge 796 commits into
apache:masterfrom
ADSC-Cloud:throughput-metrics

Conversation

@wangli1426

Copy link
Copy Markdown
Contributor

The throughputs for the spouts and bolts could help the user to identify the performance bottleneck and detect the load balancing issue. In this RP, I take measurements on the throughput of the executors and display them on web UI.

Summary of Changes

  1. Take throughput measurements on the spouts and bolts;
  2. Add throughput to ExecutorStats;
  3. Display the throughputs on web UI.

Note: If you cannot see the throughputs on your web UI, please clean your browser cache and try again.

Screenshots

screen shot 2015-09-21 at 13 16 01
screen shot 2015-09-21 at 13 17 24
screen shot 2015-09-21 at 13 17 57
screen shot 2015-09-21 at 13 18 49

@wangli1426
wangli1426force-pushed the throughput-metrics branch 2 times, most recently from 6894d37 to 066e234CompareSeptember 22, 2015 14:17
@wangli1426

Copy link
Copy Markdown
ContributorAuthor

Hi @HeartSaVioR,

Sorry to interrupt, but could please kindly review the code? I am looking forward to your response. Thanks

@HeartSaVioR

Copy link
Copy Markdown
Contributor

@wangli1426
Sorry to response later.
We're having holidays in South Korea, 'Chuseok', very similar to 'Mid-autumn festival'.
It ends just Today, so it'll take a few days to get back.

@wangli1426

Copy link
Copy Markdown
ContributorAuthor

Thank you for your prompt reply. Please review the code when you come back. Wish you have a good time.

On Sep 29, 2015, at 20:30, Jungtaek Lim notifications@github.com wrote:

@wangli1426https://github.com/wangli1426
Sorry to response later.
We're having holidays in South Korea, 'Chuseok', very similar to 'Mid-autumn festival'.
It ends just Today, so it'll take a few days to get back.


Reply to this email directly or view it on GitHub #753 (comment).

@jerrypeng

Copy link
Copy Markdown
Contributor

storm-core/src/genthrift.sh permssions should be changed back to -> 644

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.

spout-counts does not appear to be used anywhere.

@revans2

Copy link
Copy Markdown
Contributor

@wangli1426 I am done with my first pass through the code. There may be other things in here too that I missed on the first pass.

@revans2

Copy link
Copy Markdown
Contributor

Actually I thought about this a bit more and I am not sure what value this adds over dividing the emitted counts that we already have by the time window that they are for. I don't see a reason to add in more code to get a number we already know. I am -1 for this approach. I am fine with doing the calculation for the rate and displaying it in the UI. That would be helpful, but I don't see a reason to try and collect it again, in a different way.

@wangli1426

Copy link
Copy Markdown
ContributorAuthor

@revans2,
Thanks for your detailed comments. I understand your concern that we might not need to use a new system to obtain the throughput metric, given that we already have code in stats.clj doing the same thing. I will try to obtain the throughput metric using existing functions in stats.clj and come back when I finish.

@wangli1426

Copy link
Copy Markdown
ContributorAuthor

@revans2 ,
I have addressed all your concerns in d552a99. The most important modification is that instead of employing RateTracker, I reuse the stats of emitted and executed to generate the throughput stats for spout and bolt respectively.

Look forward to your response. Thanks

@revans2

Copy link
Copy Markdown
Contributor

@wangli1426 sorry it took so long to respond. The code looks a lot simpler. Please upmerge. Stats aggregation has changed places, but it still looks like it is a not too difficult change.

I also would really like to see the thrift code changed so adding in the throughput can be a rolling upgrade.

@wangli1426

Copy link
Copy Markdown
ContributorAuthor

@revans2
Thank you for your comment. I will up-merge this PR. However, I can't quite understand your last sentence. What do you mean by "you like to see the thrift code changed"? Could please explain more about it? Thanks.

@revans2

Copy link
Copy Markdown
Contributor

@wangli1426

Thrift classes have two options for member variables. required and optional. If you mark a member as required it must be there or thrift will throw an exception before serializing/deserializing it. This becomes a problem if we want to do a rolling upgrade (upgrade the cluster with no downtime). In that case we upgrade one daemon at a time, and there will be a period of time when old clients are talking to new servers and/or new clients are talking to old servers. If we add new required fields to thrift classes then the code will break during the upgrade. However, if we mark them all as optional and write the code in the client so it does not break if it gets a null for this value, then we will be OK.

I don't want to break a rolling upgrade just so we can have a rate in the UI.

@wangli1426

Copy link
Copy Markdown
ContributorAuthor

Hi @revans2,
Thank you very much for giving so detailed explanation. Your concern is quite reasonable. I will mark the throughput optional. As a recent commit has made substantial modification to stats.clj, I am afraid I need more time to up-merge this PR. I will come back when I am done. Thanks

@revans2

Copy link
Copy Markdown
Contributor

@wangli1426 I totally understand that this is going to take more time. Thank you for your patience.

@wangli1426
wangli1426force-pushed the throughput-metrics branch 3 times, most recently from b8c2d0b to 81c91cdCompareOctober 16, 2015 08:22
@wangli1426

Copy link
Copy Markdown
ContributorAuthor

Hi @revans2 ,
I up-merged my code successfully. Following your suggestion, I mark throughput in storm.thrift as optional. Look forward to your response. Thanks.

Comment threadstorm-core/src/storm.thrift Outdated

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.

This is another problem with maintaining binary compatibility with the previous code. You cannot renumber entries. The tags at the beginning are what identify the field in the binary data. By renumbering them the new code and old code will mix up throughput, acked, and failed.

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.

Thanks for the comment and point taken.

HeartSaVioRand others added 23 commits September 12, 2016 12:13
* resolve conflict by Jungtaek Lim (kabhwan@gmail.com)
* resolve version mismatch and some external modules after added
* Support INNER, LEFT / RIGHT / FULL OUTER JOIN based on Trident
* Limitation of feature is just same to Trident join
* join is occurred for each batch (not across batches)
* Introduce new parameter on join(): JoinOutFieldsMode
* default value of mode is COMPACT, which is as same as current
* created PreservingFieldsOrderJoinerMultiReducer
* this preserves fields order from all streams fields
* modified codes to reflect the changes
* Reflect changes to doc
…RM-1837
STORM-1837: Fix complete-topology and prevent message loss
* join doesn't guarantee preserving order (Trident and SQL itself)
@wangli1426

Copy link
Copy Markdown
ContributorAuthor

@harshach I managed to upmerge this PR to 1.x-branch in #1703. Please review. Thanks.

@wangli1426

Copy link
Copy Markdown
ContributorAuthor

This new feature has been implemented on master branch in #1719. Please review.

d2r pushed a commit to d2r/storm that referenced this pull request Oct 16, 2018
We are closing stale Pull Requests to make the list more manageable.
Please re-open any Pull Request that has been closed in error.
Closesapache#608Closesapache#639Closesapache#640Closesapache#648Closesapache#662Closesapache#668Closesapache#692Closesapache#705Closesapache#724Closesapache#728Closesapache#730Closesapache#753Closesapache#803Closesapache#854Closesapache#922Closesapache#986Closesapache#992Closesapache#1019Closesapache#1040Closesapache#1041Closesapache#1043Closesapache#1046Closesapache#1051Closesapache#1078Closesapache#1146Closesapache#1164Closesapache#1165Closesapache#1178Closesapache#1213Closesapache#1225Closesapache#1258Closesapache#1259Closesapache#1268Closesapache#1272Closesapache#1277Closesapache#1278Closesapache#1288Closesapache#1296Closesapache#1328Closesapache#1342Closesapache#1353Closesapache#1370Closesapache#1376Closesapache#1391Closesapache#1395Closesapache#1399Closesapache#1406Closesapache#1410Closesapache#1422Closesapache#1427Closesapache#1443Closesapache#1462Closesapache#1468Closesapache#1483Closesapache#1506Closesapache#1509Closesapache#1515Closesapache#1520Closesapache#1521Closesapache#1525Closesapache#1527Closesapache#1544Closesapache#1550Closesapache#1566Closesapache#1569Closesapache#1570Closesapache#1575Closesapache#1580Closesapache#1584Closesapache#1591Closesapache#1600Closesapache#1611Closesapache#1613Closesapache#1639Closesapache#1703Closesapache#1711Closesapache#1719Closesapache#1737Closesapache#1760Closesapache#1767Closesapache#1768Closesapache#1785Closesapache#1799Closesapache#1822Closesapache#1824Closesapache#1844Closesapache#1874Closesapache#1918Closesapache#1928Closesapache#1937Closesapache#1942Closesapache#1951Closesapache#1957Closesapache#1963Closesapache#1964Closesapache#1965Closesapache#1967Closesapache#1968Closesapache#1971Closesapache#1985Closesapache#1986Closesapache#1998Closesapache#2031Closesapache#2032Closesapache#2071Closesapache#2076Closesapache#2108Closesapache#2119Closesapache#2128Closesapache#2142Closesapache#2174Closesapache#2206Closesapache#2297Closesapache#2322Closesapache#2332Closesapache#2341Closesapache#2377Closesapache#2414Closesapache#2469
d2r pushed a commit to d2r/storm that referenced this pull request Oct 16, 2018
We are closing stale Pull Requests to make the list more manageable.
Please re-open any Pull Request that has been closed in error.
Closesapache#608Closesapache#639Closesapache#640Closesapache#648Closesapache#662Closesapache#668Closesapache#692Closesapache#705Closesapache#724Closesapache#728Closesapache#730Closesapache#753Closesapache#803Closesapache#854Closesapache#922Closesapache#986Closesapache#992Closesapache#1019Closesapache#1040Closesapache#1041Closesapache#1043Closesapache#1046Closesapache#1051Closesapache#1078Closesapache#1146Closesapache#1164Closesapache#1165Closesapache#1178Closesapache#1213Closesapache#1225Closesapache#1258Closesapache#1259Closesapache#1268Closesapache#1272Closesapache#1277Closesapache#1278Closesapache#1288Closesapache#1296Closesapache#1328Closesapache#1342Closesapache#1353Closesapache#1370Closesapache#1376Closesapache#1391Closesapache#1395Closesapache#1399Closesapache#1406Closesapache#1410Closesapache#1422Closesapache#1427Closesapache#1443Closesapache#1462Closesapache#1468Closesapache#1483Closesapache#1506Closesapache#1509Closesapache#1515Closesapache#1520Closesapache#1521Closesapache#1525Closesapache#1527Closesapache#1544Closesapache#1550Closesapache#1566Closesapache#1569Closesapache#1570Closesapache#1575Closesapache#1580Closesapache#1584Closesapache#1591Closesapache#1600Closesapache#1611Closesapache#1613Closesapache#1639Closesapache#1703Closesapache#1711Closesapache#1719Closesapache#1737Closesapache#1760Closesapache#1767Closesapache#1768Closesapache#1785Closesapache#1799Closesapache#1822Closesapache#1824Closesapache#1844Closesapache#1874Closesapache#1918Closesapache#1928Closesapache#1937Closesapache#1942Closesapache#1951Closesapache#1957Closesapache#1963Closesapache#1964Closesapache#1965Closesapache#1967Closesapache#1968Closesapache#1971Closesapache#1985Closesapache#1986Closesapache#1998Closesapache#2031Closesapache#2032Closesapache#2071Closesapache#2076Closesapache#2108Closesapache#2119Closesapache#2128Closesapache#2142Closesapache#2174Closesapache#2206Closesapache#2297Closesapache#2322Closesapache#2332Closesapache#2341Closesapache#2377Closesapache#2414Closesapache#2469
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.

20 participants

@wangli1426@HeartSaVioR@jerrypeng@revans2@harshach@d2r@unsleepy22@childnode@redsanket@wangperry@Darkless012@darionyaphet@hmcl@vesense@Parth-Brahmbhatt@arunmahadevan@ptgoetz@satishd@lujinhong@omkreddy