druid/docs/configuration/human-readable-byte.md
frank chen 646fa84d04
Support unit on byte-related properties (#10203)
* support unit suffix on byte-related properties

* add doc

* change default value of byte-related properites in example files

* fix coding style

* fix doc

* fix CI

* suppress spelling errors

* improve code according to comments

* rename Bytes to HumanReadableBytes

* add getBytesInInt to get value safely

* improve doc

* fix problem reported by CI

* fix problem reported by CI

* resolve code review comments

* improve error message

* improve code & doc according to comments

* fix CI problem

* improve doc

* suppress spelling check errors
2020-07-31 09:58:48 +08:00

2.7 KiB

id title
human-readable-byte Human-readable Byte Configuration Reference

This page documents configuration properties related to bytes.

These properties can be configured through 2 ways:

  1. a simple number in bytes
  2. a number with a unit suffix

A number in bytes

Given that cache size is 3G, there's a configuration as below

# 3G bytes = 3_000_000_000 bytes
druid.cache.sizeInBytes=3000000000 

A number with a unit suffix

When you have to put a large number for some configuration as above, it is easy to make a mistake such as extra or missing 0s. Druid supports a better way, a number with a unit suffix.

Given a disk of 1T, the configuration can be

druid.segmentCache.locations=[{"path":"/segment-cache","maxSize":"1t"}]

Note: in above example, both 1t and 1T are acceptable since it's case-insensitive.

Supported Units

In the world of computer, a unit like K is ambiguous. It means 1000 or 1024 in different contexts, for more information please see Here.

To make it clear, the base of units are defined in Druid as below

Unit Description Base
K Kilo Decimal Byte 1_000
M Mega Decimal Byte 1_000_000
G Giga Decimal Byte 1_000_000_000
T Tera Decimal Byte 1_000_000_000_000
P Peta Decimal Byte 1_000_000_000_000_000
KiB Kilo Binary Byte 1024
MiB Mega Binary Byte 1024 * 1024
GiB Giga Binary Byte 1024 * 1024 * 1024
TiB Tera Binary Byte 1024 * 1024 * 1024 * 1024
PiB Peta Binary Byte 1024 * 1024 * 1024 * 1024 * 1024

Unit is case-insensitive. k, kib, KiB, kiB are all acceptable.

Here are two examples

# 1G bytes = 1_000_000_000 bytes
druid.cache.sizeInBytes=1g 
# 256MiB bytes = 256 * 1024 * 1024 bytes
druid.cache.sizeInBytes=256MiB