Repository navigation
Enable Storm dynamic producer batching in archetype configs and docum… - #2261
GitMehdi-sys wants to merge 1 commit into
Conversation
|
Thanks for picking this up, the documentation of the Storm settings is a good addition on its own. Before we change the defaults in the archetypes, though, I'd like to see some numbers. Neither the issue nor the PR measures the effect so far, and the archetype config is what most new users start from. Could one of you (@GitMehdi-sys or @GGraziadei) run the archetype topology with batch size 1 and with
ideally once under light load (a few hosts, politeness-bound) and once under sustained load (many hosts). That would also tell us whether 32 is a good value or whether something smaller works as well. jnioche's StatusUpdaterBenchmark (#2213) might help for the status updater part. Small things: the |
|
Hi @GitMehdi-sys, thanks for bringing this feature to StormCrawler! I’d suggest narrowing the scope of this PR to improving the documentation rather than enabling the feature by default. Let me explain my reasoning: there’s no magic number that works for every setup, as the optimal configuration depends on the cluster resources, parallelism, and topology itself. I’d prefer to let users tune the settings according to their specific environments. One useful approach would be to run the What do you think? |
|
Thanks both for the quick feedback, @rzo1 and @GGraziadei. That makes sense: without measurements I can’t justify changing the defaults that most new users start from, and I agree there’s no single value that fits every setup. I’ve narrowed this PR to documentation only: kept the documentation of the Storm topology settings that affect a crawl As a follow-up, I’m happy to look at StatusUpdaterBenchmark (#2213) with different parallelism and batch-size combinations, and add the results to the docs as a tuning reference. Does that work for you? |
da36128 to
dbe3800
Compare
|
Sounds good to me! If you need cloud resources and you're still a student, you could also check out the GitHub Student Developer Pack. I'm not sure what it currently offers, but it used to provide access to various developer tools and cloud resources for students. |
@GGraziadei the StatusUpdaterBenchmark isn’t suitable for this: it calls the status updater’s store() method directly, without a topology, so no tuples are transferred between executors and the producer batching settings have no effect on it. The impact of batching would have to be measured with a real crawl topology, e.g. the one generated by the archetype, using URLFrontier. Given that most of a tuple’s life is spent waiting in the FetcherBolt queues for politeness reasons, I’m not sure batching would have any noticeable effect, positive or negative. |
|
Thanks a lot for the clarification, @jnioche! Sorry I didn’t check the benchmark myself and instead followed up on a previous message. I agree that dynamic batching might not make much sense in this context. The idea behind it is to address backpressure, but I agree that in a crawling topology, where most of a tuple’s lifetime is spent waiting in the FetcherBolt queues due to politeness constraints, batching is unlikely to have a significant impact. One possible scenario could be a very small cluster, although even there, I’d expect the effect to be limited. In any case, we would need to demonstrate its actual impact with some numbers. Thanks again for the clarification! |
…ent Storm topology settings #2131
Thank you for contributing to Apache StormCrawler.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes
Is there a issue associated with this PR? Is it referenced in the commit message?
Does your PR title start with
#XXXXwhereXXXXis the issue number you are trying to resolve?Has your PR been rebased against the latest commit within the target branch (typically main)?
Is your initial contribution a single, squashed commit?
Is the code properly formatted with
mvn git-code-format:format-code -Dgcf.globPattern="**/*" -Dskip.format.code=false?For code changes
mvn clean verify?