рджреБрдИ рдпрд╛рдХреЛрдЬреБрдирд╛рдХреЛ рдпреБрджреНрдз, рд╡рд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдмрдирд╛рдо рдПрдЪрдмреЗрд╕ред Sberbank рдЯреЛрд▓реАрдХреЛ рдЕрдиреБрднрд╡

рдпреЛ рдордЬрд╛рдХ рдкрдирд┐ рд╣реЛрдЗрди, рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдХрд┐ рдпреЛ рд╡рд┐рд╢реЗрд╖ рддрд╕реНрд╡реАрд░рд▓реЗ рдпреА рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВрдХреЛ рд╕рд╛рд░рд▓рд╛рдИ рд╕рд╣реА рд░реВрдкрдорд╛ рдкреНрд░рддрд┐рдмрд┐рдореНрдмрд┐рдд рдЧрд░реНрджрдЫ, рд░ рдЕрдиреНрддрдорд╛ рдпреЛ рд╕реНрдкрд╖реНрдЯ рд╣реБрдиреЗрдЫ рдХрд┐рди:

рджреБрдИ рдпрд╛рдХреЛрдЬреБрдирд╛рдХреЛ рдпреБрджреНрдз, рд╡рд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдмрдирд╛рдо рдПрдЪрдмреЗрд╕ред Sberbank рдЯреЛрд▓реАрдХреЛ рдЕрдиреБрднрд╡

DB-Engines Ranking рдЕрдиреБрд╕рд╛рд░, рджреБрдИ рд╕рдмреИрднрдиреНрджрд╛ рд▓реЛрдХрдкреНрд░рд┐рдп NoSQL рд╕реНрддрдореНрдн рдбреЗрдЯрд╛рдмреЗрд╕рд╣рд░реВ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ (рдпрд╕рдкрдЫрд┐ CS) рд░ HBase (HB) рд╣реБрдиреНред

рджреБрдИ рдпрд╛рдХреЛрдЬреБрдирд╛рдХреЛ рдпреБрджреНрдз, рд╡рд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдмрдирд╛рдо рдПрдЪрдмреЗрд╕ред Sberbank рдЯреЛрд▓реАрдХреЛ рдЕрдиреБрднрд╡

рднрд╛рдЧреНрдпрдХреЛ рдЗрдЪреНрдЫрд╛ рдЕрдиреБрд╕рд╛рд░, Sberbank рдорд╛ рд╣рд╛рдореНрд░реЛ рдбрд╛рдЯрд╛ рд▓реЛрдбрд┐рдЩ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЯреЛрд▓реА рдкрд╣рд┐рд▓реЗ рдиреИ рдЫ ╨┤╨░╨▓╨╜╨╛ рд░ HB рд╕рдБрдЧ рдирдЬрд┐рдХрдмрд╛рдЯ рдХрд╛рдо рдЧрд░реНрджрдЫред рдпрд╕ рд╕рдордпрдорд╛, рд╣рд╛рдореАрд▓реЗ рдпрд╕рдХреЛ рдмрд▓ рд░ рдХрдордЬреЛрд░реАрд╣рд░реВ рд░рд╛рдореНрд░рд░реА рдЕрдзреНрдпрдпрди рдЧрд░реНрдпреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рдкрдХрд╛рдЙрдиреЗ рднрдиреЗрд░ рд╕рд┐рдХреНрдпреМрдВред рдЬреЗ рд╣реЛрд╕реН, CS рдХреЛ рд░реВрдкрдорд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдкрдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рд╕рдзреИрдВ рд╢рдВрдХрд╛рдХреЛ рд╕рд╛рде рдЖрдлреВрд▓рд╛рдИ рд╕рддрд╛рдЙрди рдмрд╛рдзреНрдп рдмрдирд╛рдпреЛ: рдХреЗ рд╣рд╛рдореАрд▓реЗ рд╕рд╣реА рдЫрдиреМрдЯ рдЧрд░реНрдпреМрдВ? рдпрд╕рдмрд╛рд╣реЗрдХ, рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рддреБрд▓рдирд╛, DataStax рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рди, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рднрдиреЗ рдХрд┐ CS рд▓реЗ рд▓рдЧрднрдЧ рдПрдХ рдХреНрд░рд╢рд┐рдВрдЧ рд╕реНрдХреЛрд░ рд╕рдВрдЧ рд╕рдЬрд┐рд▓реИ HB рд▓рд╛рдИ рд╣рд░рд╛рдЙрдБрдЫред рдЕрд░реНрдХреЛрддрд░реНрдл, DataStax рдПрдХ рдЗрдЪреНрдЫреБрдХ рдкрд╛рд░реНрдЯреА рд╣реЛ, рд░ рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдЙрдиреАрд╣рд░реВрдХреЛ рд╢рдмреНрдж рд▓рд┐рдиреБ рд╣реБрдБрджреИрдиред рд╣рд╛рдореА рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрддрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдереЛрд░реИ рдорд╛рддреНрд░рд╛рдорд╛ рдЬрд╛рдирдХрд╛рд░реАрд▓реЗ рдкрдирд┐ рдЕрд▓рдорд▓рдорд╛ рдерд┐рдпреМрдВ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ BigData NoSql рдХреЛ рд░рд╛рдЬрд╛ рдХреЛ рд╣реЛ рднрдиреЗрд░ рдЖрдлреИрд▓реЗ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНтАНрдпреМрдВ, рд░ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдзреЗрд░реИ рд░реЛрдЪрдХ рд╣реБрди рдкреБрдЧреЗред

рдпрджреНрдпрдкрд┐, рдкрд░реАрдХреНрд╖рдгрдХреЛ рдирддрд┐рдЬрд╛рдорд╛ рдЬрд╛рдиреБ рдЕрдШрд┐, рд╡рд╛рддрд╛рд╡рд░рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдкрдХреНрд╖рд╣рд░реВ рд╡рд░реНрдгрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рддрдереНрдп рдпреЛ рд╣реЛ рдХрд┐ CS рд▓рд╛рдИ рдбреЗрдЯрд╛ рд╣рд░рд╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗ рдореЛрдбрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рддреАред рдпреЛ рддрдм рд╣реБрдиреНрдЫ рдЬрдм рдХреЗрд╡рд▓ рдПрдХ рд╕рд░реНрднрд░ (рдиреЛрдб) рдирд┐рд╢реНрдЪрд┐рдд рдХреБрдЮреНрдЬреАрдХреЛ рдбрд╛рдЯрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рд╣реБрдиреНрдЫ, рд░ рдпрджрд┐ рдХреБрдиреИ рдХрд╛рд░рдгрд▓реЗ рдпреЛ рдЕрд╕рдлрд▓ рднрдпреЛ рднрдиреЗ, рдпреЛ рдХреБрдЮреНрдЬреАрдХреЛ рдорд╛рди рд╣рд░рд╛рдЙрдиреЗрдЫред рдзреЗрд░реИ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫреИрди, рддрд░ рдмреИрдВрдХрд┐рдЩ рдХреНрд╖реЗрддреНрд░рдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рдирд┐рдпрдо рднрдиреНрджрд╛ рдЕрдкрд╡рд╛рдж рд╣реЛред рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рднрд░рдкрд░реНрджреЛ рднрдгреНрдбрд╛рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдбрд╛рдЯрд╛рдХреЛ рдзреЗрд░реИ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐рд╣рд░реВ рд╣реБрдиреБ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫред

рддреНрдпрд╕рдХрд╛рд░рдг, рдЯреНрд░рд┐рдкрд▓ рдкреНрд░рддрд┐рдХреГрддрд┐ рдореЛрдбрдорд╛ рдорд╛рддреНрд░ CS рдЕрдкрд░реЗрдЯрд┐рдЩ рдореЛрдбрд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░рд┐рдпреЛ, рдЕрд░реНрдерд╛рддреНред рдХреЗрд╕рд╕реНрдкреЗрд╕рдХреЛ рд╕рд┐рд░реНрдЬрдирд╛ рдирд┐рдореНрди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрд╕рдБрдЧ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ:

CREATE KEYSPACE ks WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3};

рдЕрд░реНрдХреЛ, рд╕реНрдерд┐рд░рддрд╛рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд╕реНрддрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рджреБрдИ рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреНред рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо:
NW + NR > RF

рдЬрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реЛ рдХрд┐ (NW) рд▓реЗрдЦреНрджрд╛ рдиреЛрдбрд╣рд░реВрдмрд╛рдЯ рдкреБрд╖реНрдЯрд┐рдХрд░рдгрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рд░ рдкрдвреНрджрд╛ (NR) рдиреЛрдбрд╣рд░реВрдмрд╛рдЯ рдкреБрд╖реНрдЯрд┐рдХрд░рдгрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрд╛рд░рдХ рднрдиреНрджрд╛ рдмрдвреА рд╣реБрдиреБрдкрд░реНрдЫред рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, RF = 3, рдЬрд╕рдХреЛ рдорддрд▓рдм рдирд┐рдореНрди рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЙрдкрдпреБрдХреНрдд рдЫрдиреН:
реи + реи > рей
реи + реи > рей

рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдбрд╛рдЯрд╛рд▓рд╛рдИ рд╕рдХреЗрд╕рдореНрдо рднрд░рдкрд░реНрджреЛ рд░реВрдкрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреБ рдореМрд▓рд┐рдХ рд░реВрдкрдорд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рднрдПрдХреЛрд▓реЗ, рей+рез рдпреЛрдЬрдирд╛ рдЫрдиреЛрдЯ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдердк рд░реВрдкрдорд╛, HB рд╕рдорд╛рди рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫ, рдЕрд░реНрдерд╛рддреНред рдпрд╕реНрддреЛ рддреБрд▓рдирд╛ рдЕрдзрд┐рдХ рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реБрдиреЗрдЫред

рдпреЛ рдзреНрдпрд╛рди рджрд┐рдиреБрдкрд░реНрдЫ рдХрд┐ DataStax рд▓реЗ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЕрдзреНрдпрдпрдирдорд╛ рдЙрд▓реНрдЯреЛ рдЧрд░реНрдпреЛ, рддрд┐рдиреАрд╣рд░реВрд▓реЗ CS рд░ HB рджреБрд╡реИрдХреЛ рд▓рд╛рдЧрд┐ RF = 1 рд╕реЗрдЯ рдЧрд░реЗ (рдкрдЫрд┐рд▓реНрд▓реЛрдХрд╛ рд▓рд╛рдЧрд┐ HDFS рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрд░)ред рдпреЛ рдПрдХ рд╕рд╛рдБрдЪреНрдЪреИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдкрдХреНрд╖ рд╣реЛ рдХрд┐рдирднрдиреЗ рдпрд╕ рдорд╛рдорд▓рд╛ рдорд╛ CS рдкреНрд░рджрд░реНрд╢рди рдорд╛ рдкреНрд░рднрд╛рд╡ рдареВрд▓реЛ рдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрд▓рдХреЛ рдЪрд┐рддреНрд░рд▓реЗ CS рдорд╛ рдбрд╛рдЯрд╛ рд▓реЛрдб рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╕рдордпрдХреЛ рд╡реГрджреНрдзрд┐ рджреЗрдЦрд╛рдЙрдБрдЫ:

рджреБрдИ рдпрд╛рдХреЛрдЬреБрдирд╛рдХреЛ рдпреБрджреНрдз, рд╡рд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдмрдирд╛рдо рдПрдЪрдмреЗрд╕ред Sberbank рдЯреЛрд▓реАрдХреЛ рдЕрдиреБрднрд╡

рдпрд╣рд╛рдБ рд╣рд╛рдореА рдирд┐рдореНрди рджреЗрдЦреНрдЫреМрдВ: рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдереНрд░реЗрдбрд╣рд░реВрд▓реЗ рдбрд╛рдЯрд╛ рд▓реЗрдЦреНрдЫрдиреН, рдпреЛ рд▓рд╛рдореЛ рд╕рдордп рд▓рд╛рдЧреНрдЫред рдпреЛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реЛ, рддрд░ рдпреЛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рдХрд┐ RF=3 рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рджрд░реНрд╢рди рдЧрд┐рд░рд╛рд╡рдЯ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рдЙрдЪреНрдЪ рдЫред рдЕрд░реНрдХреЛ рд╢рдмреНрджрдорд╛, рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ 4 рдереНрд░реЗрдбрд╣рд░реВрд▓рд╛рдИ 5 рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдорд╛ рдкреНрд░рддреНрдпреЗрдХрдорд╛ рд▓реЗрдЦреНрдпреМрдВ (рдХреБрд▓рдорд╛ 20), рддрдм RF=3 рд▓рдЧрднрдЧ 2 рдЧреБрдгрд╛рд▓реЗ рд╣рд░рд╛рдЙрдБрдЫ (RF=150 рдХреЛ рд▓рд╛рдЧрд┐ 3 рдмрдирд╛рдо RF=75 рдХреЛ рд▓рд╛рдЧрд┐ 1 рд╕реЗрдХреЗрдиреНрдб)ред рддрд░ рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ 8 рдереНрд░реЗрдбрд╣рд░реВ (рдХреБрд▓ 5) рднрдПрдХреЛ 40 рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдорд╛ рдбрд╛рдЯрд╛ рд▓реЛрдб рдЧрд░реЗрд░ рд▓реЛрдб рдмрдврд╛рдЙрдБрдЫреМрдВ, рддрдм RF=3 рдХреЛ рд╣рд╛рдирд┐ рдкрд╣рд┐рд▓реЗ рдиреИ 2,7 рдЧреБрдгрд╛ (375 рд╕реЗрдХреЗрдиреНрдб рдмрдирд╛рдо 138) рдЫред

рд╕рд╛рдпрдж рдпреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдкрдорд╛ CS рдХреЛ рд▓рд╛рдЧрд┐ DataStax рджреНрд╡рд╛рд░рд╛ рдЧрд░рд┐рдПрдХреЛ рд╕рдлрд▓ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдгрдХреЛ рд░рд╣рд╕реНрдп рд╣реЛ, рдХрд┐рдирднрдиреЗ HB рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рд╕реНрдЯреНрдпрд╛рдиреНрдбрдорд╛ 2 рджреЗрдЦрд┐ 3 рд╕рдореНрдо рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрд╛рд░рдХ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджрд╛ рдХреБрдиреИ рдкреНрд░рднрд╛рд╡ рднрдПрдиред рддреАред рдбрд┐рд╕реНрдХрд╣рд░реВ рд╣рд╛рдореНрд░реЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ HB рдмрд╛рдзрд╛рд╣рд░реВ рд╣реЛрдЗрдирдиреНред рдЬреЗ рд╣реЛрд╕реН, рдпрд╣рд╛рдБ рдзреЗрд░реИ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдЫрдиреН, рдХрд┐рдирднрдиреЗ рдпреЛ рдзреНрдпрд╛рди рджрд┐рдиреБ рдкрд░реНрдЫ рдХрд┐ рд╣рд╛рдореНрд░реЛ HB рдХреЛ рд╕рдВрд╕реНрдХрд░рдг рдереЛрд░реИ рдкреНрдпрд╛рдЪ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рд░ рдЯреНрд╡реАрдХ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рд╡рд╛рддрд╛рд╡рд░рдг рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдлрд░рдХ рдЫ, рдЖрджрд┐ред рдпреЛ рдкрдирд┐ рдзреНрдпрд╛рди рджрд┐рди рд▓рд╛рдпрдХ рдЫ рдХрд┐ рд╣реБрдирд╕рдХреНрдЫ рдорд▓рд╛рдИ CS рдХрд╕рд░реА рд╕рд╣реА рддрд░рд┐рдХрд╛рд▓реЗ рддрдпрд╛рд░ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдерд╛рд╣рд╛ рдЫреИрди рд░ рддреНрдпрд╣рд╛рдБ рдпрд╕рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдХреЗрд╣реА рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреН, рд░ рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рд╣рд╛рдореАрд▓реЗ рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВрдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреЗрдЫреМрдВред рддрд░ рдкрд╣рд┐рд▓реЛ рдХреБрд░рд╛ рдкрд╣рд┐рд▓реЗред

