-
Notifications
You must be signed in to change notification settings - Fork 518
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
HDDS-11404. Make RocksDB all parameters configurable. #7150
base: master
Are you sure you want to change the base?
Conversation
@jojochuang @szetszwo @adoroszlai Could you help review this PR? Thanks. |
1e4113a
to
44a1ed1
Compare
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.
@weimingdiit , just have a quick comment inlined.
pom.xml
Outdated
<allowedImport>org.rocksdb.AccessHint</allowedImport> | ||
<allowedImport>org.rocksdb.BuiltinComparator</allowedImport> | ||
<allowedImport>org.rocksdb.ChecksumType</allowedImport> | ||
<allowedImport>org.rocksdb.CompactionPriority</allowedImport> | ||
<allowedImport>org.rocksdb.CompactionStopStyle</allowedImport> | ||
<allowedImport>org.rocksdb.CompressionType</allowedImport> | ||
<allowedImport>org.rocksdb.DataBlockIndexType</allowedImport> | ||
<allowedImport>org.rocksdb.IndexShorteningMode</allowedImport> | ||
<allowedImport>org.rocksdb.IndexType</allowedImport> | ||
<allowedImport>org.rocksdb.PrepopulateBlobCache</allowedImport> | ||
<allowedImport>org.rocksdb.WALRecoveryMode</allowedImport> |
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.
Could we move the new classes to hadoop-hdds/managed-rocksdb/...
instead of adding allowedImport
?
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.
@szetszwo Thanks for your comments, I have updated the code to fully support configuring all rocksDB parameters via ini files
@weimingdiit instead of wrapping every config via Ozone, why not let Ozone specify the RockDB config file https://github.com/facebook/rocksdb/blob/5b40c0c074f16dae6e1d60a3c5d7aa3e7d63fdc7/include/rocksdb/utilities/options_util.h#L56 |
@kerneltime I agree. I made the same suggestion in #7117 with a pointer to the RocksDB docs. The approach taken here is not sustainable to maintain and also less intuitive than having Ozone work with RocksDB's config file exactly how RocksDB documents it. This |
@errose28 @kerneltime This is a very good idea. I looked at the relevant code and felt that directly supporting INI files might be a better choice. Thank you very much for your suggestion. I will modify the code to fully support INI files. |
@weimingdiit Do we have mechanism to control service specific usecase, like if OM, SCM and DN have different configuration, like WAL manual flush may need disable only for OM ? |
Probably we could have configuration files for each Role . By default all of these can point to a base config but also provide an option to add overrides for each role. Similar to ozone.metadata.dirs where each process can define its own metadata dir but if not defined , we can fallback to the common config |
@sumitagrawl @sadanand48 Yes, this may be our ultimate goal. |
44a1ed1
to
cdfad33
Compare
cdfad33
to
544656d
Compare
What changes were proposed in this pull request?
Make RocksDB all parameters configurable.
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-11404
How was this patch tested?
unit tests and local test environment, and i will provide some test results from my local test environment
Additional notes:
For example, you can create a file such as om.db.ini to configure OM's rocksDB, scm.db.ini to configure SCM's rocksDB, and container.db.ini to configure DN's rocksDB
for OM
om.db.ini file:
OPTION file:
for SCM
scm.db.ini file:
OPTION file:
for DN
container.db.ini file:
OPTION file: