-
Notifications
You must be signed in to change notification settings - Fork 3.3k
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-23882: Experimenting with low config settings. #1194
Conversation
💔 -1 overall
This message was automatically generated. |
Rerunning build to see if the failures repeat. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just added in old defaults for contrast. A few of these config changes could make a big difference I think. Needs to be done in hbase-*/src/test/resources/hbase-site.xml though. Actually, if you look in the hbase-site.xml you'll see some of these configs already set down.
// conf.setInt("dfs.datanode.max.transfer.threads", 5); | ||
// conf.setInt("dfs.client.file-block-storage-locations.num-threads", 5); | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI, the way we do this usually for tests is to put these settings into hbase-*/src/test/resources/hbase-site.xml
// can't set this for every test currently | ||
// conf.set("hbase.regionserver.hostname", "127.0.0.1"); | ||
|
||
conf.setInt("hbase.hfilearchiver.thread.pool.max", 2); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Default is 8.
// conf.set("hbase.regionserver.hostname", "127.0.0.1"); | ||
|
||
conf.setInt("hbase.hfilearchiver.thread.pool.max", 2); | ||
conf.setInt("hbase.loadincremental.threads.max", 3); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This one is sized by processor count. Rather than hard-code it, keep it based on processor count but divide by 2 or 4 w/ minimum 3?
conf.setInt("hbase.loadincremental.threads.max", 3); | ||
|
||
|
||
conf.setInt("hbase.client.sync.wait.timeout.msec", 30000); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Default is 10min which is crazy for a test, yes. Test general timeout is 13mins IIRC.
|
||
|
||
conf.setInt("hbase.client.sync.wait.timeout.msec", 30000); | ||
conf.setInt("zookeeper.recovery.retry", 5); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Default is 30. Too much for a test. This looks good.
// conf.setInt(HConstants.ZOOKEEPER_MAX_CLIENT_CNXNS, 5); | ||
|
||
conf.setInt("hbase.hconnection.threads.max", 30); | ||
conf.setInt("hbase.hconnection.threads.keepalivetime", 30); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Default is 60.
|
||
conf.setInt("hbase.hconnection.threads.max", 30); | ||
conf.setInt("hbase.hconnection.threads.keepalivetime", 30); | ||
conf.setInt(HConstants.HBASE_CLIENT_MAX_TOTAL_TASKS, 10); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This a repeat? Above you have it set to 3 if I'm reading this right.
|
||
|
||
|
||
conf.setInt(HConstants.REGION_SERVER_HANDLER_COUNT, 2); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Default is 30. 2 is probably too few? Maybe not.
|
||
|
||
conf.setInt(HConstants.REGION_SERVER_HANDLER_COUNT, 2); | ||
conf.setInt("hbase.master.procedure.threads", 1); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Default is 16. Make it based off CPU count? Cutting it down is good idea.
conf.setInt(HConstants.REGION_SERVER_HANDLER_COUNT, 2); | ||
conf.setInt("hbase.master.procedure.threads", 1); | ||
|
||
conf.setInt("dfs.namenode.handler.count", 5); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Default is 10
💔 -1 overall
This message was automatically generated. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this PR is stale now @markrmiller I used it for inspiration/stole-from-it doing edits to our test default-site.xml files over in HBASE-23956.
Should we resolve this PR and its JIRA (JIRA keeps getting his w/ build comments when PRs are left open). Thanks.
Closing out. I hijacked the changes here over in HBASE-23956 |
Here is some initial experimentation with bringing mini cluster settings down to scale.
To start, I've been shooting for pretty minimal.
I've pulled this out of an experimental branch and so some work may still be in order to find any tests these settings are too low for.
I will continue to update this as I fine tune. I also have some other changes I'd like to dig out around thread pool sizing if I can find them again. I'll likely update again early next week.