рд╕рдмреИ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ 4 рд╕рд░реНрднрд░рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рднрдПрдХреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреНрд▓рд╕реНрдЯрд░рдорд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдореНрди рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рд╕рд╛рде:

CPU: Xeon E5-2680 v4 @ 2.40GHz 64 рдереНрд░реЗрдбрд╣рд░реВред
рдбрд┐рд╕реНрдХ: 12 рдЯреБрдХреНрд░рд╛ SATA HDD
java рд╕рдВрд╕реНрдХрд░рдг: 1.8.0_111

CS рд╕рдВрд╕реНрдХрд░рдг: 3.11.5

cassandra.yml рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВnum_tokens: 256
hinted_handoff_enabled: true
hinted_handoff_throttle_in_kb: 1024
max_hints_delivery_threads: 2
hints_directory: /data10/cassandra/hints
hints_flush_period_in_ms: 10000
max_hints_file_size_in_mb: 128
batchlog_replay_throttle_in_kb: 1024
рдкреНрд░рдорд╛рдгрдХ: AllowAllAuthenticator
рдкреНрд░рд╛рдзрд┐рдХрд░рдг: AllowAllAuthorizer
role_manager: CassandraRoleManager
roles_validity_in_ms: 2000
permissions_validity_in_ms: 2000
credentials_validity_in_ms: 2000
рд╡рд┐рднрд╛рдЬрдирдХрд░реНрддрд╛: org.apache.cassandra.dht.Murmur3Partitioner
data_file_directories:
- /data1/cassandra/data # рдкреНрд░рддреНрдпреЗрдХ dataN рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рдПрдХ рдЕрд▓рдЧ рдбрд┐рд╕реНрдХ рд╣реЛ
- /data2/cassandra/data
- /data3/cassandra/data
- /data4/cassandra/data
- /data5/cassandra/data
- /data6/cassandra/data
- /data7/cassandra/data
- /data8/cassandra/data
commitlog_directory: /data9/cassandra/commitlog
cdc_enabled: false
disk_failure_policy: рд░реЛрдХреНрдиреБрд╣реЛрд╕реН
рдХрдорд┐рдЯ_рдлреЗрд▓реНрдпреЛрд░_рдиреАрддрд┐: рд░реЛрдХреНрдиреБрд╣реЛрд╕реН
рддрдпрд╛рд░_рдмрдпрд╛рдирд╣рд░реВ_cache_size_mb:
thrift_prepared_statements_cache_size_mb:
key_cache_size_in_mb:
key_cache_save_period: 14400
row_cache_size_in_mb: реж
row_cache_save_period: 0
counter_cache_size_in_mb:
counter_cache_save_period: 7200
saved_caches_directory: /data10/cassandra/saved_caches
рдХрдорд┐рдЯрд▓реЙрдЧ_рд╕рд┐рдВрдХ: рдЖрд╡рдзрд┐рдХ
commitlog_sync_period_in_ms: 10000
commitlog_segment_size_in_mb: 32
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ:
- рдмреАрдЬ: "*, *"
concurrent_reads: 256 # рдкреНрд░рдпрд╛рд╕ 64 - рдХреБрдиреИ рдлрд░рдХ рджреЗрдЦрд┐рдПрди
concurrent_writes: 256 # рдкреНрд░рдпрд╛рд╕ 64 - рдХреБрдиреИ рдлрд░рдХ рджреЗрдЦрд┐рдПрди
concurrent_counter_writes: 256 # рдкреНрд░рдпрд╛рд╕ 64 - рдХреБрдиреИ рдлрд░рдХ рджреЗрдЦрд┐рдПрди
concurrent_materialized_view_writes: 32
memtable_heap_space_in_mb: 2048 # 16 GB рдкреНрд░рдпрд╛рд╕ рдЧрд░рд┐рдпреЛ - рдпреЛ рдврд┐рд▓реЛ рдерд┐рдпреЛ
memtable_allocation_type: heap_buffers
index_summary_capacity_in_mb:
index_summary_resize_interval_in_minutes: 60
trickle_fsync: рдЧрд▓рдд
trickle_fsync_interval_in_kb: 10240
рднрдгреНрдбрд╛рд░рдг_рдкреЛрд░реНрдЯ: 7000
ssl_storage_port: 7001
рд╕реБрдиреНрдиреЗ_рдареЗрдЧрд╛рдирд╛:*
рдкреНрд░рд╕рд╛рд░рдг_рдареЗрдЧрд╛рдирд╛: *
listen_on_broadcast_address: true
internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator
start_native_transport: рд╕рддреНрдп
рдиреЗрдЯрд┐рдн_рдЯреНрд░рд╛рдиреНрд╕рдкреЛрд░реНрдЯ_рдкреЛрд░реНрдЯ: репрежрекреи
start_rpc: рд╕рддреНрдп
rpc_address: *
rpc_port: 9160
rpc_keepalive: рд╕рддреНрдп
rpc_server_type: рд╕рд┐рдВрдХ
thrift_framed_transport_size_in_mb: 15
incremental_backups: false
snapshot_before_compaction: false
auto_snapshot: true
column_index_size_in_kb: 64
column_index_cache_size_in_kb: 2
рд╕рдорд╡рд░реНрддреА_рдХрдореНрдкреНрдпрд╛рдХреНрдЯрд░рд╣рд░реВ: 4
compaction_throughput_mb_per_sec: 1600
sstable_preemptive_open_interval_in_mb: релреж
read_request_timeout_in_ms: 100000
range_request_timeout_in_ms: 200000
write_request_timeout_in_ms: 40000
counter_write_request_timeout_in_ms: 100000
cas_contention_timeout_in_ms: 20000
truncate_request_timeout_in_ms: 60000
request_timeout_in_ms: 200000
slow_query_log_timeout_in_ms: 500
cross_node_timeout: false
endpoint_snitch: GossipingPropertyFileSnitch
dynamic_snitch_update_interval_in_ms: 100
dynamic_snitch_reset_interval_in_ms: 600000
dynamic_snitch_badness_threshold: реж.рез
request_scheduler: org.apache.cassandra.scheduler.NoScheduler
рд╕рд░реНрднрд░_рдЗрдиреНрдХреНрд░рд┐рдкреНрд╢рди_рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ:
internode_encryption: рдХреБрдиреИ рдкрдирд┐ рдЫреИрди
client_encryption_options:
рд╕рдХреНрд╖рдо: рдЧрд▓рдд
internode_compression: dc
inter_dc_tcp_nodelay: false
tracetype_query_ttl: 86400
tracetype_repair_ttl: ремрежрекреорежреж
enable_user_defined_functions: false
enable_scripted_user_defined_functions: false
windows_timer_interval: 1
рдкрд╛рд░рджрд░реНрд╢реА_рдбреЗрдЯрд╛_рдЗрдиреНрдХреНрд░рд┐рдкреНрд╢рди_рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ:
рд╕рдХреНрд╖рдо: рдЧрд▓рдд
tombstone_warn_threshold: 1000
tombstone_failure_threshold: 100000
batch_size_warn_threshold_in_kb: 200
batch_size_fail_threshold_in_kb: 250
unlogged_batch_across_partitions_warn_threshold: 10
compaction_large_partition_warning_threshold_mb: 100
gc_warn_threshold_in_ms: 1000
back_pressure_enabled: рдЧрд▓рдд
enable_materialized_views: true
enable_sasi_indexes: true

GC рд╕реЗрдЯрд┐рдЩрд╣рд░реВ:

### CMS рд╕реЗрдЯрд┐рдЩрд╣рд░реВ-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemark рд╕рдХреНрд╖рдо рдЧрд░рд┐рдпреЛ
-XX: рд╕рд░реНрд╡рд╛рдЗрднрд░ рдЕрдиреБрдкрд╛рдд = 8
-XX: MaxTenuringThreshold=1
-XX:CMSIinitiatingOccupancyFraction=75
-XX:+CMSIрдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдкреЗрд╢рд╛ рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН
-XX: CMSWaitDuration=10000
-XX:+CMSParallelInitialMark рд╕рдХреНрд╖рдо рдЧрд░рд┐рдпреЛ
-XX:+CMSEdenChunksRecordAlways
-XX:+CMSCclassUnloading рд╕рдХреНрд╖рдо рдЧрд░рд┐рдпреЛ

jvm.options рдореЗрдореЛрд░реА 16Gb рдЖрд╡рдВрдЯрд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ (рд╣рд╛рдореАрд▓реЗ 32 Gb рдХреЛ рдкреНрд░рдпрд╛рд╕ рдкрдирд┐ рдЧрд░реНрдпреМрдВ, рдХреБрдиреИ рдлрд░рдХ рджреЗрдЦрд┐рдПрди)ред

рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ:

CREATE TABLE ks.t1 (id bigint PRIMARY KEY, title text) WITH compression = {'sstable_compression': 'LZ4Compressor', 'chunk_length_kb': 64};

HB рд╕рдВрд╕реНрдХрд░рдг: 1.2.0-cdh5.14.2 (рд╡рд░реНрдЧ org.apache.hadoop.hbase.regionserver.HRegion рдорд╛ рд╣рд╛рдореАрд▓реЗ MetricsRegion рд▓рд╛рдИ рдмрд╣рд┐рд╖реНрдХрд╛рд░ рдЧрд░реНрдпреМрдВ рдЬрд╕рд▓реЗ GC рдХреЛ рдиреЗрддреГрддреНрд╡ рдЧрд░реНтАНрдпреЛ рдЬрдм рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ RegionServer рдорд╛ 1000 рднрдиреНрджрд╛ рдмрдвреА рдерд┐рдпреЛ)

рдЧреИрд░-рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд HBase рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВzookeeper.session.timeout: 120000
hbase.rpc.timeout: 2 рдорд┐рдиреЗрдЯ(рд╣рд░реВ)
hbase.client.scanner.timeout.period: 2 рдорд┐рдиреЗрдЯ(рд╣рд░реВ)
hbase.master.handler.count: 10
hbase.regionserver.lease.period, hbase.client.scanner.timeout.period: реи рдорд┐рдиреЗрдЯ(рд╣рд░реВ)
hbase.regionserver.handler.count: 160
hbase.regionserver.metahandler.count: рейреж
hbase.regionserver.logroll.period: рек рдШрдгреНрдЯрд╛(рд╣рд░реВ)
hbase.regionserver.maxlogs: 200
hbase.hregion.memstore.flush.size: 1 GiB
hbase.hregion.memstore.block.multiplier: 6
hbase.hstore.compactionThreshold: 5
hbase.hstore.blockingStoreFiles: 200
hbase.hregion.majorcompaction: 1 рджрд┐рди(рд╣рд░реВ)
hbase-site.xml рдХреЛ рд▓рд╛рдЧрд┐ HBase рд╕реЗрд╡рд╛ рдЙрдиреНрдирдд рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕реНрдирд┐рдкреЗрдЯ (рд╕реЗрдлреНрдЯреА рднрд▓реНрдн):
hbase.regionserver.wal.codecorg.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec
hbase.master.namespace.init.timeout3600000
hbase.regionserver.optionalcacheflushinterval18000000
hbase.regionserver.thread.compaction.large12
hbase.regionserver.wal.enablecompressiontrue
hbase.hstore.compaction.max.size1073741824
hbase.server.compactchecker.interval.multiplier200
HBase RegionServer рдХрд╛ рд▓рд╛рдЧрд┐ рдЬрд╛рднрд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ:
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSIinitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:ReservedCodeCacheSize=256m
hbase.snapshot.master.timeoutMillis: 2 рдорд┐рдиреЗрдЯ(рд╣рд░реВ)
hbase.snapshot.region.timeout: реи рдорд┐рдиреЗрдЯ(рд╣рд░реВ)
hbase.snapshot.master.timeout.millis: 2 рдорд┐рдиреЗрдЯ(рд╣рд░реВ)
HBase REST рд╕рд░реНрднрд░ рдЕрдзрд┐рдХрддрдо рд▓рдЧ рд╕рд╛рдЗрдЬ: 100 MiB
HBase REST рд╕рд░реНрднрд░ рдЕрдзрд┐рдХрддрдо рд▓рдЧ рдлрд╛рдЗрд▓ рдмреНрдпрд╛рдХрдЕрдкрд╣рд░реВ: 5
HBase Thrift Server рдЕрдзрд┐рдХрддрдо рд▓рдЧ рд╕рд╛рдЗрдЬ: 100 MiB
HBase Thrift Server рдЕрдзрд┐рдХрддрдо рд▓рдЧ рдлрд╛рдЗрд▓ рдмреНрдпрд╛рдХрдЕрдкрд╣рд░реВ: 5
рдорд╛рд╕реНрдЯрд░ рдЕрдзрд┐рдХрддрдо рд▓рдЧ рд╕рд╛рдЗрдЬ: 100 MiB
рдорд╛рд╕реНрдЯрд░ рдЕрдзрд┐рдХрддрдо рд▓рдЧ рдлрд╛рдЗрд▓ рдмреНрдпрд╛рдХрдЕрдк: 5
RegionServer рдЕрдзрд┐рдХрддрдо рд▓рдЧ рд╕рд╛рдЗрдЬ: 100 MiB
RegionServer рдЕрдзрд┐рдХрддрдо рд▓рдЧ рдлрд╛рдЗрд▓ рдмреНрдпрд╛рдХрдЕрдк: 5
HBase рд╕рдХреНрд░рд┐рдп рдорд╛рд╕реНрдЯрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗ рд╡рд┐рдиреНрдбреЛ: 4 рдорд┐рдиреЗрдЯ(рд╣рд░реВ)
dfs.client.hedged.read.threadpool.size: 40
dfs.client.hedged.read.threshold.millis: 10 рдорд┐рд▓рд┐рд╕реЗрдХреЗрдиреНрдб(рд╣рд░реВ)
hbase.rest.threads.min: 8
hbase.rest.threads.max: 150
рдЕрдзрд┐рдХрддрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛: 180000
hbase.thrift.minWorkerThreads: 200
hbase.master.executor.openregion.threads: рейреж
hbase.master.executor.closeregion.threads: рейреж
hbase.master.executor.serverops.threads: 60
hbase.regionserver.thread.compaction.small: 6
hbase.ipc.server.read.threadpool.size: 20
рдХреНрд╖реЗрддреНрд░ рдореВрднрд░ рдереНрд░реЗрдбрд╣рд░реВ: 6
рдХреНрд▓рд╛рдЗрдиреНрдЯ рдЬрд╛рднрд╛ рд╣рд┐рдк рд╕рд╛рдЗрдЬ рдмрд╛рдЗрдЯрдорд╛: 1 GiB
HBase REST рд╕рд░реНрднрд░ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдореВрд╣: 3 GiB
HBase Thrift Server рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдореВрд╣: 3 GiB
рдмрд╛рдЗрдЯрд╣рд░реВрдорд╛ HBase рдорд╛рд╕реНрдЯрд░рдХреЛ Java рд╣реАрдк рд╕рд╛рдЗрдЬ: 16 GiB
рдмрд╛рдЗрдЯрдорд╛ HBase RegionServer рдХреЛ Java рд╣рд┐рдк рд╕рд╛рдЗрдЬ: 32 GiB

+ ZooKeeper
maxClientCnxns: 601
maxSessionTimeout: 120000
рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ:
hbase org.apache.hadoop.hbase.util.RegionSplitter ns:t1 UniformSplit -c 64 -f cf
alter 'ns:t1', {NAME => 'cf', DATA_BLOCK_ENCODING => 'FAST_DIFF', COMPRESSION => 'GZ'}

рдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдмрд┐рдиреНрджреБ рдЫ - рдбрд╛рдЯрд╛рд╕реНрдЯреНрдпрд╛рдХреНрд╕ рд╡рд┐рд╡рд░рдгрд▓реЗ HB рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдХрддрд┐ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рднрдиреЗрд░ рдмрддрд╛рдЙрдБрджреИрди, рдпрджреНрдпрдкрд┐ рдпреЛ рдареВрд▓реЛ рдорд╛рддреНрд░рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫред рддреНрдпрд╕рдХрд╛рд░рдг, рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, рдорд╛рддреНрд░рд╛ = 64 рдЫрдиреЛрдЯ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЬрд╕рд▓реЗ 640 GB рд╕рдореНрдо рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рдЕрд░реНрдерд╛рддреНред рдордзреНрдпрдо рдЖрдХрд╛рд░рдХреЛ рддрд╛рд▓рд┐рдХрд╛ред

рдкрд░реАрдХреНрд╖рдгрдХреЛ рд╕рдордпрдорд╛, HBase рд╕рдБрдЧ 22 рд╣рдЬрд╛рд░ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рд░ 67 рд╣рдЬрд╛рд░ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдерд┐рдП (рдпреЛ рдорд╛рдерд┐ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдХреЛ рдкреНрдпрд╛рдЪрдХреЛ рд▓рд╛рдЧрд┐ рдирднрдПрдХреЛ 1.2.0 рд╕рдВрд╕реНрдХрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдШрд╛рддрдХ рд╣реБрдиреЗ рдерд┐рдпреЛ)ред

рдЕрдм рдХреЛрдб рдХреЛ рд▓рд╛рдЧреАред рдХреБрдиреИ рд╡рд┐рд╢реЗрд╖ рдбрд╛рдЯрд╛рдмреЗрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдХреБрди рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ рдмрдвреА рд▓рд╛рднрджрд╛рдпрдХ рдерд┐рдП рднрдиреНрдиреЗ рд╕реНрдкрд╖реНрдЯ рдирднрдПрдХреЛрд▓реЗ, рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдпреЛрдЬрдирд╣рд░реВрдорд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рддреАред рдХреЗрд╣реА рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдорд╛, 4 рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рдПрдХреИрд╕рд╛рде рд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ (рд╕рдмреИ 4 рдиреЛрдбрд╣рд░реВ рдЬрдбрд╛рдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ)ред рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдорд╛ рд╣рд╛рдореАрд▓реЗ 8 рдлрд░рдХ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдпреМрдВред рдХреЗрд╣реА рдЕрд╡рд╕реНрдерд╛рдорд╛, рдмреНрдпрд╛рдЪ рд╕рд╛рдЗрдЬ 100 рдерд┐рдпреЛ, рдЕрд░реВрдорд╛ 200 (рдмреНрдпрд╛рдЪ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ - рддрд▓рдХреЛ рдХреЛрдб рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН)ред рдорд╛рдирдХреЛ рд▓рд╛рдЧрд┐ рдбреЗрдЯрд╛ рдЖрдХрд╛рд░ 10 рдмрд╛рдЗрдЯреНрд╕ рд╡рд╛ 100 рдмрд╛рдЗрдЯреНрд╕ (рдбреЗрдЯрд╛рд╕рд╛рдЗрдЬ) рд╣реЛред рдХреБрд▓ рдорд┐рд▓рд╛рдПрд░, рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛рдорд╛ 5 рдорд┐рд▓рд┐рдпрди рд░реЗрдХрд░реНрдбрд╣рд░реВ рд▓реЗрдЦрд┐рдПрдХрд╛ рд░ рдкрдвреЗрдХрд╛ рдерд┐рдПред рдПрдХреИ рд╕рдордпрдорд╛, рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛рдорд╛ 5 рдереНрд░реЗрдбрд╣рд░реВ рд▓реЗрдЦрд┐рдПрдХрд╛/рдкрдврд┐рдПрдХрд╛ рдерд┐рдП (рдереНрд░реЗрдб рдирдореНрдмрд░ - thNum), рдЬрд╕рдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХрд▓реЗ рдЖрдлреНрдиреИ рджрд╛рдпрд░рд╛ рдХреБрдЮреНрдЬреАрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНтАНрдпреЛ (рдЧрдгрдирд╛ = 1 рдорд┐рд▓рд┐рдпрди):

if (opType.equals("insert")) {
    for (Long key = count * thNum; key < count * (thNum + 1); key += 0) {
        StringBuilder sb = new StringBuilder("BEGIN BATCH ");
        for (int i = 0; i < batch; i++) {
            String value = RandomStringUtils.random(dataSize, true, true);
            sb.append("INSERT INTO ")
                    .append(tableName)
                    .append("(id, title) ")
                    .append("VALUES (")
                    .append(key)
                    .append(", '")
                    .append(value)
                    .append("');");
            key++;
        }
        sb.append("APPLY BATCH;");
        final String query = sb.toString();
        session.execute(query);
    }
} else {
    for (Long key = count * thNum; key < count * (thNum + 1); key += 0) {
        StringBuilder sb = new StringBuilder("SELECT * FROM ").append(tableName).append(" WHERE id IN (");
        for (int i = 0; i < batch; i++) {
            sb = sb.append(key);
            if (i+1 < batch)
                sb.append(",");
            key++;
        }
        sb = sb.append(");");
        final String query = sb.toString();
        ResultSet rs = session.execute(query);
    }
}

рддрджрдиреБрд╕рд╛рд░, рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░реНрдпрддрд╛ HB рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ:

Configuration conf = getConf();
HTable table = new HTable(conf, keyspace + ":" + tableName);
table.setAutoFlush(false, false);
List<Get> lGet = new ArrayList<>();
List<Put> lPut = new ArrayList<>();
byte[] cf = Bytes.toBytes("cf");
byte[] qf = Bytes.toBytes("value");
if (opType.equals("insert")) {
    for (Long key = count * thNum; key < count * (thNum + 1); key += 0) {
        lPut.clear();
        for (int i = 0; i < batch; i++) {
            Put p = new Put(makeHbaseRowKey(key));
            String value = RandomStringUtils.random(dataSize, true, true);
            p.addColumn(cf, qf, value.getBytes());
            lPut.add(p);
            key++;
        }
        table.put(lPut);
        table.flushCommits();
    }
} else {
    for (Long key = count * thNum; key < count * (thNum + 1); key += 0) {
        lGet.clear();
        for (int i = 0; i < batch; i++) {
            Get g = new Get(makeHbaseRowKey(key));
            lGet.add(g);
            key++;
        }
        Result[] rs = table.get(lGet);
    }
}

HB рдорд╛ рдЧреНрд░рд╛рд╣рдХрд▓реЗ рдбрд╛рдЯрд╛рдХреЛ рд╕рдорд╛рди рд╡рд┐рддрд░рдгрдХреЛ рдЦреНрдпрд╛рд▓ рд░рд╛рдЦреНрдиреБ рдкрд░реНрдиреЗ рд╣реБрдирд╛рд▓реЗ, рдХреБрдЮреНрдЬреА рд╕рд╛рд▓реНрдЯрд┐рдЩ рдкреНрд░рдХрд╛рд░реНрдп рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдереНрдпреЛ:

public static byte[] makeHbaseRowKey(long key) {
    byte[] nonSaltedRowKey = Bytes.toBytes(key);
    CRC32 crc32 = new CRC32();
    crc32.update(nonSaltedRowKey);
    long crc32Value = crc32.getValue();
    byte[] salt = Arrays.copyOfRange(Bytes.toBytes(crc32Value), 5, 7);
    return ArrayUtils.addAll(salt, nonSaltedRowKey);
}

рдЕрдм рд╕рдмреИрднрдиреНрджрд╛ рд░реЛрдЪрдХ рднрд╛рдЧ - рдкрд░рд┐рдгрд╛рдо:

рджреБрдИ рдпрд╛рдХреЛрдЬреБрдирд╛рдХреЛ рдпреБрджреНрдз, рд╡рд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдмрдирд╛рдо рдПрдЪрдмреЗрд╕ред Sberbank рдЯреЛрд▓реАрдХреЛ рдЕрдиреБрднрд╡

рдЧреНрд░рд╛рдл рдлрд╛рд░рдордорд╛ рдПрдЙрдЯреИ рдХреБрд░рд╛:

рджреБрдИ рдпрд╛рдХреЛрдЬреБрдирд╛рдХреЛ рдпреБрджреНрдз, рд╡рд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдмрдирд╛рдо рдПрдЪрдмреЗрд╕ред Sberbank рдЯреЛрд▓реАрдХреЛ рдЕрдиреБрднрд╡

HB рдХреЛ рдлрд╛рдЗрджрд╛ рдпрддрд┐ рдЕрдЪрдореНрдордХреЛ рдЫ рдХрд┐ рддреНрдпрд╣рд╛рдБ CS рд╕реЗрдЯрдЕрдкрдорд╛ рдХреЗрд╣рд┐ рдкреНрд░рдХрд╛рд░рдХреЛ рдмрд╛рдзрд╛ рдЫ рднрдиреНрдиреЗ рд╢рдВрдХрд╛ рдЫред рдпрджреНрдпрдкрд┐, рдЧреБрдЧрд▓рд┐рдЩ рд░ рд╕рдмреИрднрдиреНрджрд╛ рд╕реНрдкрд╖реНрдЯ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ (рдЬрд╕реНрддреИ рд╕рдорд╡рд░реНрддреА_рд░рд╛рдЗрдЯреНрд╕ рд╡рд╛ рдореЗрдордЯреЗрдмрд▓_рд╣реЗрдк_рд╕реНрдкреЗрд╕_рдЗрди_рдПрдордмреА) рдХреЛ рдЦреЛрдЬреАрд▓реЗ рдЪреАрдЬрд╣рд░реВрд▓рд╛рдИ рдЧрддрд┐ рджрд┐рдБрджреИрдиред рдПрдХреИ рд╕рдордпрдорд╛, рд▓рдЧрд╣рд░реВ рд╕рдлрд╛ рдЫрдиреН рд░ рдХреБрдиреИ рдХреБрд░рд╛рдорд╛ рдХрд╕рдо рдЦрд╛рдБрджреИрдирдиреНред

рдбрд╛рдЯрд╛ рдиреЛрдбрд╣рд░реВрдорд╛ рд╕рдорд╛рди рд░реВрдкрдорд╛ рд╡рд┐рддрд░рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рд╕рдмреИ рдиреЛрдбрд╣рд░реВрдмрд╛рдЯ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рд▓рдЧрднрдЧ рд╕рдорд╛рди рдерд┐рдПред

рдпреЛ рддрд╛рд▓рд┐рдХрд╛ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рдиреЛрдбрд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рджреЗрдЦрд┐ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫрдХреАрд╕реНрдкреЗрд╕: ks
рдкрдвреЗрдХреЛ рд╕рдВрдЦреНрдпрд╛: 9383707
рд╡рд┐рд▓рдореНрдмрддрд╛ рдкрдвреНрдиреБрд╣реЛрд╕реН: 0.04287025042448576 ms
рдЧрдгрдирд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН: 15462012
рд╡рд┐рд▓рдореНрдмрддрд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН: 0.1350068438699957 ms
рдкреЗрдиреНрдбрд┐рдЩ рдлреНрд▓рд╕рд╣рд░реВ: реж
рддрд╛рд▓рд┐рдХрд╛: t1
SSTable рдЧрдгрдирд╛: 16
рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рд╕реНрдкреЗрд╕ (рд▓рд╛рдЗрдн): 148.59 MiB
рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдард╛рдЙрдБ (рдХреБрд▓): 148.59 MiB
рд╕реНрдиреНрдпрд╛рдкрд╢рдЯрд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдард╛рдЙрдБ (рдХреБрд▓): реж рдмрд╛рдЗрдЯреНрд╕
рдЕрдл рд╣реАрдк рдореЗрдореЛрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ (рдХреБрд▓): 5.17 MiB
SSTable рдХрдореНрдкреНрд░реЗрд╕рди рдЕрдиреБрдкрд╛рдд: 0.5720989576459437
рд╡рд┐рднрд╛рдЬрдирдХреЛ рд╕рдВрдЦреНрдпрд╛ (рдЕрдиреБрдорд╛рди): 3970323
рдореЗрдордЯреЗрдмрд▓ рд╕реЗрд▓ рдЧрдгрдирд╛: 0
рдореЗрдордЯреЗрдмрд▓ рдбрд╛рдЯрд╛ рд╕рд╛рдЗрдЬ: реж рдмрд╛рдЗрдЯреНрд╕
рдореЗрдордЯреЗрдмрд▓ рдЕрдл рд╣реАрдк рдореЗрдореЛрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдпреЛ: реж рдмрд╛рдЗрдЯреНрд╕
рдореЗрдордЯреЗрдмрд▓ рд╕реНрд╡рд┐рдЪ рдЧрдгрдирд╛: 5
рд╕реНрдерд╛рдиреАрдп рдкрдвреНрдиреЗ рд╕рдВрдЦреНрдпрд╛: 2346045
рд╕реНрдерд╛рдиреАрдп рдкрдвреНрдиреЗ рд╡рд┐рд▓рдореНрдмрддрд╛: NaN ms
рд╕реНрдерд╛рдиреАрдп рд▓реЗрдЦрди рдЧрдгрдирд╛: 3865503
рд╕реНрдерд╛рдиреАрдп рд▓реЗрдЦрди рд╡рд┐рд▓рдореНрдмрддрд╛: NaN ms
рдкреЗрдиреНрдбрд┐рдЩ рдлреНрд▓рд╢рд╣рд░реВ: реж
рдорд░реНрдордд рдЧрд░рд┐рдПрдХреЛ рдкреНрд░рддрд┐рд╢рдд: реж.реж
рдмреНрд▓реВрдо рдлрд┐рд▓реНрдЯрд░ рдЧрд▓рдд рд╕рдХрд╛рд░рд╛рддреНрдордХ: 25
рдмреНрд▓реВрдо рдлрд┐рд▓реНрдЯрд░ рдЧрд▓рдд рдЕрдиреБрдкрд╛рдд: 0.00000
рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдмреНрд▓реВрдо рдлрд┐рд▓реНрдЯрд░ рд╕реНрдкреЗрд╕: 4.57 MiB
рдмреНрд▓реВрдо рдлрд┐рд▓реНрдЯрд░ рдЕрдл рд╣рд┐рдк рдореЗрдореЛрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдпреЛ: 4.57 MiB
рдЗрдиреНрдбреЗрдХреНрд╕ рд╕рд╛рд░рд╛рдВрд╢ рдЕрдл рд╣реАрдк рдореЗрдореЛрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдпреЛ: 590.02 KiB
рдХрдореНрдкреНрд░реЗрд╕рди рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЕрдл рд╣реАрдк рдореЗрдореЛрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдпреЛ: 19.45 KiB
рд╕рдВрдХреБрдЪрд┐рдд рд╡рд┐рднрд╛рдЬрди рдиреНрдпреВрдирддрдо рдмрд╛рдЗрдЯреНрд╕: 36
рд╕рдВрдХреБрдЪрд┐рдд рд╡рд┐рднрд╛рдЬрди рдЕрдзрд┐рдХрддрдо рдмрд╛рдЗрдЯреНрд╕: 42
рдХрдореНрдкреНрдпрд╛рдХреНрдЯреЗрдб рд╡рд┐рднрд╛рдЬрди рдорддрд▓рдм рдмрд╛рдЗрдЯреНрд╕: 42
рдкреНрд░рддрд┐ рд╕реНрд▓рд╛рдЗрд╕ (рдЕрдиреНрддрд┐рдо рдкрд╛рдБрдЪ рдорд┐рдиреЗрдЯ): NaN
рдкреНрд░рддрд┐ рд╕реНрд▓рд╛рдЗрд╕ рдЕрдзрд┐рдХрддрдо рдЬреАрд╡рд┐рдд рдХрдХреНрд╖рд╣рд░реВ (рдЕрдиреНрддрд┐рдо рдкрд╛рдБрдЪ рдорд┐рдиреЗрдЯ): реж
рдкреНрд░рддрд┐ рд╕реНрд▓рд╛рдЗрд╕ (рдЕрдиреНрддрд┐рдо рдкрд╛рдБрдЪ рдорд┐рдиреЗрдЯ): NaN
рдкреНрд░рддрд┐ рдЯреБрдХреНрд░рд╛ (рдЕрдиреНрддрд┐рдо рдкрд╛рдБрдЪ рдорд┐рдиреЗрдЯ): реж
рдЫреЛрдбрд┐рдПрдХреЛ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди: реж рдмрд╛рдЗрдЯреНрд╕

рдмреНрдпрд╛рдЪрдХреЛ рдЖрдХрд╛рд░ рдШрдЯрд╛рдЙрдиреЗ рдкреНрд░рдпрд╛рд╕ (рдпрд╕рд▓рд╛рдИ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдкрдорд╛ рдкрдард╛рдЙрди рдкрдирд┐) рдХреЛ рдХреБрдиреИ рдкреНрд░рднрд╛рд╡ рдерд┐рдПрди, рдпреЛ рдХреЗрд╡рд▓ рдЦрд░рд╛рдм рднрдпреЛред рдпреЛ рд╕рдореНрднрд╡ рдЫ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдпреЛ CS рдХреЛ рд▓рд╛рдЧрд┐ рдЕрдзрд┐рдХрддрдо рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рд╣реЛ, рдХрд┐рдирдХрд┐ CS рдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░рд╛рдкреНрдд рдирддрд┐рдЬрд╛рд╣рд░реВ DataStax рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░рд┐рдПрдХрд╛ рдкрд░рд┐рдгрд╛рдорд╣рд░реВрд╕рдБрдЧ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ рдЫрдиреН - рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдбрдХреЛ рд▓рдЧрднрдЧ рд╕рдпреМрдВ рд╣рдЬрд╛рд░ рдХрд╛рд░реНрдпрд╣рд░реВред рдердк рд░реВрдкрдорд╛, рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧрд▓рд╛рдИ рд╣реЗрд░реНрдЫреМрдВ рднрдиреЗ, рд╣рд╛рдореА рджреЗрдЦреНрдиреЗрдЫреМрдВ рдХрд┐ CS рд▓реЗ рдзреЗрд░реИ CPU рд░ рдбрд┐рд╕реНрдХрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ:

рджреБрдИ рдпрд╛рдХреЛрдЬреБрдирд╛рдХреЛ рдпреБрджреНрдз, рд╡рд╛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдмрдирд╛рдо рдПрдЪрдмреЗрд╕ред Sberbank рдЯреЛрд▓реАрдХреЛ рдЕрдиреБрднрд╡
рдЖрдВрдХрдбрд╛рд▓реЗ рджреБрдмреИ рдбрд╛рдЯрд╛рдмреЗрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдкрдЩреНрдХреНрддрд┐рдорд╛ рд╕рдмреИ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдХреЛ рд░рдирдХреЛ рд╕рдордпрдорд╛ рдЙрдкрдпреЛрдЧ рджреЗрдЦрд╛рдЙрдБрджрдЫред

HB рдХреЛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкрдвреНрдиреЗ рдлрд╛рдЗрджрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ред рдпрд╣рд╛рдБ рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рджреБрдмреИ рдбрд╛рдЯрд╛рдмреЗрд╕рдХрд╛ рд▓рд╛рдЧрд┐, рдкрдвреНрдиреЗ рдХреНрд░рдордорд╛ рдбрд┐рд╕реНрдХрдХреЛ рдЙрдкрдпреЛрдЧ рдЕрддреНрдпрдиреНрдд рдХрдо рдЫ (рдкрдвреНрдиреЗ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдкреНрд░рддреНрдпреЗрдХ рдбрд╛рдЯрд╛рдмреЗрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реАрдХреНрд╖рдг рдЪрдХреНрд░рдХреЛ рдЕрдиреНрддрд┐рдо рднрд╛рдЧ рд╣реЛ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ CS рдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ 15:20 рджреЗрдЦрд┐ 15:40 рд╕рдореНрдо рд╣реЛ)ред HB рдХреЛ рдорд╛рдорд▓рд╛ рдорд╛, рдХрд╛рд░рдг рд╕реНрдкрд╖реНрдЯ рдЫ - рдзреЗрд░реИ рдЬрд╕реЛ рдбрд╛рдЯрд╛ рдореЗрдореЛрд░реАрдорд╛ рд╣реНрдпрд╛рдЩреНрдЧ рд╣реБрдиреНрдЫ, рдореЗрдорд╕реНрдЯреЛрд░рдорд╛, рд░ рдХреЗрд╣рд┐ рдмреНрд▓рдХрдХреНрдпрд╛рд╕рдорд╛ рдХреНрдпрд╛рд╕ рд╣реБрдиреНрдЫред CS рдХреЛ рд▓рд╛рдЧрд┐, рдпреЛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреНрдиреЗ рдзреЗрд░реИ рд╕реНрдкрд╖реНрдЯ рдЫреИрди, рддрд░ рдбрд┐рд╕реНрдХ рд░рд┐рд╕рд╛рдЗрдХреНрд▓рд┐рдВрдЧ рдкрдирд┐ рджреЗрдЦрд┐рдБрджреИрди, рддрд░ рдХреЗрд╡рд▓ рдХреЗрд╕рдорд╛, рдХреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░рд┐рдпреЛ row_cache_size_in_mb = 2048 рд░ рд╕реЗрдЯ рдХреНрдпрд╛рд╕рд┐рдВрдЧ = {'keys': 'ALL', 'rows_per_partition': '2000000'}, рддрд░ рдпрд╕рд▓реЗ рдпрд╕рд▓рд╛рдИ рдЕрдЭ рдЦрд░рд╛рдм рдмрдирд╛рдпреЛред

рдпреЛ рдкрдирд┐ HB рдорд╛ рдХреНрд╖реЗрддреНрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдмрд╛рд░реЗ рдорд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдиреНрджреБ рдлреЗрд░рд┐ рдПрдХ рдкрдЯрдХ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░реНрди рд▓рд╛рдпрдХ рдЫред рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдорд╛рди 64 рдХреЛ рд░реВрдкрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдШрдЯрд╛рдЙрдБрдЫреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рдмрд░рд╛рдмрд░ рдмрдирд╛рдЙрдБрдЫреМрдВ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, 4, рддреНрдпрд╕рдкрдЫрд┐ рдкрдвреНрджрд╛, рдЧрддрд┐ 2 рдкрдЯрдХ рдШрдЯреНрдЫред рдХрд╛рд░рдг рдпреЛ рд╣реЛ рдХрд┐ рдореЗрдорд╕реНрдЯреЛрд░ рдЫрд┐рдЯреЛ рднрд░рд┐рдиреЗрдЫ рд░ рдлрд╛рдЗрд▓рд╣рд░реВ рдзреЗрд░реИ рдкрдЯрдХ рдлреНрд▓рд╕ рд╣реБрдиреЗрдЫрдиреН рд░ рдкрдвреНрджрд╛, рдердк рдлрд╛рдЗрд▓рд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЬреБрди HB рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдЬрдЯрд┐рд▓ рдЕрдкрд░реЗрд╢рди рд╣реЛред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрд╡рд╕реНрдерд╛рд╣рд░реВрдорд╛, рдпрд╕рд▓рд╛рдИ рдкреНрд░рд┐рд╕реНрдкреНрд▓рд┐рдЯрд┐рдЩреН рд░ рдХрдореНрдкреНрдпрд╛рдХреНрдЯрд┐рдлрд┐рдХреЗрд╕рди рд░рдгрдиреАрддрд┐ рдорд╛рд░реНрдлрдд рд╕реЛрдЪреЗрд░ рдЙрдкрдЪрд╛рд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ; рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, рд╣рд╛рдореА рдПрдХ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ рдЬрд╕рд▓реЗ рдлреЛрд╣реЛрд░ рдЬрдореНрдорд╛ рдЧрд░реНрдЫ рд░ HFiles рд▓рд╛рдИ рдкреГрд╖реНрдарднреВрдорд┐рдорд╛ рдирд┐рд░рдиреНрддрд░ рдХрдореНрдкреНрд░реЗрд╕ рдЧрд░реНрдЫред рдпреЛ рдПрдХрджрдо рд╕рдореНрднрд╡ рдЫ рдХрд┐ DataStax рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдкреНрд░рддрд┐ рддрд╛рд▓рд┐рдХрд╛ 1 рдХреНрд╖реЗрддреНрд░ рдорд╛рддреНрд░ рдЫреБрдЯреНрдпрд╛рдП (рдЬреБрди рд╕рд╣реА рдЫреИрди) рд░ рдпрд╕рд▓реЗ рдХреЗрд╣реА рд╣рджрд╕рдореНрдо рд╕реНрдкрд╖реНрдЯ рдЧрд░реНрдиреЗрдЫ рдХрд┐рди HB рддрд┐рдиреАрд╣рд░реВрдХреЛ рдкрдарди рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдорд╛ рдпрддрд┐ рдХрдо рдерд┐рдпреЛред

рдпрд╕рдмрд╛рдЯ рдирд┐рдореНрди рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд┐рдПрдХрд╛ рдЫрдиреНред рдкрд░реАрдХреНрд╖рдгрдХреЛ рдХреНрд░рдордорд╛ рдХреБрдиреИ рдареВрд▓рд╛ рдЧрд▓реНрддреАрд╣рд░реВ рднрдПрдирдиреН рднрдиреА рдорд╛рдиреНрджреИ, рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдорд╛рдЯреЛрдХреЛ рдЦреБрдЯреНрдЯрд╛ рднрдПрдХреЛ рдХреЛрд▓реЛрд╕рд╕ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред рдЕрдЭ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛, рдЬрдм рдЙрдиреА рдПрдХ рдЦреБрдЯреНрдЯрд╛рдорд╛ рд╕рдиреНрддреБрд▓рди рд░рд╛рдЦреНрдЫрд┐рдиреН, рд▓реЗрдЦрдХреЛ рд╕реБрд░реБрдорд╛ рдЪрд┐рддреНрд░рдорд╛ рдЬрд╕реНрддреИ, рдЙрдирд▓реЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд░рд╛рдореНрд░реЛ рдирддрд┐рдЬрд╛рд╣рд░реВ рджреЗрдЦрд╛рдЙрдБрдЫрдиреН, рддрд░ рдПрдЙрдЯреИ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдорд╛ рд▓рдбрд╛рдЗрдБрдорд╛ рдЙрдиреА рд╕реАрдзреИ рд╣рд░рд╛рдЙрдБрдЫрд┐рдиреНред рдПрдХреИ рд╕рдордпрдорд╛, рд╣рд╛рдореНрд░реЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░рдорд╛ рдХрдо CPU рдЙрдкрдпреЛрдЧрд┐рддрд╛рд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджреИ, рд╣рд╛рдореАрд▓реЗ рдкреНрд░рддрд┐ рд╣реЛрд╕реНрдЯ рджреБрдИрд╡рдЯрд╛ RegionServer HB рд░реЛрдкреНрди рд╕рд┐рдХреНрдпреМрдВ рд░ рдпрд╕рд░реА рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рджреЛрдмреНрдмрд░ рднрдпреЛред рддреАред рд╕реНрд░реЛрдд рд╕рд╛рдзрдирдХреЛ рдЙрдкрдпреЛрдЧрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджрд╛ рд╕реАрдПрд╕рдХреЛ рдЕрд╡рд╕реНрдерд╛ рдЭрдиреИ рджрдпрдиреАрдп рдЫ ред

рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рдпреА рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдПрдХрджрдо рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЫрдиреН рд░ рдпрд╣рд╛рдБ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдбрд╛рдЯрд╛рдХреЛ рдорд╛рддреНрд░рд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдорд╛рдореВрд▓реА рдЫред рдпреЛ рд╕рдореНрднрд╡ рдЫ рдХрд┐ рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдЯреЗрд░рд╛рдмрд╛рдЗрдЯрдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрдпреМрдВ рднрдиреЗ, рд╕реНрдерд┐рддрд┐ рдлрд░рдХ рд╣реБрдиреЗрдЫ, рддрд░ HB рдХреЛ рд▓рд╛рдЧреА рд╣рд╛рдореА рдЯреЗрд░рд╛рдмрд╛рдЗрдЯ рд▓реЛрдб рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ, CS рдХреЛ рд▓рд╛рдЧреА рдпреЛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рднрдпреЛред рдпрд╕рд▓реЗ рдкреНрд░рд╛рдпрдГ рдпреА рднреЛрд▓реНрдпреБрдорд╣рд░реВрдХреЛ рд╕рд╛рдердорд╛ рдкрдирд┐ OperationTimedOutException рдлреНрдпрд╛рдБрдХреНрдпреЛ, рдпрджреНрдпрдкрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреЗ рдорд╛рдкрджрдгреНрдбрд╣рд░реВ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрдХреЛ рддреБрд▓рдирд╛рдорд╛ рдзреЗрд░реИ рдкрдЯрдХ рдмрдврд╛рдЗрдПрдХреЛ рдерд┐рдпреЛред

рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рд╕рдВрдпреБрдХреНрдд рдкреНрд░рдпрд╛рд╕ рдорд╛рд░реНрдлрдд рд╣рд╛рдореАрд▓реЗ CS рдХреЛ рдмрд╛рдзрд╛рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдЫреМрдВ рд░ рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рди рд╕рдХреНрдЫреМрдВ рднрдиреЗ, рдкреЛрд╕реНрдЯрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдкрдорд╛ рдЕрдиреНрддрд┐рдо рдкрд░рд┐рдгрд╛рдорд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдердкреНрдиреЗрдЫреБред

UPD: рдХрдорд░реЗрдбрд╣рд░реВрдХреЛ рд╕рд▓реНрд▓рд╛рд╣рдХреЛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрд╡рд╛рдж, рдореИрд▓реЗ рдкрдвреНрдиреЗ рдЧрддрд┐ рдмрдврд╛рдЙрди рд╕рдлрд▓ рднрдПред рдерд┐рдпреЛ:
159 рдЕрдкреНрд╕ (644 рдЯреЗрдмрд▓, 4 рд╕реНрдЯреНрд░рд┐рдо, рдмреНрдпрд╛рдЪ 5)ред
рджреНрд╡рд╛рд░рд╛ рдердкрд┐рдПрдХреЛ:
.withLoadBalancingPolicy(рдирдпрд╛рдБ TokenAwarePolicy(DCAwareRoundRobinPolicy.builder().build()))
рд░ рдо рдереНрд░реЗрдбрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рд╕рдВрдЧ рд╡рд░рд┐рдкрд░рд┐ рдЦреЗрд▓реНрдереЗред рдирддрд┐рдЬрд╛ рдирд┐рдореНрди рдЫ:
4 рдЯреЗрдмрд▓, 100 рдереНрд░реЗрдб, рдмреНрдпрд╛рдЪ = 1 (рдЯреБрдХреНрд░рд╛ рдЯреБрдХреНрд░рд╛): 301 ops
4 рдЯреЗрдмрд▓, 100 рдереНрд░реЗрдб, рдмреНрдпрд╛рдЪ = 10: 447 ops
4 рдЯреЗрдмрд▓, 100 рдереНрд░реЗрдб, рдмреНрдпрд╛рдЪ = 100: 625 ops

рдкрдЫрд┐ рдо рдЕрдиреНрдп рдЯреНрдпреБрдирд┐рдЩ рд╕реБрдЭрд╛рд╡рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗрдЫреБ, рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдЪрдХреНрд░ рдЪрд▓рд╛рдЙрдиреЗрдЫреБ рд░ рдкреЛрд╕реНрдЯрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдердкреНрдиреЗрдЫреБред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди