เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เป€เบ–เบดเบ‡ 3 เป€เบ—เบปเปˆเบฒเปเบฅเบฐเบˆเบฒเบ HDFS เป€เบ–เบดเบ‡ 5 เป€เบ—เบปเปˆเบฒ

เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡เปเบกเปˆเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปƒเบซเบเปˆ. เปƒเบ™เบžเบฐเปเบ™เบเบเบฒเบ™เป‚เบซเบผเบ”เบ‚เปเป‰เบกเบนเบ™เบขเบนเปˆ Sberbank, เบžเบงเบเป€เบฎเบปเบฒเบชเบนเบšเป€เบเบทเบญเบšเบ—เบธเบเบ—เบธเบฅเบฐเบเปเบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ Data Cloud เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ Hadoop เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปเบ—เป‰เป†. เบ•เบฒเบกเบ—เปเบฒเบกเบฐเบŠเบฒเบ”, เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเป€เบซเบกเบตเบŠเบญเบเบซเบฒเบงเบดเบ—เบตเบ—เบตเปˆเบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เปเบฅเบฐเบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบšเบญเบเบ—เปˆเบฒเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเบฑเบ”เบเบฒเบ™เปเบ™เบงเปƒเบ”เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚ RegionServer HBase เปเบฅเบฐเบฅเบนเบเบ„เป‰เบฒ HDFS, เบ‚เบญเบšเปƒเบˆเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ.
เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เป€เบ–เบดเบ‡ 3 เป€เบ—เบปเปˆเบฒเปเบฅเบฐเบˆเบฒเบ HDFS เป€เบ–เบดเบ‡ 5 เป€เบ—เบปเปˆเบฒ

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡, เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบ—เบตเปˆ, เปƒเบ™เบซเบผเบฑเบเบเบฒเบ™, เบšเปเปˆเบชเบฒเบกเบฒเบ”เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เป„เบ”เป‰เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ™เบฑเปˆเบ‡เบขเบนเปˆเปƒเบ™ HDD.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบเบฒเบ™เบญเปˆเบฒเบ™ HDD เปเบฅเบฐเป„เบง Random Access เบˆเบถเปˆเบ‡เบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰
เบ•เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เบฎเบนเป‰, HBase, เปเบฅเบฐเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบญเบทเปˆเบ™เป†เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ, เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบขเบนเปˆเปƒเบ™เบ•เบฑเบ™เบ‚เบญเบ‡เบซเบผเบฒเบเบชเบดเบšเบเบดเป‚เบฅเป„เบšเปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ”. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบกเบฑเบ™เปเบกเปˆเบ™เบ›เบฐเบกเบฒเบ™ 64 KB. เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆ 100 bytes เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ‚เปเปƒเบซเป‰ HBase เปƒเบซเป‰เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป‚เบ”เบเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ‚เบฐเบซเบ™เบฒเบ”เบšเบฅเบฑเบญเบเปƒเบ™ HFiles เปเบกเปˆเบ™ 64 KB, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบˆเบฐเปƒเบซเบเปˆเบเบงเปˆเบฒ 640 เป€เบ—เบปเปˆเบฒ (เบžเบฝเบ‡เปเบ•เปˆเบ™เบฒเบ—เบต!) เบซเบผเบฒเบเบเบงเปˆเบฒเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™.

เบ•เปเปˆเป„เบ›, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบˆเบฐเบœเปˆเบฒเบ™ HDFS เปเบฅเบฐเบเบปเบ™เป„เบเบเบฒเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ metadata เบ‚เบญเบ‡เบกเบฑเบ™ ShortCircuitCache (เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบŸเบฅเปŒเป‚เบ”เบเบเบปเบ‡), เบ™เบตเป‰เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบญเปˆเบฒเบ™เปเบฅเป‰เบง 1 MB เบˆเบฒเบเปเบœเปˆเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฑเบšเบ”เป‰เบงเบเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต dfs.client.read.shortcircuit.buffer.size เปเบฅเบฐเปƒเบ™เบซเบผเบฒเบเป†เบเปเบฅเบฐเบ™เบตเบกเบฑเบ™เบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™เบ—เบตเปˆเบˆเบฐเบซเบผเบธเบ”เบฅเบปเบ‡เบ„เปˆเบฒเบ™เบตเป‰, เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™ 126 KB.

เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เปเบ•เปˆเบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบญเปˆเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบœเปˆเบฒเบ™ java api, เป€เบŠเบฑเปˆเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เป€เบŠเบฑเปˆเบ™ FileChannel.read เปเบฅเบฐเบ‚เปเปƒเบซเป‰เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰, เบกเบฑเบ™เบˆเบฐเบญเปˆเบฒเบ™ "เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบเปเบฅเบฐเบ™เบต" 2 เป€เบ—เบทเปˆเบญ. , i.e. 256 KB เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ™เบตเป‰เปเบกเปˆเบ™เบเป‰เบญเบ™เบงเปˆเบฒ java เบšเปเปˆเบกเบตเบงเบดเบ—เบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบ•เบฑเป‰เบ‡เบ—เบธเบ‡ FADV_RANDOM เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบžเบถเบ”เบ•เบดเบเปเบฒเบ™เบตเป‰.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบžเบทเปˆเบญเปƒเบซเป‰เป„เบ”เป‰เบฎเบฑเบš 100 bytes เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, 2600 เป€เบงเบฅเบฒเบซเบผเบฒเบเปเบกเปˆเบ™เบญเปˆเบฒเบ™เบžเบฒเบเปƒเบ•เป‰ hood. เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบเบฒเบ™เปเบเป‰เป„เบ‚เปเบกเปˆเบ™เบˆเบฐเปเบˆเป‰เบ‡, เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบซเบผเบธเบ”เบฅเบปเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ•เบฑเบ™เป€เบ›เบฑเบ™เบเบดเป‚เบฅเป„เบš, เบเปเบฒเบ™เบปเบ”เบ—เบธเบ‡เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบฅเบฑเปˆเบ‡ enlightenment เบ—เบตเปˆเบเบดเปˆเบ‡เปƒเบซเบเปˆ. เปเบ•เปˆเบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบงเปˆเบฒเป‚เบ”เบเบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ•เบฑเบ™ 2 เป€เบ—เบทเปˆเบญ, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบซเบผเบธเบ”เบฅเบปเบ‡เบˆเปเบฒเบ™เบงเบ™ bytes เบญเปˆเบฒเบ™เบ•เปเปˆเบซเบ™เปˆเบงเบเป€เบงเบฅเบฒ 2 เป€เบ—เบทเปˆเบญ.

เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบธเบ‡ FADV_RANDOM เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบš, เปเบ•เปˆเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเบกเบต multi-threading เบชเบนเบ‡เปเบฅเบฐเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบšเบฅเบฑเบญเบ 128 KB, เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบชเบญเบ‡เบชเบฒเบกเบชเบดเบšเป€เบ›เบตเป€เบŠเบฑเบ™:

เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เป€เบ–เบดเบ‡ 3 เป€เบ—เบปเปˆเบฒเปเบฅเบฐเบˆเบฒเบ HDFS เป€เบ–เบดเบ‡ 5 เป€เบ—เบปเปˆเบฒ

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™ 100 เป„เบŸเบฅเปŒ, เปเบ•เปˆเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ” 1 GB เปเบฅเบฐเบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™ 10 HDDs.

เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เป„เบฅเปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”, เปƒเบ™เบซเบผเบฑเบเบเบฒเบ™, เบ‚เบถเป‰เบ™เบเบฑเบšเบ„เบงเบฒเบกเป„เบงเบ™เบตเป‰:
เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบญเปˆเบฒเบ™เบˆเบฒเบ 10 เปเบœเปˆเบ™เบ”เป‰เบงเบเบ„เบงเบฒเบกเป„เบง 280 MB / เบงเบดเบ™เบฒเบ—เบต, i.e. 3 เบฅเป‰เบฒเบ™เป€เบ—เบทเปˆเบญ 100 bytes. เปเบ•เปˆเบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบทเปˆ, เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบกเปˆเบ™ 2600 เป€เบ—เบทเปˆเบญเบซเบ™เป‰เบญเบเบเปˆเบงเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบญเปˆเบฒเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเปเบšเปˆเบ‡ 3 เบฅเป‰เบฒเบ™เป‚เบ”เบ 2600 เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบš 1100 เบšเบฑเบ™เบ—เบถเบเบ•เปเปˆเบงเบดเบ™เบฒเบ—เบต.

เบŠเบถเบกเป€เบชเบปเป‰เบฒ, เบšเปเปˆเปเบกเปˆเบ™เบšเป? เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบ—เปเบฒเบกเบฐเบŠเบฒเบ” เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เปเบšเบšเบชเบธเปˆเบก เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™ HDD - เป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ•เบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เปเบšเบšเบชเบธเปˆเบกเปเบฅเบฐเบšเปเปˆเบกเบตเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบชเบฒเบกเบฒเบ”เบšเบตเบšเบญเบญเบเบซเบผเบฒเบเบžเบฒเบเปƒเบ•เป‰เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบšเบฑเบ™เบฅเบธเบ„เบงเบฒเบกเป„เบงเบ—เบตเปˆเบชเบนเบ‡เบเบงเปˆเบฒเบซเบผเบฒเบเป„เบ”เป‰เปเบ™เบงเปƒเบ”? เป€เบžเบทเปˆเบญเบ•เบญเบšเบ„เปเบฒเบ–เบฒเบกเบ™เบตเป‰, เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบฎเบนเบšเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เป€เบ–เบดเบ‡ 3 เป€เบ—เบปเปˆเบฒเปเบฅเบฐเบˆเบฒเบ HDFS เป€เบ–เบดเบ‡ 5 เป€เบ—เบปเปˆเบฒ

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบชเบญเบ‡เบชเบฒเบกเบ™เบฒเบ—เบตเบ—เปเบฒเบญเบดเบ”เบ„เบงเบฒเบกเป„เบงเปเบกเปˆเบ™เบ›เบฐเบกเบฒเบ™เบซเบ™เบถเปˆเบ‡เบžเบฑเบ™เบšเบฑเบ™เบ—เบถเบเบ•เปเปˆเบงเบดเบ™เบฒเบ—เบต. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ•เปเปˆเป„เบ›, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบกเบตเบเบฒเบ™เบญเปˆเบฒเบ™เบซเบผเบฒเบเบเปˆเบงเบฒเบ—เบตเปˆเบ–เบทเบเบฎเป‰เบญเบ‡เบ‚เป, เบ‚เปเป‰เบกเบนเบ™เบชเบดเป‰เบ™เบชเบธเบ”เบฅเบปเบ‡เปƒเบ™ buff / cache เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ (linux) เปเบฅเบฐเบ„เบงเบฒเบกเป„เบงเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เป€เบ›เบฑเบ™ 60 เบžเบฑเบ™เบ•เปเปˆเบงเบดเบ™เบฒเบ—เบต.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ•เปเปˆเป„เบ›เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบžเบฝเบ‡เปเบ•เปˆเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™ OS cache เบซเบผเบทเบขเบนเปˆเปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ SSD / NVMe เบ‚เบญเบ‡เบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ›เบฝเบšเบ—เบฝเบš.

เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹, เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เปƒเบ™ bench เบ‚เบญเบ‡ 4 เป€เบ„เบทเปˆเบญเบ‡โ€‹เปเบกเปˆโ€‹เบ‚เปˆเบฒเบโ€‹, เปเบ•เปˆโ€‹เบฅเบฐโ€‹เบ„เบปเบ™โ€‹เปเบกเปˆเบ™โ€‹เบ„เบดเบ”โ€‹เป„เบฅเปˆโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

CPU: Xeon E5-2680 v4 @ 2.40GHz 64 เบเบฐเบ—เบนเป‰.
เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ: 730 GB.
java เป€เบงเบตเบŠเบฑเปˆเบ™: 1.8.0_111

เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบˆเบธเบ”เบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™เบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบญเปˆเบฒเบ™. เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบญเปˆเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบงเบฒเบ‡เป„เบงเป‰เปƒเบ™เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ HBase เบ—เบฑเบ‡เบซเบกเบปเบ”, เบกเบฑเบ™เบˆเบฐเบšเปเปˆเบกเบฒเบญเปˆเบฒเบ™เบˆเบฒเบ buff / cache เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ HBase เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฑเบ”เบชเบฑเบ™ 40% เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปƒเบซเป‰เบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ BlockCache. เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบงเบ™เบตเป‰เปเบกเปˆเบ™ ConcurrentHashMap, เป€เบŠเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ”เปเบกเปˆเบ™เบŠเบทเปˆเป„เบŸเบฅเปŒ + เบŠเบปเบ”เป€เบŠเบตเบเบ‚เบญเบ‡เบšเบฅเบฑเบญเบ, เปเบฅเบฐเบกเบนเบ™เบ„เปˆเบฒเปเบกเปˆเบ™เบ‚เปเป‰เบกเบนเบ™เบ•เบปเบงเบˆเบดเบ‡เบขเบนเปˆเบ—เบตเปˆเบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบเบ™เบตเป‰.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบญเปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบˆเบฒเบเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒ เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบ„เบงเบฒเบกเป„เบงเบ—เบตเปˆเบ”เบตเป€เบฅเบตเบ”, เป€เบŠเบฑเปˆเบ™เบซเบ™เบถเปˆเบ‡เบฅเป‰เบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆเบงเบดเบ™เบฒเบ—เบต. เปเบ•เปˆเปƒเบซเป‰เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบผเบฒเบเบฎเป‰เบญเบ gigabytes เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบตเบซเบผเบฒเบเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบญเบทเปˆเบ™เป†เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบญเบ‡ BlockCache เปƒเบ™เบซเบ™เบถเปˆเบ‡ RS เปเบกเปˆเบ™เบ›เบฐเบกเบฒเบ™ 12 GB. เบžเบงเบเป€เบฎเบปเบฒเบฅเบปเบ‡เบˆเบญเบ”เบชเบญเบ‡ RS เปƒเบ™เบซเบ™เบถเปˆเบ‡ node, i.e. 96 GB เบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™เปƒเบซเป‰ BlockCache เปƒเบ™เบ—เบธเบ nodes. เปเบฅเบฐเบกเบตเบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบเป€เบ—เบปเปˆเบฒ, เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™ 4 เบ•เบฒเบ•เบฐเบฅเบฒเบ‡, 130 เบžเบฒเบเบžเบทเป‰เบ™เปเบ•เปˆเบฅเบฐเบ„เบปเบ™, เป€เบŠเบดเปˆเบ‡เป„เบŸเบฅเปŒเบกเบตเบ‚เบฐเบซเบ™เบฒเบ” 800 MB, เบšเบตเบšเบญเบฑเบ”เป‚เบ”เบ FAST_DIFF, i.e. เบˆเปเบฒเบ™เบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ” 410 GB (เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เปเป‰เบกเบนเบ™เบšเปเบฅเบดเบชเบธเบ”, i.e. เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบ›เบฑเบ”เป„เบˆเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡).

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, BlockCache เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบ›เบฐเบกเบฒเบ™ 23% เบ‚เบญเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เปƒเบเป‰เบŠเบดเบ”เบเบฑเบšเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ BigData. เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบ„เบงเบฒเบกเบชเบฐเบซเบ™เบธเบเบชเบฐเบซเบ™เบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ - เป€เบžเบฒเบฐเบงเปˆเบฒเปเบ™เปˆเบ™เบญเบ™, เบˆเปเบฒเบ™เบงเบ™ cache hits เบซเบ™เป‰เบญเบ, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡เบเบงเปˆเบฒเป€เบเบปเปˆเบฒ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบžเบฒเบ”, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบซเบผเบฒเบ - i.e. เบฅเบปเบ‡เป„เบ›เบซเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบเบฒเบ™เป‚เบ—. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ™เบตเป‰เบšเปเปˆเบชเบฒเบกเบฒเบ”เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เป„เบ”เป‰, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบกเบปเบ” - เปเบกเปˆเบ™เบซเบเบฑเบ‡เป€เบเบตเบ”เบ‚เบทเป‰เบ™เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเปƒเบ™ cache?

เบ‚เปเปƒเบซเป‰เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ‡เปˆเบฒเบเปเบฅเบฐเบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบต cache เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบžเบฝเบ‡เปเบ•เปˆ 1 เบงเบฑเบ”เบ–เบธ. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบžเบฐเบเบฒเบเบฒเบกเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบเบงเปˆเบฒ cache 3 เป€เบ—เบปเปˆเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡:

1. เบงเบฒเบ‡ block 1 เปƒเบ™ cache
2. เป€เบญเบปเบฒ block 1 เบญเบญเบเบˆเบฒเบ cache
3. เบงเบฒเบ‡ block 2 เปƒเบ™ cache
4. เป€เบญเบปเบฒ block 2 เบญเบญเบเบˆเบฒเบ cache
5. เบงเบฒเบ‡ block 3 เปƒเบ™ cache

5 เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ”โ€‹! เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ™เบตเป‰เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบ›เบปเบเบเบฐเบ•เบด; เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบšเบฑเบ‡เบ„เบฑเบš HBase เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบšเปเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™. เบกเบฑเบ™เบญเปˆเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ OS เบขเบนเปˆเบชเบฐเป€เบซเบกเบต, เบงเบฒเบ‡เป„เบงเป‰เปƒเบ™ BlockCache, เบžเบฝเบ‡เปเบ•เปˆเบ–เบดเป‰เบกเบกเบฑเบ™เบญเบญเบเป€เบเบทเบญเบšเบ—เบฑเบ™เบ—เบตเป€เบžเบฒเบฐเบงเปˆเบฒเบ‚เปเป‰เบกเบนเบ™เปƒเบซเบกเปˆเบกเบฒเบฎเบญเบ”เปเบฅเป‰เบง. เบžเบฒเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบ•เบญเบšเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบˆเบธเบ”เบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒ - เบ„เบปเบ™เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเบเปเบฒเบฅเบฑเบ‡เบญเบญเบเป„เบ›, เบšเบฑเบ™เบเบฒเบเบฒเบ”เบเปเบฒเบฅเบฑเบ‡เบฎเป‰เบญเบ™เบ‚เบถเป‰เบ™, Greta เบžเบฝเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเปƒเบ™เบ›เบฐเป€เบ—เบ”เบชเบงเบตเป€เบ”เบ™เบ—เบตเปˆเบซเปˆเบฒเบ‡เป„เบเปเบฅเบฐเบฎเป‰เบญเบ™เปเบกเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™ upset. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ„เบปเบ™เป„เบญเบ—เบตเบเปเปˆเบšเปเปˆเบกเบฑเบเบกเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบ”เบฑเบเบ™เป‰เบญเบเบกเบตเบ„เบงเบฒเบกเป‚เบชเบเป€เบชเบปเป‰เบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบถเปˆเบ‡เป€เบฅเบตเปˆเบกเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™.

เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเปƒเบชเปˆเบ•เบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ cache, เปเบ•เปˆเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ cache เบšเปเปˆ overflow? เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบžเบฝเบ‡เปเบ•เปˆเบชเบญเบ‡เบชเบฒเบกเป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปƒเบชเปˆเบ‚เปเป‰เบกเบนเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ BlockCache:

  public void cacheBlock(BlockCacheKey cacheKey, Cacheable buf, boolean inMemory) {
    if (cacheDataBlockPercent != 100 && buf.getBlockType().isData()) {
      if (cacheKey.getOffset() % 100 >= cacheDataBlockPercent) {
        return;
      }
    }
...

เบˆเบธเบ”เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰: เบŠเบปเบ”เป€เบŠเบตเบเปเบกเปˆเบ™เบ•เปเบฒเปเบซเบ™เปˆเบ‡เบ‚เบญเบ‡เบ•เบฑเบ™เปƒเบ™เป„เบŸเบฅเปŒเปเบฅเบฐเบ•เบปเบงเป€เบฅเบเบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบกเบฑเบ™เบ–เบทเบเปเบˆเบเบขเบฒเบเปเบšเบšเบชเบธเปˆเบกเปเบฅเบฐเป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™เบˆเบฒเบ 00 เบซเบฒ 99. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ‚เป‰เบฒเบกเบžเบฝเบ‡เปเบ•เปˆเบœเบนเป‰เบ—เบตเปˆเบ•เบปเบเบขเบนเปˆเปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ cacheDataBlockPercent = 20 เปเบฅเบฐเป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™:

เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เป€เบ–เบดเบ‡ 3 เป€เบ—เบปเปˆเบฒเปเบฅเบฐเบˆเบฒเบ HDFS เป€เบ–เบดเบ‡ 5 เป€เบ—เบปเปˆเบฒ

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เบˆเบฐเปเบˆเป‰เบ‡. เปƒเบ™เบเบฒเบŸเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰, เบกเบฑเบ™เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบเบตเบ”เบ‚เบถเป‰เบ™ - เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบซเบเบฑเบ”เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ GC เบซเบผเบฒเบเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ Sisyphean เบ‚เบญเบ‡เบเบฒเบ™เบงเบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™ cache เบžเบฝเบ‡เปเบ•เปˆเบ–เบดเป‰เบกเบกเบฑเบ™เบฅเบปเบ‡เปƒเบ™เบ—เปเปˆเบ‚เบญเบ‡เบซเบกเบฒ Martian:

เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เป€เบ–เบดเบ‡ 3 เป€เบ—เบปเปˆเบฒเปเบฅเบฐเบˆเบฒเบ HDFS เป€เบ–เบดเบ‡ 5 เป€เบ—เบปเปˆเบฒ

เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ CPU เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, เปเบ•เปˆเปเบกเปˆเบ™เบซเบ™เป‰เบญเบเบเปˆเบงเบฒเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบซเบผเบฒเบ:

เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เป€เบ–เบดเบ‡ 3 เป€เบ—เบปเปˆเบฒเปเบฅเบฐเบˆเบฒเบ HDFS เป€เบ–เบดเบ‡ 5 เป€เบ—เบปเปˆเบฒ

เบกเบฑเบ™เบเบฑเบ‡เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบšเบฅเบฑเบญเบเบ—เบตเปˆเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™ BlockCache เปเบกเปˆเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบชเปˆเบงเบ™เปƒเบซเบเปˆ, เบ›เบฐเบกเบฒเบ™ 95%, เปเบกเปˆเบ™เบ‚เปเป‰เบกเบนเบ™เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡. เปเบฅเบฐเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเปเบกเปˆเบ™ metadata, เป€เบŠเบฑเปˆเบ™ Bloom filters เบซเบผเบท LEAF_INDEX เปเบฅเบฐ เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบšเปเปˆเบžเบฝเบ‡เบžเป, เปเบ•เปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบ, เป€เบžเบฒเบฐเบงเปˆเบฒเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เปเป‰เบกเบนเบ™เป‚เบ”เบเบเบปเบ‡, HBase เบซเบฑเบ™เป„เบ›เบซเบฒ meta เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ„เบปเป‰เบ™เบซเบฒเบ—เบตเปˆเบ™เบตเป‰เบ•เบทเปˆเบกเบญเบตเบเปเบฅเบฐเบ–เป‰เบฒเป€เบ›เบฑเบ™เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบšเปˆเบญเบ™เบ—เบตเปˆเบ•เบฑเบ™เบ‚เบญเบ‡เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเปเบกเปˆเบ™เบขเบนเปˆ.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เบฅเบฐเบซเบฑเบ”เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบเบฒเบ™เบเบงเบ”เบชเบญเบš buf.getBlockType().isData() เปเบฅเบฐเบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบš meta เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เปˆเบญเบเปƒเบซเป‰เบกเบฑเบ™เบขเบนเปˆเปƒเบ™ cache เปƒเบ™เบเปเบฅเบฐเบ™เบตเปƒเบ”เบเปเปˆเบ•เบฒเบก.

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป€เบžเบตเปˆเบกเบเบฒเบ™เป‚เบซเบผเบ” เปเบฅเบฐเป€เบžเบตเปˆเบกเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบซเป‰เปเปœเป‰เบ™เป€เบฅเบฑเบเบ™เป‰เบญเบเปƒเบ™เบ„เบฑเป‰เบ‡เบ”เบฝเบง. เปƒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เปƒเบซเป‰เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ•เบฑเบ”เบญเบญเบ = 20 เปเบฅเบฐ BlockCache เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบซเบ™เป‰เบญเบเบฅเบปเบ‡. เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เบ•เบฑเป‰เบ‡เบกเบฑเบ™เป€เบ›เบฑเบ™ 23% เปเบฅเบฐเป€เบžเบตเปˆเบก 100 เบเบฐเบ—เบนเป‰เบ—เบธเบเป† 5 เบ™เบฒเบ—เบตเป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบˆเบธเบ”เบญเบตเปˆเบกเบ•เบปเบงเปเบกเปˆเบ™เบซเบเบฑเบ‡:

เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เป€เบ–เบดเบ‡ 3 เป€เบ—เบปเปˆเบฒเปเบฅเบฐเบˆเบฒเบ HDFS เป€เบ–เบดเบ‡ 5 เป€เบ—เบปเปˆเบฒ

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒเบชเบฐเบšเบฑเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป€เบเบทเบญเบšเบ—เบฑเบ™เบ—เบตเบ—เบฑเบ™เปƒเบ”เบ•เบตเป€เบžเบ”เบฒเบ™เบขเบนเปˆเบ—เบตเปˆเบ›เบฐเบกเบฒเบ™ 100 เบžเบฑเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆเบงเบดเบ™เบฒเบ—เบต. เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ patch เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เป€เบ–เบดเบ‡ 300 เบžเบฑเบ™. เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบ•เบทเปˆเบกเบญเบตเบเบšเปเปˆเปเบกเปˆเบ™ "เบŸเบฃเบต"; เบเบฒเบ™เปƒเบŠเป‰ CPU เปเบกเปˆเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบกเบซเบผเบฒเบ, เป€เบžเบฒเบฐเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบฎเบนเป‰เบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒเบงเปˆเบฒเบˆเปเบฒเบ™เบงเบ™เบ•เบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ, เบกเบฑเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป‚เบ›เบฃเป„เบŸเบฅเปŒเบเบฒเบ™เป‚เบซเบผเบ”. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบเบปเบ™เป„เบเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ™เบตเป‰เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบถเป‰เบ™เบเบฑเบšเบเบดเบ”เบˆเบฐเบเปเบฒเบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™.

เบชเบฒเบกเบ—เบฒเบ‡เป€เบฅเบทเบญเบเป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบžเบทเปˆเบญเบ„เบงเบšเบ„เบธเบกเบ™เบตเป‰:

hbase.lru.cache.heavy.eviction.count.limit โ€” เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เป€เบ—เบทเปˆเบญโ€‹เบ‚เบญเบ‡โ€‹เบ‚เบฐโ€‹เบšเบงเบ™โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบฑเบšโ€‹เป„เบฅเปˆโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบˆเบฒเบโ€‹เบ–เบฒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒโ€‹เบ„เบงเบ™โ€‹เบˆเบฐโ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™โ€‹เบเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡ (i.e. เบ‚เป‰เบฒเบก blocksโ€‹)โ€‹. เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบกเบฑเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบš MAX_INT = 2147483647 เปเบฅเบฐเปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบˆเบฐเบšเปเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ„เปˆเบฒเบ™เบตเป‰. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ‚เบฑเบšเป„เบฅเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบธเบเป† 5 - 10 เบงเบดเบ™เบฒเบ—เบต (เบกเบฑเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”) เปเบฅเบฐ 2147483647 * 10 / 60 / 60 / 24 / 365 = 680 เบ›เบต. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰เป€เบ›เบฑเบ™ 0 เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบฑเบ™เบ—เบตเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบเบฑเบ‡เบกเบต payload เปƒเบ™เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰. เบ–เป‰เบฒเบเบฒเบ™เป‚เบซเบผเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบฑเบ™เปเบšเบšเบ—เบตเปˆเบเบฒเบ™เบญเปˆเบฒเบ™เป„เบฅเบเบฐเบชเบฑเป‰เบ™ (เป€เบงเบปเป‰เบฒเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบกเบทเป‰) เปเบฅเบฐเบเบฒเบ™เบญเปˆเบฒเบ™เปƒเบ™เป„เบฅเบเบฐเบเบฒเบง (เบ•เบญเบ™เบเบฒเบ‡เบ„เบทเบ™) เบ–เบทเบเบ•เบฑเบ”เบเบฑเบ™เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เป€เบ›เบตเบ”เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบเบฒเบงเบขเบนเปˆเปƒเบ™เบ„เบงเบฒเบกเบ„เบทเบšเบซเบ™เป‰เบฒ.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบงเปˆเบฒเบเบฒเบ™เบญเปˆเบฒเบ™เป„เบฅเบเบฐเบชเบฑเป‰เบ™เบกเบฑเบเบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบ›เบฐเบกเบฒเบ™ 1 เบ™เบฒเบ—เบต. เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ–เบดเป‰เบกเบ•เบฑเบ™, cache เบˆเบฐเบšเปเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเบ—เบตเปˆเบฅเป‰เบฒเบชเบฐเป„เบซเบกเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ™เบตเป‰เป€เบ—เบปเปˆเบฒเบเบฑเบš, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, 10. เบ™เบตเป‰เบˆเบฐเบ™เปเบฒเป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบˆเบฐเป€เบฅเบตเปˆเบกเป€เบฎเบฑเบ”เบงเบฝเบเบžเบฝเบ‡เปเบ•เปˆเป€เบกเบทเปˆเบญเบ”เบปเบ™เบ™เบฒเบ™ -. เป„เบฅเบเบฐเบเบฒเบ™เบญเปˆเบฒเบ™เบขเปˆเบฒเบ‡เบซเป‰เบฒเบงเบซเบฑเบ™เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, i.e. เปƒเบ™ 100 เบงเบดเบ™เบฒเบ—เบต. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฒเบ™เบญเปˆเบฒเบ™เปƒเบ™เป„เบฅเบเบฐเบชเบฑเป‰เบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ•เบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ cache เปเบฅเบฐเบˆเบฐเบกเบตเบขเบนเปˆ (เบเบปเบเป€เบงเบฑเป‰เบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ‚เบฑเบšเป„เบฅเปˆเป‚เบ”เบ algorithm เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™). เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบญเปˆเบฒเบ™เปƒเบ™เป„เบฅเบเบฐเบเบฒเบง, เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบˆเบฐเป€เบ›เบตเบ”เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบชเบนเบ‡เบ‚เบถเป‰เบ™เบซเบผเบฒเบ.

hbase.lru.cache.heavy.eviction.mb.size.limit โ€” เบเปเบฒโ€‹เบ™เบปเบ”โ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบผเบฒเบ megabytes เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบˆเบฑเบ”โ€‹เบงเบฒเบ‡โ€‹เปƒเบ™โ€‹เบ–เบฒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒ (เปเบฅเบฐโ€‹, เปเบ™เปˆโ€‹เบ™เบญเบ™โ€‹, เบเบฒเบ™โ€‹เบ‚เบฑเบšโ€‹เป„เบฅเปˆโ€‹) เปƒเบ™ 10 เบงเบดโ€‹เบ™เบฒโ€‹เบ—เบตโ€‹. เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเบšเบฑเบ™เบฅเบธเบกเบนเบ™เบ„เปˆเบฒเบ™เบตเป‰เปเบฅเบฐเบฎเบฑเบเบชเบฒเบกเบฑเบ™. เบˆเบธเบ”เบ™เบตเป‰เปเบกเปˆเบ™: เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒ gigabytes เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ cache, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบ‚เบฑเบšเป„เบฅเปˆ gigabytes, เปเบฅเบฐเบ™เบตเป‰, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบซเบฑเบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบฅเบฒเบ„เบฒเปเบžเบ‡เบซเบผเบฒเบ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ—เปˆเบฒเบ™เบšเปเปˆเบ„เบงเบ™เบžเบฐเบเบฒเบเบฒเบกเบ•เบฑเป‰เบ‡เบกเบฑเบ™เบ™เป‰เบญเบเป€เบเบตเบ™เป„เบ›, เป€เบžเบฒเบฐเบงเปˆเบฒเบ™เบตเป‰เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ‚เป‰เบฒเบกเบšเบฅเบฑเบญเบเบญเบญเบเป„เบ›เบเปˆเบญเบ™เป„เบงเบญเบฑเบ™เบ„เบงเบ™. เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš (เบ›เบฐเบกเบฒเบ™ 20-40 เปเบเบ™เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบ), เบกเบฑเบ™เป€เบซเบกเบฒเบฐเบชเบปเบกเบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ”เบ›เบฐเบกเบฒเบ™ 300-400 MB. เบชเปเบฒเบฅเบฑเบšเบŠเบฑเป‰เบ™เบเบฒเบ‡ (~10 cores) 200-300 MB. เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบ—เบตเปˆเบญเปˆเบญเบ™เปเบญ (2-5 cores) 50-100 MB เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบด (เบšเปเปˆเป„เบ”เป‰เบ—เบปเบ”เบชเบญเบšเบเปˆเบฝเบงเบเบฑเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰).

เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ: เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ” hbase.lru.cache.heavy.eviction.mb.size.limit = 500, เบกเบตเบเบฒเบ™เป‚เบซเบผเบ”เบšเบฒเบ‡เบ›เบฐเป€เบžเบ” (เบเบฒเบ™เบญเปˆเบฒเบ™) เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เบธเบเป† ~ 10 เบงเบดเบ™เบฒเบ—เบตเบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เป„เบฅเปˆเบˆเปเบฒเบ™เบงเบ™ bytes. เบ‚เบฑเบšเป„เบฅเปˆเป‚เบ”เบเปƒเบŠเป‰เบชเบนเบ”:

Overhead = Freed Bytes Sum (MB) * 100 / Limit (MB) - 100;

เบ–เป‰เบฒเปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡ 2000 MB เบ–เบทเบเบ‚เบฑเบšเป„เบฅเปˆ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ Overhead เปเบกเปˆเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบš:

2000 * 100 / 500 - 100 = 300%

เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบžเบฐเบเบฒเบเบฒเบกเบฎเบฑเบเบชเบฒเบšเปเปˆเป€เบเบตเบ™เบชเบญเบ‡เบชเบฒเบกเบชเบดเบšเป€เบ›เบตเป€เบŠเบฑเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบˆเบฐเบซเบผเบธเบ”เบฅเบปเบ‡เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ‚เบญเบ‡เบ•เบฑเบ™เบˆเบฒเบเบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบปเบ™เป„เบเบเบฒเบ™เบ›เบฑเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ–เป‰เบฒเบเบฒเบ™เป‚เบซเบผเบ”เบซเบผเบธเบ”เบฅเบปเบ‡, เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆ 200 MB เป„เบ”เป‰เบ–เบทเบเบ‚เบฑเบšเป„เบฅเปˆเปเบฅเบฐ Overhead เบเบฒเบเป€เบ›เบฑเบ™เบ—เบฒเบ‡เบฅเบปเบš (เบญเบฑเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ overshooting):

200*100/500 - 100 = -60%

เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบˆเบฐเป€เบžเบตเปˆเบกเป€เบ›เบตเป€เบŠเบฑเบ™เบ‚เบญเบ‡เบ•เบฑเบ™เปƒเบ™เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเบˆเบปเบ™เบเปˆเบงเบฒ Overhead เบเบฒเบเป€เบ›เบฑเบ™เบšเบงเบ.

เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบšเบดเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡. เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบžเบฐเบเบฒเบเบฒเบกเบšเบฑเบ™เบฅเบธ 0%, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰. เบกเบฑเบ™เบ”เบตเบซเบผเบฒเบเป€เบกเบทเปˆเบญเบ›เบฐเบกเบฒเบ™ 30 - 100%, เบ™เบตเป‰เบŠเปˆเบงเบเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบญเบญเบเบเปˆเบญเบ™เป„เบงเบญเบฑเบ™เบ„เบงเบ™เบˆเบฒเบเป‚เบซเบกเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เปƒเบ™เป„เบฅเบเบฐเบชเบฑเป‰เบ™.

hbase.lru.cache.heavy.eviction.overhead.coefficient โ€” เบเบณเบ™เบปเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบขเบฒเบเป„เบ”เป‰เบœเบปเบ™เป„เบงเป€เบ—เบปเปˆเบฒเปƒเบ”. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเบเบฒเบ™เบญเปˆเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเปˆเบงเบ™เบซเบผเบฒเบเปเบกเปˆเบ™เบเบฒเบงเปเบฅเบฐเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบฅเปเบ–เป‰เบฒ, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ™เบตเป‰เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡เป„เบง.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒเบชเปเบฒเบ›เบฐเบชเบดเบ”เบ™เบตเป‰ = 0.01. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ Overhead (เป€เบšเบดเปˆเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡) เบˆเบฐเบ–เบทเบเบ„เบนเบ™เบ”เป‰เบงเบเบ•เบปเบงเป€เบฅเบเบ™เบตเป‰เป‚เบ”เบเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบฅเบฐเบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ‚เบญเบ‡เบ•เบฑเบ™เบ—เบตเปˆเป€เบเบฑเบšเป„เบงเป‰เบˆเบฐเบ–เบทเบเบซเบผเบธเบ”เบฅเบปเบ‡. เปƒเบซเป‰เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒ Overhead = 300% เปเบฅเบฐ coefficient = 0.01, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ‚เบญเบ‡เบ•เบฑเบ™ cache เบˆเบฐเบซเบผเบธเบ”เบฅเบปเบ‡ 3%.

เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™ "Backpressure" เบเบฑเบ‡เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบ„เปˆเบฒ Overhead (overshooting) เบฅเบปเบš. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบซเบ™เบฑเบ‡เบ•เบตเบ‡เปƒเบ™เป„เบฅเบเบฐเบชเบฑเป‰เบ™เบ‚เบญเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบ‚เบฑเบšเป„เบฅเปˆเปเบกเปˆเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเบฐเป€เบซเบกเบต, เบเบปเบ™เป„เบเบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบซเบฅเบตเบเบฅเป‰เบฝเบ‡เบเบฒเบ™เบญเบญเบเบˆเบฒเบเป‚เบซเบกเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเปˆเบญเบ™เป„เบงเบญเบฑเบ™เบ„เบงเบ™. Backpressure เบกเบตเป€เบซเบ”เบœเบปเบ™ inverted: เบเบฒเบ™ overshooting เบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡, เบ•เบฑเบ™เบซเบผเบฒเบเปเบกเปˆเบ™ cached.

เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เป€เบ–เบดเบ‡ 3 เป€เบ—เบปเปˆเบฒเปเบฅเบฐเบˆเบฒเบ HDFS เป€เบ–เบดเบ‡ 5 เป€เบ—เบปเปˆเบฒ

เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”

        LruBlockCache cache = this.cache.get();
        if (cache == null) {
          break;
        }
        freedSumMb += cache.evict()/1024/1024;
        /*
        * Sometimes we are reading more data than can fit into BlockCache
        * and it is the cause a high rate of evictions.
        * This in turn leads to heavy Garbage Collector works.
        * So a lot of blocks put into BlockCache but never read,
        * but spending a lot of CPU resources.
        * Here we will analyze how many bytes were freed and decide
        * decide whether the time has come to reduce amount of caching blocks.
        * It help avoid put too many blocks into BlockCache
        * when evict() works very active and save CPU for other jobs.
        * More delails: https://issues.apache.org/jira/browse/HBASE-23887
        */

        // First of all we have to control how much time
        // has passed since previuos evict() was launched
        // This is should be almost the same time (+/- 10s)
        // because we get comparable volumes of freed bytes each time.
        // 10s because this is default period to run evict() (see above this.wait)
        long stopTime = System.currentTimeMillis();
        if ((stopTime - startTime) > 1000 * 10 - 1) {
          // Here we have to calc what situation we have got.
          // We have the limit "hbase.lru.cache.heavy.eviction.bytes.size.limit"
          // and can calculte overhead on it.
          // We will use this information to decide,
          // how to change percent of caching blocks.
          freedDataOverheadPercent =
            (int) (freedSumMb * 100 / cache.heavyEvictionMbSizeLimit) - 100;
          if (freedSumMb > cache.heavyEvictionMbSizeLimit) {
            // Now we are in the situation when we are above the limit
            // But maybe we are going to ignore it because it will end quite soon
            heavyEvictionCount++;
            if (heavyEvictionCount > cache.heavyEvictionCountLimit) {
              // It is going for a long time and we have to reduce of caching
              // blocks now. So we calculate here how many blocks we want to skip.
              // It depends on:
             // 1. Overhead - if overhead is big we could more aggressive
              // reducing amount of caching blocks.
              // 2. How fast we want to get the result. If we know that our
              // heavy reading for a long time, we don't want to wait and can
              // increase the coefficient and get good performance quite soon.
              // But if we don't sure we can do it slowly and it could prevent
              // premature exit from this mode. So, when the coefficient is
              // higher we can get better performance when heavy reading is stable.
              // But when reading is changing we can adjust to it and set
              // the coefficient to lower value.
              int change =
                (int) (freedDataOverheadPercent * cache.heavyEvictionOverheadCoefficient);
              // But practice shows that 15% of reducing is quite enough.
              // We are not greedy (it could lead to premature exit).
              change = Math.min(15, change);
              change = Math.max(0, change); // I think it will never happen but check for sure
              // So this is the key point, here we are reducing % of caching blocks
              cache.cacheDataBlockPercent -= change;
              // If we go down too deep we have to stop here, 1% any way should be.
              cache.cacheDataBlockPercent = Math.max(1, cache.cacheDataBlockPercent);
            }
          } else {
            // Well, we have got overshooting.
            // Mayby it is just short-term fluctuation and we can stay in this mode.
            // It help avoid permature exit during short-term fluctuation.
            // If overshooting less than 90%, we will try to increase the percent of
            // caching blocks and hope it is enough.
            if (freedSumMb >= cache.heavyEvictionMbSizeLimit * 0.1) {
              // Simple logic: more overshooting - more caching blocks (backpressure)
              int change = (int) (-freedDataOverheadPercent * 0.1 + 1);
              cache.cacheDataBlockPercent += change;
              // But it can't be more then 100%, so check it.
              cache.cacheDataBlockPercent = Math.min(100, cache.cacheDataBlockPercent);
            } else {
              // Looks like heavy reading is over.
              // Just exit form this mode.
              heavyEvictionCount = 0;
              cache.cacheDataBlockPercent = 100;
            }
          }
          LOG.info("BlockCache evicted (MB): {}, overhead (%): {}, " +
            "heavy eviction counter: {}, " +
            "current caching DataBlock (%): {}",
            freedSumMb, freedDataOverheadPercent,
            heavyEvictionCount, cache.cacheDataBlockPercent);

          freedSumMb = 0;
          startTime = stopTime;
       }

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบฐเบ„เบฃเบดเบšเบ—เบปเบ”เบชเบญเบšเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  1. เบกเบฒเป€เบฅเบตเปˆเบก Scan (25 threads, batch = 100)
  2. เบซเบผเบฑเบ‡เบˆเบฒเบ 5 เบ™เบฒเบ—เบต, เป€เบžเบตเปˆเบก multi-gets (25 threads, batch = 100)
  3. เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบ 5 เบ™เบฒโ€‹เบ—เบตโ€‹, เปƒเบซเป‰โ€‹เบ›เบดเบ” multi-gets (เบžเบฝเบ‡โ€‹เปเบ•เปˆ scan เบเบฑเบ‡โ€‹เบญเบตเบโ€‹เป€เบ—เบทเปˆเบญโ€‹เบซเบ™เบถเปˆเบ‡โ€‹)

เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบชเบญเบ‡เปเบฅเปˆเบ™, เบ—เปเบฒเบญเบดเบ” hbase.lru.cache.heavy.eviction.count.limit = 10000 (เป€เบŠเบดเปˆเบ‡เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบง disables เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”), เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเปเบฒเบ™เบปเบ” limit = 0 (เป€เบ›เบตเบ”เปƒเบŠเป‰เบกเบฑเบ™).

เปƒเบ™เบšเบฑเบ™เบ—เบถเบเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบ›เบตเบ”เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เปเบฅเบฐ reset Overshooting เป€เบ›เบฑเบ™ 14-71%. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบเบฒเบ™เป‚เบซเบผเบ”เบซเบผเบธเบ”เบฅเบปเบ‡, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰ Backpressure เปเบฅเบฐ HBase cache เบ•เบฑเบ™เบซเบผเบฒเบเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡.

Log RegionServer
evicted (MB): 0, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.0, overhead (%): -100, เบงเบฝเบเบ‡เบฒเบ™เบ•เป‰เบฒเบ™เบเบฒเบ™เบ‚เบฑเบšเป„เบฅเปˆเบขเปˆเบฒเบ‡เบฎเบธเบ™เปเบฎเบ‡: 0, caching เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ DataBlock (%): 100
evicted (MB): 0, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.0, overhead (%): -100, เบงเบฝเบเบ‡เบฒเบ™เบ•เป‰เบฒเบ™เบเบฒเบ™เบ‚เบฑเบšเป„เบฅเปˆเบขเปˆเบฒเบ‡เบฎเบธเบ™เปเบฎเบ‡: 0, caching เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ DataBlock (%): 100
evicted (MB): 2170, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 1.09, overhead (%): 985, heavy evic counter counter: 1, current caching DataBlock (%): 91 < start
evicted (MB): 3763, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 1.08, overhead (%): 1781, heavy evic counter counter: 2, current caching DataBlock (%): 76
evicted (MB): 3306, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 1.07, overhead (%): 1553, heavy evic counter counter: 3, current caching DataBlock (%): 61
evicted (MB): 2508, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 1.06, overhead (%): 1154, heavy evic counter counter: 4, current caching DataBlock (%): 50
evicted (MB): 1824, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 1.04, overhead (%): 812, heavy evic counter counter: 5, current caching DataBlock (%): 42
evicted (MB): 1482, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 1.03, overhead (%): 641, heavy evic counter counter: 6, current caching DataBlock (%): 36
evicted (MB): 1140, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 1.01, overhead (%): 470, heavy evic counter counter: 7, current caching DataBlock (%): 32
evicted (MB): 913, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 1.0, overhead (%): 356, heavy evic counter counter: 8, current caching DataBlock (%): 29
evicted (MB): 912, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.89, overhead (%): 356, heavy evic counter counter: 9, current caching DataBlock (%): 26
evicted (MB): 684, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.76, overhead (%): 242, heavy evic counter counter: 10, current caching DataBlock (%): 24
evicted (MB): 684, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.61, overhead (%): 242, heavy evic counter counter: 11, current caching DataBlock (%): 22
evicted (MB): 456, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.51, overhead (%): 128, heavy evic counter counter: 12, current caching DataBlock (%): 21
evicted (MB): 456, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.42, overhead (%): 128, heavy evic counter counter: 13, current caching DataBlock (%): 20
evicted (MB): 456, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 128, heavy evic counter counter: 14, current caching DataBlock (%): 19
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 71, heavy evic counter counter: 15, current caching DataBlock (%): 19
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.32, overhead (%): 71, heavy evic counter counter: 16, current caching DataBlock (%): 19
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.31, overhead (%): 71, heavy evic counter counter: 17, current caching DataBlock (%): 19
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.3, overhead (%): 14, heavy evic counter counter: 18, current caching DataBlock (%): 19
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.29, overhead (%): 14, heavy evic counter counter: 19, current caching DataBlock (%): 19
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.27, overhead (%): 14, heavy evic counter counter: 20, current caching DataBlock (%): 19
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.25, overhead (%): 14, heavy evic counter counter: 21, current caching DataBlock (%): 19
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.24, overhead (%): 14, heavy evic counter counter: 22, current caching DataBlock (%): 19
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.22, overhead (%): 14, heavy evic counter counter: 23, current caching DataBlock (%): 19
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.21, overhead (%): 14, heavy evic counter counter: 24, current caching DataBlock (%): 19
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.2, overhead (%): 14, heavy evic counter counter: 25, current caching DataBlock (%): 19
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.17, overhead (%): 14, heavy evic counter counter: 26, current caching DataBlock (%): 19
evicted (MB): 456, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.17, overhead (%): 128, เบงเบฝเบเบ‡เบฒเบ™เบ•เป‰เบฒเบ™เบเบฒเบ™เบ‚เบฑเบšเป„เบฅเปˆเบขเปˆเบฒเบ‡เบฎเบธเบ™เปเบฎเบ‡: 27, caching เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ DataBlock (%): 18 < เป€เบžเบตเปˆเบกเป„เบ”เป‰เบฎเบฑเบš (เปเบ•เปˆเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ”เบฝเบงเบเบฑเบ™)
evicted (MB): 456, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.15, overhead (%): 128, heavy evic counter counter: 28, current caching DataBlock (%): 17
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.13, overhead (%): 71, heavy evic counter counter: 29, current caching DataBlock (%): 17
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.11, overhead (%): 71, heavy evic counter counter: 30, current caching DataBlock (%): 17
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.09, overhead (%): 71, heavy evic counter counter: 31, current caching DataBlock (%): 17
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.08, overhead (%): 14, heavy evic counter counter: 32, current caching DataBlock (%): 17
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.07, overhead (%): 14, heavy evic counter counter: 33, current caching DataBlock (%): 17
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.06, overhead (%): 14, heavy evic counter counter: 34, current caching DataBlock (%): 17
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.05, overhead (%): 14, heavy evic counter counter: 35, current caching DataBlock (%): 17
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.05, overhead (%): 14, heavy evic counter counter: 36, current caching DataBlock (%): 17
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.04, overhead (%): 14, heavy evic counter counter: 37, current caching DataBlock (%): 17
evicted (MB): 109, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.04, overhead (%): -46, heavy evic counter counter: 37, caching current DataBlock (%): 22 < back pressure
evicted (MB): 798, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.24, overhead (%): 299, heavy evic counter counter: 38, current caching DataBlock (%): 20
evicted (MB): 798, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.29, overhead (%): 299, heavy evic counter counter: 39, current caching DataBlock (%): 18
evicted (MB): 570, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.27, overhead (%): 185, heavy evic counter counter: 40, current caching DataBlock (%): 17
evicted (MB): 456, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.22, overhead (%): 128, heavy evic counter counter: 41, current caching DataBlock (%): 16
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.16, overhead (%): 71, heavy evic counter counter: 42, current caching DataBlock (%): 16
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.11, overhead (%): 71, heavy evic counter counter: 43, current caching DataBlock (%): 16
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.09, overhead (%): 14, heavy evic counter counter: 44, current caching DataBlock (%): 16
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.07, overhead (%): 14, heavy evic counter counter: 45, current caching DataBlock (%): 16
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.05, overhead (%): 14, heavy evic counter counter: 46, current caching DataBlock (%): 16
evicted (MB): 222, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.04, overhead (%): 11, heavy evic counter counter: 47, current caching DataBlock (%): 16
evicted (MB): 104, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.03, overhead (%): -48, เบงเบฝเบเบ‡เบฒเบ™เบ•เป‰เบฒเบ™เบเบฒเบ™เบ‚เบฑเบšเป„เบฅเปˆเบขเปˆเบฒเบ‡เบฎเบธเบ™เปเบฎเบ‡: 47, caching เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ DataBlock (%): 21 < interrupt เป„เบ”เป‰เบฎเบฑเบš
evicted (MB): 684, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.2, overhead (%): 242, heavy evic counter counter: 48, current caching DataBlock (%): 19
evicted (MB): 570, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.23, overhead (%): 185, heavy evic counter counter: 49, current caching DataBlock (%): 18
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.22, overhead (%): 71, heavy evic counter counter: 50, current caching DataBlock (%): 18
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.21, overhead (%): 14, heavy evic counter counter: 51, current caching DataBlock (%): 18
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.2, overhead (%): 14, heavy evic counter counter: 52, current caching DataBlock (%): 18
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.18, overhead (%): 14, heavy evic counter counter: 53, current caching DataBlock (%): 18
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.16, overhead (%): 14, heavy evic counter counter: 54, current caching DataBlock (%): 18
evicted (MB): 228, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.14, overhead (%): 14, heavy evic counter counter: 55, current caching DataBlock (%): 18
evicted (MB): 112, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.14, overhead (%): -44, heavy evic counter counter: 55, caching current DataBlock (%): 23 < back pressure
evicted (MB): 456, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.26, overhead (%): 128, heavy evic counter counter: 56, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.31, overhead (%): 71, heavy evic counter counter: 57, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 71, heavy evic counter counter: 58, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 71, heavy evic counter counter: 59, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 71, heavy evic counter counter: 60, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 71, heavy evic counter counter: 61, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 71, heavy evic counter counter: 62, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 71, heavy evic counter counter: 63, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.32, overhead (%): 71, heavy evic counter counter: 64, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 71, heavy evic counter counter: 65, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 71, heavy evic counter counter: 66, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.32, overhead (%): 71, heavy evic counter counter: 67, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 71, heavy evic counter counter: 68, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.32, overhead (%): 71, heavy evic counter counter: 69, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.32, overhead (%): 71, heavy evic counter counter: 70, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 71, heavy evic counter counter: 71, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 71, heavy evic counter counter: 72, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 71, heavy evic counter counter: 73, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 71, heavy evic counter counter: 74, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 71, heavy evic counter counter: 75, current caching DataBlock (%): 22
evicted (MB): 342, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): 71, heavy evic counter counter: 76, current caching DataBlock (%): 22
evicted (MB): 21, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.33, overhead (%): -90, เบงเบฝเบเบ‡เบฒเบ™เบ•เป‰เบฒเบ™เบเบฒเบ™เบ‚เบฑเบšเป„เบฅเปˆเบขเปˆเบฒเบ‡เบฎเบธเบ™เปเบฎเบ‡: 76, caching เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ DataBlock (%): 32
evicted (MB): 0, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.0, overhead (%): -100, เบงเบฝเบเบ‡เบฒเบ™เบ•เป‰เบฒเบ™เบเบฒเบ™เบ‚เบฑเบšเป„เบฅเปˆเบขเปˆเบฒเบ‡เบฎเบธเบ™เปเบฎเบ‡: 0, caching เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ DataBlock (%): 100
evicted (MB): 0, เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™ 0.0, overhead (%): -100, เบงเบฝเบเบ‡เบฒเบ™เบ•เป‰เบฒเบ™เบเบฒเบ™เบ‚เบฑเบšเป„เบฅเปˆเบขเปˆเบฒเบ‡เบฎเบธเบ™เปเบฎเบ‡: 0, caching เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ DataBlock (%): 100

เบเบฒเบ™เบชเบฐเปเบเบ™เปเบกเปˆเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบเบฒเบŸเบ‚เบญเบ‡เบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบญเบ‡เบชเปˆเบงเบ™ cache - เบ”เบฝเบง (เบšเปˆเบญเบ™เบ—เบตเปˆเบšเบฅเบฑเบญเบเบ—เบตเปˆเบšเปเปˆเป€เบ„เบตเบเบ–เบทเบเบฎเป‰เบญเบ‡เบ‚เปเบกเบฒเบเปˆเบญเบ™) เปเบฅเบฐเบซเบผเบฒเบ (เบ‚เปเป‰เบกเบนเบ™ "เบฎเป‰เบญเบ‡เบ‚เป" เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เบ—เบตเปˆเบ™เบตเป‰):

เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เป€เบ–เบดเบ‡ 3 เป€เบ—เบปเปˆเบฒเปเบฅเบฐเบˆเบฒเบ HDFS เป€เบ–เบดเบ‡ 5 เป€เบ—เบปเปˆเบฒ

เปเบฅเบฐเบชเบธเบ”เบ—เป‰เบฒเบ, เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเปเบ™เบงเปƒเบ”เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบเบฒเบŸ. เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš, cache เป„เบ”เป‰เบ–เบทเบเบ›เบดเบ”เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ HBase เป„เบ”เป‰เบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบงเบ”เป‰เบงเบ cache เปเบฅเบฐเบเบฒเบ™เบŠเบฑเบเบŠเป‰เบฒเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป‚เบ”เบ 5 เบ™เบฒเบ—เบต (30 เบฎเบญเบšเบเบฒเบ™เบ‚เบฑเบšเป„เบฅเปˆ).

เบฅเบฐเบซเบฑเบ”เป€เบ•เบฑเบกเบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™ Pull Request HBASE 23887 เปƒเบ™ github.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, 300 เบžเบฑเบ™เบญเปˆเบฒเบ™เบ•เปเปˆเบงเบดเบ™เบฒเบ—เบตเบšเปเปˆเปเบกเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธเป„เบ”เป‰เปƒเบ™เบฎเบฒเบ”เปเบงเบžเบฒเบเปƒเบ•เป‰เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบฅเป‰เบงเปเบกเปˆเบ™เบงเปˆเบฒเป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เปเป‰เบกเบนเบ™เบœเปˆเบฒเบ™ HDFS, เบเบปเบ™เป„เบ ShortCircuitCache (เบ•เปเปˆเป„เบ›เบ™เบตเป‰เป€เบญเบตเป‰เบ™เบงเปˆเบฒ SSC) เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เปเป‰เบกเบนเบ™เป„เบ”เป‰เป‚เบ”เบเบเบปเบ‡, เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเป€เบ„เบทเบญเบ‚เปˆเบฒเบ.

Profiling เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบงเปˆเบฒเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเบปเบ™เป„เบเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡, เบกเบฑเบ™เบเบฑเบ‡เบขเบนเปˆเปƒเบ™เบšเบฒเบ‡เบˆเบธเบ”เบเปเปˆเบเบฒเบเป€เบ›เบฑเบ™เบ„เปเบ‚เบงเบ”, เป€เบžเบฒเบฐเบงเปˆเบฒเป€เบเบทเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบซเบ™เบฑเบเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบžเบฒเบเปƒเบ™ lock, เป€เบŠเบดเปˆเบ‡เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เป€เบเบทเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”.

เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เป€เบ–เบดเบ‡ 3 เป€เบ—เบปเปˆเบฒเปเบฅเบฐเบˆเบฒเบ HDFS เป€เบ–เบดเบ‡ 5 เป€เบ—เบปเปˆเบฒ

เป‚เบ”เบเป„เบ”เป‰เบฎเบฑเบšเบฎเบนเป‰เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบงเปˆเบฒเบšเบฑเบ™เบซเบฒเบชเบฒเบกเบฒเบ”เบซเบฅเบตเบเบฅเป‰เบฝเบ‡เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เบชเป‰เบฒเบ‡ array เบ‚เบญเบ‡ SSCs เป€เบญเบเบฐเบฅเบฒเบ”:

private final ShortCircuitCache[] shortCircuitCache;
...
shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum];
for (int i = 0; i < this.clientShortCircuitNum; i++)
  this.shortCircuitCache[i] = new ShortCircuitCache(โ€ฆ);

เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒ, เบเบปเบเป€เบงเบฑเป‰เบ™เบˆเบธเบ”เบ•เบฑเบ”เบเบฑเบ™เบขเบนเปˆเปƒเบ™เบ•เบปเบงเป€เบฅเบเบŠเบปเบ”เป€เบŠเบตเบเบชเบธเบ”เบ—เป‰เบฒเบ:

public ShortCircuitCache getShortCircuitCache(long idx) {
    return shortCircuitCache[(int) (idx % clientShortCircuitNum)];
}

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบญเปˆเบฒเบ™เป„เบŸเบฅเปŒเบˆเบฒเบ HDFS เบ”เป‰เบงเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบซเบผเบฒเบเบเบฐเบ—เบนเป‰เบ‡เปˆเบฒเบเบ”เบฒเบ. เบเปเบฒเบ™เบปเบ”เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต:

conf.set("dfs.client.read.shortcircuit", "true");
conf.set("dfs.client.read.shortcircuit.buffer.size", "65536"); // ะฟะพ ะดะตั„ะพะปั‚ัƒ = 1 ะœะ‘ ะธ ัั‚ะพ ัะธะปัŒะฝะพ ะทะฐะผะตะดะปัะตั‚ ั‡ั‚ะตะฝะธะต, ะฟะพัั‚ะพะผัƒ ะปัƒั‡ัˆะต ะฟั€ะธะฒะตัั‚ะธ ะฒ ัะพะพั‚ะฒะตั‚ัั‚ะฒะธะต ะบ ั€ะตะฐะปัŒะฝั‹ะผ ะฝัƒะถะดะฐะผ
conf.set("dfs.client.short.circuit.num", num); // ะพั‚ 1 ะดะพ 10

เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบญเปˆเบฒเบ™เป„เบŸเบฅเปŒ:

FSDataInputStream in = fileSystem.open(path);
for (int i = 0; i < count; i++) {
    position += 65536;
    if (position > 900000000)
        position = 0L;
    int res = in.read(position, byteBuffer, 0, 65536);
}

เบฅเบฐเบซเบฑเบ”เบ™เบตเป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบเบฐเบ—เบนเป‰เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เป„เบŸเบฅเปŒเบญเปˆเบฒเบ™เบžเป‰เบญเบกเป†เบเบฑเบ™ (เบˆเบฒเบ 10 เบซเบฒ 200 - เปเบเบ™เบญเบญเบเบ•เบฒเบกเบฅเบงเบ‡เบ™เบญเบ™) เปเบฅเบฐเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ (เบˆเบฒเบ 1 เบซเบฒ 10 - เบฎเบนเบšเบžเบฒเบš). เปเบเบ™เบ•เบฑเป‰เบ‡เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบ„เบงเบฒเบกเป€เบฅเบฑเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ‚เบญเบ‡ SSC เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเปเบฅเบฐเบ™เบตเป€เบกเบทเปˆเบญเบกเบตเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เปเบ„เบ”.

เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เป€เบ–เบดเบ‡ 3 เป€เบ—เบปเปˆเบฒเปเบฅเบฐเบˆเบฒเบ HDFS เป€เบ–เบดเบ‡ 5 เป€เบ—เบปเปˆเบฒ

เบงเบดเบ—เบตเบเบฒเบ™เบญเปˆเบฒเบ™เบเบฒเบŸ: เป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบš 100 เบžเบฑเบ™เบญเปˆเบฒเบ™เปƒเบ™ 64 KB blocks เบเบฑเบš cache เบซเบ™เบถเปˆเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™ 78 เบงเบดเบ™เบฒเบ—เบต. เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆ 5 cache เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒ 16 เบงเบดเบ™เบฒเบ—เบต. เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เบกเบตเบเบฒเบ™เป€เบฅเบฑเปˆเบ‡ ~5 เป€เบ—เบปเปˆเบฒ. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป€เบซเบฑเบ™เป„เบ”เป‰เบˆเบฒเบเบเบฒเบŸ, เบœเบปเบ™เบเบฐเบ—เบปเบšเปเบกเปˆเบ™เบšเปเปˆเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเปˆเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบ; เบกเบฑเบ™เป€เบฅเบตเปˆเบกเบกเบตเบšเบปเบ”เบšเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เป€เบกเบทเปˆเบญเบกเบตเบซเบผเบฒเบเบเบงเปˆเบฒ 50 threads เบญเปˆเบฒเบ™, เบกเบฑเบ™เบเบฑเบ‡เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ SSCs เบˆเบฒเบ 6. เปเบฅเบฐเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ.

เบซเบกเบฒเบเป€เบซเบ” 1: เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบœเบปเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบ›เปˆเบฝเบ™เปเบ›เบ‡ (เป€เบšเบดเปˆเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰), 3 เปเบฅเปˆเบ™เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เบชเบฐเป€เบฅเปˆเบ.

เบซเบกเบฒเบเป€เบซเบ” 2: เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบˆเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เปเบšเบšเบชเบธเปˆเบกเปเบกเปˆเบ™เบ„เบทเบเบฑเบ™, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เปเบกเปˆเบ™เบŠเป‰เบฒเบเบงเปˆเบฒเป€เบฅเบฑเบเบ™เป‰เบญเบ.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบŠเบตเป‰เปเบˆเบ‡เบงเปˆเบฒ, เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบšเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบกเบต HBase, เบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบšเปเปˆเป€เบชเบเบ„เปˆเบฒเบชเบฐเป€เบซเบกเบต. เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒ "เบ›เบปเบ”เบฅเบฑเบญเบ" เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡ CPU เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบซเบผเบฒเบ, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบซเป‰เบญเบเปƒเบชเปˆเบฅเบฑเบญเบ.

เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เป€เบ–เบดเบ‡ 3 เป€เบ—เบปเปˆเบฒเปเบฅเบฐเบˆเบฒเบ HDFS เป€เบ–เบดเบ‡ 5 เป€เบ—เบปเปˆเบฒ

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒ, เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ›เบฐเบกเบฒเบ™เบญเบฑเบ”เบ•เบฒเบชเปˆเบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ CPU. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบตเบเบฒเบ™เบ›เบฐเบชเบปเบกเบŠเบฐเบ™เบฐเป€เบฅเบฑเบเบ™เป‰เบญเบ.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบซเป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบขเปˆเบฒเบ‡เบฅเบฐเบญเบฝเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ SSC = 3. เบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบฅเบฐเบ”เบฑเบšเปเบกเปˆเบ™เบ›เบฐเบกเบฒเบ™ 3.3 เป€เบ—เบปเปˆเบฒ. เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบˆเบฒเบเบ—เบฑเบ‡เบชเบฒเบกเปเบฅเปˆเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ.

เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เป€เบ–เบดเบ‡ 3 เป€เบ—เบปเปˆเบฒเปเบฅเบฐเบˆเบฒเบ HDFS เป€เบ–เบดเบ‡ 5 เป€เบ—เบปเปˆเบฒ

เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบ CPU เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ›เบฐเบกเบฒเบ™ 2.8 เป€เบ—เบปเปˆเบฒ. เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปเบกเปˆเบ™เบšเปเปˆเปƒเบซเบเปˆเบซเบผเบฒเบ, เปเบ•เปˆ Greta เบ™เป‰เบญเบเบเปเปˆเบกเบตเบ„เบงเบฒเบกเบชเบธเบเปเบฅเป‰เบงเปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบกเบตเป€เบงเบฅเบฒเป€เบ‚เบปเป‰เบฒเป‚เบฎเบ‡เบฎเบฝเบ™เปเบฅเบฐเบ–เบญเบ”เบ–เบญเบ™เบšเบปเบ”เบฎเบฝเบ™.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ™เบตเป‰เบˆเบฐเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ—เบฒเบ‡เบšเบงเบเบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเปƒเบ”เป†เบ—เบตเปˆเปƒเบŠเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ HDFS เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบ (เบ•เบปเบงเบขเปˆเบฒเบ‡ Spark, เปเบฅเบฐเบญเบทเปˆเบ™เป†), เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบกเปˆเบ™เบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบเป€เบšเบปเบฒ (i. e. เบชเบฝเบšเปเบกเปˆเบ™เบขเบนเปˆเบ‚เป‰เบฒเบ‡เบฅเบนเบเบ„เป‰เบฒ HDFS) เปเบฅเบฐเบกเบตเบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™ CPU เบŸเบฃเบต. . เป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡, เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ—เบปเบ”เบชเบญเบšเบงเปˆเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ BlockCache เปเบฅเบฐเบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡ SSC เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เบˆเบฐเบกเบตเบœเบปเบ™เปเบ™เบงเปƒเบ”.

เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เป€เบ–เบดเบ‡ 3 เป€เบ—เบปเปˆเบฒเปเบฅเบฐเบˆเบฒเบ HDFS เป€เบ–เบดเบ‡ 5 เป€เบ—เบปเปˆเบฒ

เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เบงเปˆเบฒเบžเบฒเบเปƒเบ•เป‰เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบœเบปเบ™เบเบฐเบ—เบปเบšเปเบกเปˆเบ™เบšเปเปˆเบเบดเปˆเบ‡เปƒเบซเบเปˆเป€เบ—เบปเปˆเบฒเบเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเบซเบฅเบญเบกเป‚เบฅเบซเบฐ (เบเบฒเบ™เบญเปˆเบฒเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เปƒเบ”เป†), เปเบ•เปˆเบกเบฑเบ™เบเปเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบšเบตเบšเบญเบญเบเบ•เบทเปˆเบกเบญเบตเบ 80K เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰. เบฎเปˆเบงเบกเบเบฑเบ™, เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เบฑเบ‡เบชเบญเบ‡เปƒเบซเป‰เบ„เบงเบฒเบกเป„เบงเป€เบ–เบดเบ‡ 4x.

PR เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ™เบตเป‰ [HDFS-15202], เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เปเบฅเบฐเบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เบˆเบฐเบกเบตเบขเบนเปˆเปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”.

เปเบฅเบฐเบชเบธเบ”เบ—เป‰เบฒเบ, เบกเบฑเบ™เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบ›เบฝเบšเบ—เบฝเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบญเปˆเบฒเบ™เบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบ„เปเบฅเปเบฒเบเบงเป‰เบฒเบ‡เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, Cassandra เปเบฅเบฐ HBase.

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบ›เบตเบ”เบ•เบปเบงเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เป‚เบซเบผเบ” YCSB เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบˆเบฒเบเบชเบญเบ‡เป‚เบฎเบ” (เบ—เบฑเบ‡เบซเบกเบปเบ” 800 threads). เปƒเบ™เบ”เป‰เบฒเบ™เป€เบŠเบตเบŸเป€เบงเบต - 4 เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡ RegionServer เปเบฅเบฐ Cassandra เปƒเบ™ 4 เป‚เบฎเบ” (เบšเปเปˆเปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบฅเบนเบเบ„เป‰เบฒเบเปเบฒเบฅเบฑเบ‡เปเบฅเปˆเบ™, เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบญเบดเบ”เบ—เบดเบžเบปเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ). เบเบฒเบ™เบญเปˆเบฒเบ™เปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ‚เบฐเบซเบ™เบฒเบ”:

HBase - 300 GB เปƒเบ™ HDFS (เบ‚เปเป‰เบกเบนเบ™เบšเปเบฅเบดเบชเบธเบ” 100 GB)

Cassandra - 250 GB (เบ›เบฑเบ”เป„เบˆเบเบฒเบ™เบˆเปเบฒเบฅเบญเบ‡ = 3)

เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เบ›เบฐเบฅเบดเบกเบฒเบ™เปเบกเปˆเบ™เบ›เบฐเบกเบฒเบ™เบ”เบฝเบงเบเบฑเบ™ (เปƒเบ™ HBase เป€เบฅเบฑเบเบ™เป‰เบญเบ).

เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™ HBase:

dfs.client.short.circuit.num = 5 (เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบฅเบนเบเบ„เป‰เบฒ HDFS)

hbase.lru.cache.heavy.eviction.count.limit = 30 - เบ™เบตเป‰โ€‹เบซเบกเบฒเบโ€‹เบ„เบงเบฒเบกโ€‹เบงเปˆเบฒ patch เบˆเบฐโ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบ 30 เบเบฒเบ™โ€‹เบ‚เบฑเบšโ€‹เป„เบฅเปˆ (~5 เบ™เบฒโ€‹เบ—เบตโ€‹)

hbase.lru.cache.heavy.eviction.mb.size.limit = 300 โ€” เบ›เบฐโ€‹เบฅเบดโ€‹เบกเบฒเบ™โ€‹เป€เบ›เบปเป‰เบฒโ€‹เบซเบกเบฒเบโ€‹เบ‚เบญเบ‡โ€‹เบ–เบฒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒโ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ‚เบฑเบšโ€‹เป„เบฅเปˆโ€‹

เบšเบฑเบ™เบ—เบถเบ YCSB เป„เบ”เป‰เบ–เบทเบเบงเบดเป€เบ„เบฒเบฐ เปเบฅเบฐเบฅเบงเบšเบฅเบงเบกเป€เบ›เบฑเบ™เบเบฒเบŸ Excel:

เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบˆเบฒเบ HBase เป€เบ–เบดเบ‡ 3 เป€เบ—เบปเปˆเบฒเปเบฅเบฐเบˆเบฒเบ HDFS เป€เบ–เบดเบ‡ 5 เป€เบ—เบปเปˆเบฒ

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ›เบฝเบšเบ—เบฝเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเปƒเบ•เป‰เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบฅเบฐเบšเบฑเบ™เบฅเบธ 450 เบžเบฑเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบ•เปเปˆเบงเบดเบ™เบฒเบ—เบต.

เบžเบงเบเป€เบฎเบปเบฒเบซเบงเบฑเบ‡เบงเปˆเบฒเบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ•เปเปˆเบœเบนเป‰เปƒเบ”เบœเบนเป‰เบ™เบถเปˆเบ‡เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ•เปเปˆเบชเบนเป‰เบ—เบตเปˆเบซเบ™เป‰เบฒเบ•เบทเปˆเบ™เป€เบ•เบฑเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบœเบปเบ™เบœเบฐเบฅเบดเบ”.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™