ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase

Π”ΠΎΠ±Ρ€Ρ‹ΠΉ дСнь! МСня Π·ΠΎΠ²ΡƒΡ‚ Π”Π°Π½ΠΈΠ» Π›ΠΈΠΏΠΎΠ²ΠΎΠΉ, наша ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² Π‘Π±Π΅Ρ€Ρ‚Π΅Ρ…Π΅ Π½Π°Ρ‡Π°Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ HBase Π² качСствС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ…ΠΎΠ΄Π΅ Π΅Π³ΠΎ изучСния накопился ΠΎΠΏΡ‹Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ (надССмся, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ). ВсС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅ экспСримСнты ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ с вСрсиями HBase 1.2.0-cdh5.14.2 ΠΈ 2.0.0-cdh6.0.0-beta1.

  1. ΠžΠ±Ρ‰Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°
  2. Π—Π°ΠΏΠΈΡΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² HBASE
  3. Π§Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· HBASE
  4. ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…
  5. ΠŸΠ°ΠΊΠ΅Ρ‚Π½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… MultiGet/MultiPut
  6. БтратСгия Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ† Π½Π° Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹ (спилитинг)
  7. ΠžΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ, компактификация ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…
  8. Настройки ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
  9. НагрузочноС тСстированиС
  10. Π’Ρ‹Π²ΠΎΠ΄Ρ‹

1. ΠžΠ±Ρ‰Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
Π Π΅Π·Π΅Ρ€Π²Π½Ρ‹ΠΉ Master ΡΠ»ΡƒΡˆΠ°Π΅Ρ‚ heartbeat Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π½Π° ΡƒΠ·Π»Π΅ ZooKeeper ΠΈ Π² случаС исчСзновСния Π±Π΅Ρ€Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ мастСра Π½Π° сСбя.

2. Π—Π°ΠΏΠΈΡΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² HBASE

Π‘Π½Π°Ρ‡Π°Π»Π° рассмотрим самый простой случай – запись ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π½Π΅ΠΊΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ put(rowkey). ΠšΠ»ΠΈΠ΅Π½Ρ‚ сначала Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Π³Π΄Π΅ располоТСн ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ€Π΅Π³ΠΈΠΎΠ½ сСрвСр (Root Region Server β€” RRS), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ hbase:meta. Π­Ρ‚Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΡ‚ ZooKeeper. ПослС Ρ‡Π΅Π³ΠΎ ΠΎΠ½ обращаСтся ΠΊ RRS ΠΈ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ hbase:meta, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠ°ΠΊΠΎΠΉ RegionServer (RS) ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ rowkey Π² ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅ΠΉ Π΅Π³ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π’ цСлях дальнСйшСго использования ΠΌΠ΅Ρ‚Π°-Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ поэтому ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ обращСния ΠΈΠ΄ΡƒΡ‚ быстрСС, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊ RS.

Π”Π°Π»Π΅Π΅ RS, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² запрос, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΏΠΈΡˆΠ΅Ρ‚ Π΅Π³ΠΎ Π² WriteAheadLog (WAL), Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для восстановлСния Π² случаС падСния. Π—Π°Ρ‚Π΅ΠΌ сохраняСт Π΄Π°Π½Π½Ρ‹Π΅ Π² MemStore. Π­Ρ‚ΠΎ Π±ΡƒΡ„Π΅Ρ€ Π² памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит отсортированный Π½Π°Π±ΠΎΡ€ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅Π³ΠΈΠΎΠ½Π°. Π’Π°Π±Π»ΠΈΡ†Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π±ΠΈΡ‚Π° Π½Π° Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹ (ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ), ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТит Π½Π΅ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΠΉΡΡ Π½Π°Π±ΠΎΡ€ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. Π­Ρ‚ΠΎ позволяСт, размСстив Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… сСрвСрах, ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Однако, нСсмотря Π½Π° ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ этого утвСрТдСния, Π΄Π°Π»Π΅Π΅ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ Π²ΠΎ всСх случаях.

ПослС размСщСния записи Π² MemStore ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ возвращаСтся ΠΎΡ‚Π²Π΅Ρ‚, Ρ‡Ρ‚ΠΎ запись сохранСна ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. ΠŸΡ€ΠΈ этом Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½Π° хранится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π±ΡƒΡ„Π΅Ρ€Π΅ ΠΈ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚ Π½Π° диск Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΅Π³ΠΎ Π½ΠΎΠ²Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Β«DeleteΒ» физичСского удалСния Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ происходит. Они просто ΠΏΠΎΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Π΅, Π° само ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ происходит Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ major compact, ΠΏΡ€ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ написано Π² ΠΏ.7.

Π€Π°ΠΉΠ»Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ HFile копятся Π² HDFS ΠΈ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ запускаСтся процСсс minor compact, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ просто склСиваСт малСнькиС Ρ„Π°ΠΉΠ»Ρ‹ Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ удаляя. Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ это прСвращаСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, которая проявляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΊ этому вСрнСмся Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅).

ΠšΡ€ΠΎΠΌΠ΅ описанного Π²Ρ‹ΡˆΠ΅ процСсса Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΅ΡΡ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ эффСктивная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ самая сильная сторона этой Π‘Π” – BulkLoad. Она Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ HFiles ΠΈ ΠΏΠΎΠ΄ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌ Π½Π° диск, Ρ‡Ρ‚ΠΎ позволяСт прСвосходно ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π΄ΠΎΡΡ‚ΠΈΠ³Π°Ρ‚ΡŒ вСсьма ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½Ρ‹Ρ… скоростСй. По сути, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΡƒΡ‚ являСтся Π½Π΅ HBase, Π° возмоТности ΠΆΠ΅Π»Π΅Π·Π°. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° кластСрС, состоящим ΠΈΠ· 16 RegionServers ΠΈ 16 NodeManager YARN (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 ΠΏΠΎΡ‚ΠΎΠΊΠ°), вСрсия HBase 1.2.0-cdh5.14.2.

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase

Π’ΡƒΡ‚ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ увСличивая ΠΊΠΎΠ»-Π²ΠΎ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ (Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠ²) Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ экзСкуторов Spark, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ скорости Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π’Π°ΠΊΠΆΠ΅ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ зависит ΠΎΡ‚ объСма записи. ΠšΡ€ΡƒΠΏΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ Π΄Π°ΡŽΡ‚ прирост Π² ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΈ ΠœΠ‘/сСк, ΠΌΠ΅Π»ΠΊΠΈΠ΅ Π² количСствС вставлСнных записСй Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Ρ€Π°Π²Π½Ρ‹Ρ….

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π² Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅ скорости. НиТС Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ запись Π±Π»ΠΎΠΊΠΎΠ² 10 ΠšΠ‘ сразу Π² Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ΄Π΅Ρ‚ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΎΠΊΠΎΠ»ΠΎ 600 Мб/сСк Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ (суммарно 1275 Мб/сСк), Ρ‡Ρ‚ΠΎ совпадаСт со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ записи Π² ΠΎΠ΄Π½Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ 623 ΠœΠ‘/сСк (см. β„–11 Π²Ρ‹ΡˆΠ΅)

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
А Π²ΠΎΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ запуск с записями Π² 50 ΠšΠ‘ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ растСт ΡƒΠΆΠ΅ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΊ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ значСниям. ΠŸΡ€ΠΈ этом Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π½Π° сам HBASE Ρ‚ΡƒΡ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ практичСски Π½Π΅ создаСтся, всС Ρ‡Ρ‚ΠΎ ΠΎΡ‚ Π½Π΅Π³ΠΎ трСбуСтся, это сначала ΠΎΡ‚Π΄Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· hbase:meta, Π° послС ΠΏΠΎΠ΄ΠΊΠ»Π°Π΄ΠΊΠΈ HFiles, ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ BlockCache ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€ MemStore Π½Π° диск, Ссли ΠΎΠ½ Π½Π΅ пустой.

3. Π§Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· HBASE

Если ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ вся информация ΠΈΠ· hbase:meta ΡƒΠΆΠ΅ Ρƒ Π΅ΡΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (см. ΠΏ.2), Ρ‚ΠΎ запрос ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ сразу Π½Π° Ρ‚ΠΎΡ‚ RS, Π³Π΄Π΅ хранится Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡. Π‘Π½Π°Ρ‡Π°Π»Π° поиск осущСствляСтся Π² MemCache. Π’Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π½Π΅Ρ‚, поиск осущСствляСтся Ρ‚Π°ΠΊΠΆΠ΅ Π² Π±ΡƒΡ„Π΅Ρ€Π΅ BlockCache ΠΈ ΠΏΡ€ΠΈ нСобходимости Π² HFiles. Если Π΄Π°Π½Π½Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅, Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² BlockCache ΠΈ ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ запросС Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Ρ‹ быстрСС. Поиск Π² HFile происходит ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстро благодаря использованию Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° Π‘Π»ΡŽΠΌΠ°, Ρ‚.Π΅. считав нСбольшой объСм Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ½ сразу опрСдСляСт, содСрТит Π»ΠΈ этот Ρ„Π°ΠΉΠ» Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ ΠΈ Ссли Π½Π΅Ρ‚, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ.

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· этих Ρ‚Ρ€Π΅Ρ… источников RS Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚. Π’ частности, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ сразу нСсколько Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… вСрсий ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ссли ΠΊΠ»ΠΈΠ΅Π½Ρ‚ запросил Π²Π΅Ρ€ΡΠΈΠΎΠ½Π½ΠΎΡΡ‚ΡŒ.

4. ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…

Π‘ΡƒΡ„Π΅Ρ€Ρ‹ MemStore ΠΈ BlockCache Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π΄ΠΎ 80% Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ on-heap памяти RS (ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ для сСрвисных Π·Π°Π΄Π°Ρ‡ RS). Если Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ использования Ρ‚Π°ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎ процСссы ΠΏΠΈΡˆΡƒΡ‚ ΠΈ сразу Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ эти ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ BlockCache ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ MemStore, Ρ‚.ΠΊ. ΠΏΡ€ΠΈ записи Π΄Π°Π½Π½Ρ‹Π΅ Π² кэш Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚, Ρ‚ΠΎ использованиС BlockCache Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠ΅. Π‘ΡƒΡ„Π΅Ρ€ BlockCache состоит ΠΈΠ· Π΄Π²ΡƒΡ… частСй: LruBlockCache (всСгда on-heap) ΠΈ BucketCache (ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ off-heap ΠΈΠ»ΠΈ Π½Π° SSD). BucketCache стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° запросов Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² LruBlockCache, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Garbage Collector. ΠŸΡ€ΠΈ этом Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ роста ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΡ‚ использования кэша Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΆΠ΄Π°Ρ‚ΡŒ Π½Π΅ стоит, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΊ этому ΠΌΡ‹ Π΅Ρ‰Π΅ вСрнСмся Π² ΠΏ. 8

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
BlockCache ΠΎΠ΄ΠΈΠ½ Π½Π° вСсь RS, Π° MemStore для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ свой (ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Column Family).

Как описано Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, ΠΏΡ€ΠΈ записи Π΄Π°Π½Π½Ρ‹Π΅ Π² кэш Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ CACHE_DATA_ON_WRITE для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ Β«Cache DATA on WriteΒ» для RS установлСны Π² false. Однако Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, Ссли Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² MemStore, ΠΏΠΎΡ‚ΠΎΠΌ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° диск (очистив Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ), Π·Π°Ρ‚Π΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉΡΡ Ρ„Π°ΠΉΠ», Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² get запрос ΠΌΡ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π΄Π°Π½Π½Ρ‹Π΅. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Π΄Π°ΠΆΠ΅ Ссли совсСм ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ BlockCache ΠΈ Π·Π°Π±ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½ΠΎΠ²Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ сброса MemStore Π½Π° диск, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΡ… ΠΈ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСссии, Ρ‚ΠΎ ΠΎΠ½ΠΈ всС Ρ€Π°Π²Π½ΠΎ ΠΎΡ‚ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ извлСкутся. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ HBase Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² сСбС Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ ΠΈ таинствСнныС Π·Π°Π³Π°Π΄ΠΊΠΈ.

hbase(main):001:0> create 'ns:magic', 'cf'
Created table ns:magic
Took 1.1533 seconds
hbase(main):002:0> put 'ns:magic', 'key1', 'cf:c', 'try_to_delete_me'
Took 0.2610 seconds
hbase(main):003:0> flush 'ns:magic'
Took 0.6161 seconds
hdfs dfs -mv /data/hbase/data/ns/magic/* /tmp/trash
hbase(main):002:0> get 'ns:magic', 'key1'
 cf:c      timestamp=1534440690218, value=try_to_delete_me

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«Cache DATA on ReadΒ» установлСн false. Если Π΅ΡΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ, Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ это Π² коммСнтариях.

5. ΠŸΠ°ΠΊΠ΅Ρ‚Π½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… MultiGet/MultiPut

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Ρ… запросов (Get/Put/Delete) довольно дорогая опСрация, поэтому слСдуСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ ΠΏΠΎ возмоТности ΠΈΡ… Π² List ΠΈΠ»ΠΈ List, Ρ‡Ρ‚ΠΎ позволяСт ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ прирост ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ОсобСнно это касаСтся ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ записи, Π° Π²ΠΎΡ‚ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹ΠΉ камСнь. На Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ врСмя чтСния 50 000 записСй ΠΈΠ· MemStore. Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ ΠΈ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ оси ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ количСство ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² запросС. Π’ΡƒΡ‚ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ Π΄ΠΎ тысячи ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ запросС врСмя выполнСния ΠΏΠ°Π΄Π°Π΅Ρ‚, Ρ‚.Π΅. ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ увСличиваСтся. Однако ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π΅ΠΆΠΈΠΌΠ΅ MSLAB послС этого ΠΏΠΎΡ€ΠΎΠ³Π° начинаСтся Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Ρ‡Π΅ΠΌ большС объСм Π΄Π°Π½Π½Ρ‹Ρ… Π² записи, Ρ‚Π΅ΠΌ большС врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase

ВСсты Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ΅, 8 ядСр, вСрсия HBase 2.0.0-cdh6.0.0-beta1.

Π Π΅ΠΆΠΈΠΌ MSLAB ΠΏΡ€ΠΈΠ·Π²Π°Π½ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ heap, которая Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΠ·-Π·Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡˆΠΈΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ старого ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ. Π’ качСствС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ MSLAB Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСбольшиС ячСйки (chunk) ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ порциями. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, ΠΊΠΎΠ³Π΄Π° объСм Π² Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π·ΠΊΠΎ ΠΏΠ°Π΄Π°Π΅Ρ‚. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ остановкам ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ GC Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ интСнсивной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ являСтся ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ объСмов ячСйки, Π² случаС Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ записи Ρ‡Π΅Ρ€Π΅Π· put ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ссли послС записи Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ flush которая сбрасываСт MemStore Π½Π° диск ΠΈΠ»ΠΈ Ссли осущСствляСтся Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ BulkLoad. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ запросы ΠΈΠ· MemStore Π΄Π°Π½Π½Ρ‹Ρ… большСго объСма (ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ количСства) приводят ΠΊ замСдлСнию. Однако увСличивая chunksize Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ врСмя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊ Π½ΠΎΡ€ΠΌΠ΅.

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
ΠšΡ€ΠΎΠΌΠ΅ увСличСния chunksize ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π΄Ρ€ΠΎΠ±Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ Ρ€Π΅Π³ΠΈΠΎΠ½Π°ΠΌ, Ρ‚.Π΅. сплитинг Ρ‚Π°Π±Π»ΠΈΡ†. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π΅Π³ΠΈΠΎΠ½ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ мСньшСС количСство запросов ΠΈ Ссли ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ячСйку, ΠΎΡ‚ΠΊΠ»ΠΈΠΊ остаСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ.

6. БтратСгия разбиСния Ρ‚Π°Π±Π»ΠΈΡ† Π½Π° Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹ (спилитинг)

Π’Π°ΠΊ ΠΊΠ°ΠΊ HBase являСтся key-value Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ ΠΈ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ осущСствляСтся ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ, Ρ‚ΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ ΠΏΠΎ всСм Ρ€Π΅Π³ΠΈΠΎΠ½Π°ΠΌ. НапримСр ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° Ρ‚Ρ€ΠΈ части ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ Ρ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹ Π½Π° Ρ‚Ρ€ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½Π°:

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
Π‘Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ€Π΅Π·ΠΊΠΎΠΌΡƒ замСдлСнию, Ссли Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Π΅ Π² дальнСйшСм Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ long Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ своСм Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…ΡΡ с ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ†ΠΈΡ„Ρ€Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

1000001
1000002
…
1100003

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡ΠΈ хранятся Π² Π²ΠΈΠ΄Π΅ массива Π±Π°ΠΉΡ‚, всС ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ€Π΅Π³ΠΈΠΎΠ½Ρƒ #1 хранящСму этот Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. Π•ΡΡ‚ΡŒ нСсколько стратСгий разбиСния:

HexStringSplit – ΠŸΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡ Π² строку с ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ Β«00000000Β» => Β«FFFFFFFFΒ» ΠΈ заполняя слСва нулями.

UniformSplit – ΠŸΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡ Π² массив Π±Π°ΠΉΡ‚ с ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ Β«00Β» => Β«FFΒ» ΠΈ заполняя справа нулями.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ любой Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ€ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ для разбиСния ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ автосплитинг. Однако ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ простых ΠΈ эффСктивных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² являСтся UniformSplit ΠΈ использованиС ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ Ρ…ΡΡˆΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΉ ΠΏΠ°Ρ€Ρ‹ Π±Π°ΠΉΡ‚ ΠΎΡ‚ ΠΏΡ€ΠΎΠ³ΠΎΠ½Π° ΠΊΠ»ΡŽΡ‡Π° Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ CRC32(rowkey) ΠΈ собствСнно rowkey:

hash + rowkey

Π’ΠΎΠ³Π΄Π° всС Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ распрСдСлСны Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ ΠΏΠΎ Ρ€Π΅Π³ΠΈΠΎΠ½Π°ΠΌ. ΠŸΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° просто ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ остаСтся исходный ΠΊΠ»ΡŽΡ‡. Π’Π°ΠΊΠΆΠ΅ RS ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ количСство Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² Ρ€Π΅Π³ΠΈΠΎΠ½Π΅ ΠΈ ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ Π»ΠΈΠΌΠΈΡ‚ΠΎΠ² автоматичСски Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ Π½Π° части.

7. ΠžΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π΅Π³ΠΈΠΎΠ½, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ связанными с падСниями RS ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ΠΈΠ· эксплуатации являСтся Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ всСх Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² HDFS. ΠŸΡ€ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ RS мастСр ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ это Ρ‡Π΅Ρ€Π΅Π· отсутствиС heartbeat Π½Π° ΡƒΠ·Π»Π΅ ZooKeeper. Π’ΠΎΠ³Π΄Π° ΠΎΠ½ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ обслуТиваСмый Ρ€Π΅Π³ΠΈΠΎΠ½ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ RS ΠΈ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ HFiles хранятся Π² распрСдСлСнной Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ хозяин Π²Ρ‹Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ… ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Однако, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² MemStore ΠΈ Π½Π΅ успСла ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² HFiles, для восстановлСния истории ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ WAL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ хранятся Π² HDFS. ПослС Π½Π°ΠΊΠ°Ρ‚Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, RS способСн ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° запросы, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π΅Π·Π΄ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ процСссы ΠΈΡ… ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… Π½ΠΎΠ΄Π°Ρ…, Ρ‚.Π΅. сниТаСтся locality.

РСшСниСм ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ являСтся major compaction – эта ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° Ρ‚Π΅ Π½ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π° Π½ΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ (Ρ‚ΡƒΠ΄Π° Π³Π΄Π΅ располоТСны ΠΈΡ… Ρ€Π΅Π³ΠΈΠΎΠ½Ρ‹), Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ Π²ΠΎ врСмя этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Ρ€Π΅Π·ΠΊΠΎ возрастаСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° ΡΠ΅Ρ‚ΡŒ ΠΈ диски. Однако Π² дальнСйшСм доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ускоряСтся. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, major_compaction выполняСт объСдинСниС всСх HFiles Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ€Π΅Π³ΠΈΠΎΠ½Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² зависимости ΠΎΡ‚ настроСк Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ количСство вСрсий ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΠ»ΠΈ врСмя Π΅Π³ΠΎ ΠΆΠΈΠ·Π½ΠΈ, послС истСчСнии ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ физичСски удаляСтся.

Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ произвСсти вСсьма ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½ΠΎΠ΅ влияниС Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ HBase. На ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅ Π²ΠΈΠ΄Π½ΠΎ, ΠΊΠ°ΠΊ Π΄Π΅Π³Ρ€Π°Π΄ΠΈΡ€ΠΎΠ²Π°Π»Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ записи Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΡƒΡ‚ Π²ΠΈΠ΄Π½ΠΎ ΠΊΠ°ΠΊ Π² ΠΎΠ΄Π½Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ 40 ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² писали ΠΈ 40 ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ‡ΠΈΡ‚Π°Π»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅. ΠŸΠΈΡˆΡƒΡ‰ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ всС большС ΠΈ большС HFiles, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Ρ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ всС большС Π΄Π°Π½Π½Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΠ· памяти ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ GC, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ практичСски ΠΏΠ°Ρ€Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ всю Ρ€Π°Π±ΠΎΡ‚Ρƒ. Запуск major compaction ΠΏΡ€ΠΈΠ²Π΅Π» ΠΊ чисткС ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π²ΡˆΠΈΡ…ΡΡ Π·Π°Π²Π°Π»ΠΎΠ² ΠΈ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
ВСст выполнялся Π½Π° 3-Ρ… DataNode ΠΈ 4-Ρ… RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 ΠΏΠΎΡ‚ΠΎΠΊΠ°). ВСрсия HBase 1.2.0-cdh5.14.2

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ запуск major compaction выполнялся Π½Π° Β«ΠΆΠΈΠ²ΠΎΠΉΒ» Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ писали ΠΈ Ρ‡ΠΈΡ‚Π°Π»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅. Π’ сСти Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΎΡΡŒ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΌΡƒ ΠΎΡ‚Π²Π΅Ρ‚Ρƒ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π±Ρ‹Π» Π·Π°ΠΏΡƒΡ‰Π΅Π½ процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π» Π½ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ писал ΠΈΡ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. ПослС Ρ‡Π΅Π³ΠΎ сразу ΠΆΠ΅ Ρ‡ΠΈΡ‚Π°Π» ΠΈ свСрял совпадаСт Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ записано. Π’ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого процСсса ΠΎΠΊΠΎΠ»ΠΎ 200 Ρ€Π°Π· запускался major compaction ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ сбоя Π½Π΅ зафиксировано. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° проявляСтся Ρ€Π΅Π΄ΠΊΠΎ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ врСмя высокой Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, поэтому Π±ΠΎΠ»Π΅Π΅ бСзопасно всС-Ρ‚Π°ΠΊΠΈ ΠΏΠ»Π°Π½ΠΎΠ²ΠΎ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ процСссы записи ΠΈ чтСния ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ очистку Π½Π΅ допуская Ρ‚Π°ΠΊΠΈΡ… просадок GC.

Π’Π°ΠΊΠΆΠ΅ major compaction Π½Π΅ влияСт Π½Π° состояниС MemStore, для сброса Π΅Π³ΠΎ Π½Π° диск ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ flush (connection.getAdmin().flush(TableName.valueOf(tblName))).

8. Настройки ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано, наибольший успСх HBase ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π΅ΠΌΡƒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ BulkLoad. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, это касаСтся Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° систСм ΠΈ людСй. Однако этот инструмСнт годится скорСС для массовой ΡƒΠΊΠ»Π°Π΄ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… большими Π±Π»ΠΎΠΊΠ°ΠΌΠΈ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Ссли процСсс Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ выполнСния мноТСства ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… запросов Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ описанныС Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Get ΠΈ Put. Для опрСдСлСния ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Ρ‹ запуски ΠΏΡ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… комбинациях ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ настроСк:

  • Π—Π°ΠΏΡƒΡΠΊΠ°Π»ΠΎΡΡŒ 10 ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ 3 Ρ€Π°Π·Π° подряд (Π½Π°Π·ΠΎΠ²Π΅ΠΌ это Π±Π»ΠΎΠΊΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²).
  • ВрСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ всСх ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² Π±Π»ΠΎΠΊΠ΅ ΡƒΡΡ€Π΅Π΄Π½ΡΠ»ΠΎΡΡŒ ΠΈ являлось ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Π»ΠΎΠΊΠ°.
  • ВсС ΠΏΠΎΡ‚ΠΎΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ.
  • ΠŸΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ запуском Π±Π»ΠΎΠΊΠ° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² выполнялся major compaction.
  • ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π»ΠΎΠΊ выполнял Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

β€” Put
β€” Get
β€” Get+Put

  • ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π±Π»ΠΎΠΊ выполнял 50 000 ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ своСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.
  • Π Π°Π·ΠΌΠ΅Ρ€ записи Π² Π±Π»ΠΎΠΊΠ΅ 100 Π±Π°ΠΉΡ‚, 1000 Π±Π°ΠΉΡ‚ ΠΈΠ»ΠΈ 10000 Π±Π°ΠΉΡ‚ (random).
  • Π‘Π»ΠΎΠΊΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Π»ΠΈΡΡŒ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ количСством Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ (ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΡŽΡ‡ ΠΈΠ»ΠΈ 10).
  • Π‘Π»ΠΎΠΊΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Π»ΠΈΡΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… настройках Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ИзмСнялись ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

β€” BlockCache = Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΡΡ ΠΈΠ»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π»ΡΡ
β€” BlockSize = 65 Кб ΠΈΠ»ΠΈ 16 Кб
β€” ΠŸΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ = 1, 5 ΠΈΠ»ΠΈ 30
β€” MSLAB = Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΈΠ»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π±Π»ΠΎΠΊ выглядит Ρ‚Π°ΠΊ:

a. Π’ΠΊΠ»ΡŽΡ‡Π°Π»ΡΡ/Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π»ΡΡ Ρ€Π΅ΠΆΠΈΠΌ MSLAB.
b. Боздавалась Ρ‚Π°Π±Π»ΠΈΡ†Π°, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈΡΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: BlockCache = true/none, BlockSize = 65/16 Kb, ΠŸΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ = 1/5/30.
c. Π£ΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΎΡΡŒ сТатиС GZ.
d. Π—Π°ΠΏΡƒΡΠΊΠ°Π»ΠΎΡΡŒ 10 ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π΅Π»Π°ΡŽΡ‰ΠΈΡ… 1/10 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ put/get/get+put Π² эту Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ записями ΠΏΠΎ 100/1000/10000 Π±Π°ΠΉΡ‚, выполняя 50 000 запросов подряд (ΠΊΠ»ΡŽΡ‡ΠΈ Ρ€Π°Π½Π΄ΠΎΠΌΠ½Ρ‹Π΅).
e. ΠŸΡƒΠ½ΠΊΡ‚ d повторялся Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π°.
f. ВрСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ всСх ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΡƒΡΡ€Π΅Π΄Π½ΡΠ»ΠΎΡΡŒ.

Π‘Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Ρ‹ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ. ΠŸΡ€Π΅Π΄ΡΠΊΠ°Π·ΡƒΠ΅ΠΌΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° записи ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ°Π΄Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ замСдлСнию. Однако Ρ†Π΅Π»ΡŒ Π±Ρ‹Π»Π° ΠΏΠΎΠ½ΡΡ‚ΡŒ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΈ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ влияния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, поэтому собранныС Π΄Π°Π½Π½Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ΄Π°Π½Ρ‹ Π½Π° Π²Ρ…ΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ рСгрСссии, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ t-статистики. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Π»ΠΎΠΊΠΎΠ² Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Put. ΠŸΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ 2*2*3*2*3 = 144 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° + 72 Ρ‚.ΠΊ. Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π΄Π²Π°ΠΆΠ΄Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² суммС 216 запусков:

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
ВСстированиС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π½Π° ΠΌΠΈΠ½ΠΈ-кластСрС состоящим ΠΈΠ· 3-Ρ… DataNode ΠΈ 4-Ρ… RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 ΠΏΠΎΡ‚ΠΎΠΊΠ°). ВСрсия HBase 1.2.0-cdh5.14.2.

НаиболСС высокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вставки 3.7 сСк Π±Ρ‹Π»Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° ΠΏΡ€ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ MSLAB, Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π΅ с ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠ΅ΠΉ, с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ BlockCache, BlockSize = 16, записями ΠΏΠΎ 100 Π±Π°ΠΉΡ‚ ΠΏΠΎ 10 ΡˆΡ‚ΡƒΠΊ Π² ΠΏΠ°Ρ‡ΠΊΠ΅.
НаиболСС низкая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вставки 82.8 сСк Π±Ρ‹Π»Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ MSLAB, Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π΅ с ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠ΅ΠΉ, с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ BlockCache, BlockSize = 16, записями ΠΏΠΎ 10000 Π±Π°ΠΉΡ‚ ΠΏΠΎ 1 ΡˆΡ‚ΡƒΠΊΠ΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим Π½Π° модСль. ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ качСство ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠΎ R2, Π½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ понятно, Ρ‡Ρ‚ΠΎ экстраполяция Ρ‚ΡƒΡ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠΊΠ°Π·Π°Π½Π°. РСальноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ систСмы ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ, эта модСль Π½ΡƒΠΆΠ½Π° Π½Π΅ для ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΎΠ², Π° для понимания, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². НапримСр Ρ‚ΡƒΡ‚ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΠΎ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡŽ Π‘Ρ‚ΡŒΡŽΠ΄Π΅Π½Ρ‚Π°, Ρ‡Ρ‚ΠΎ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Put Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ значСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ BlockSize ΠΈ BlockCache (Ρ‡Ρ‚ΠΎ Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΏΠΎΠ»Π½Π΅ прСдсказуСмо):

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
А Π²ΠΎΡ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ количСства ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ Π²Π΅Π΄Π΅Ρ‚ ΠΊ сниТСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ нСсколько Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ (ΠΌΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½ΠΎΠ΅ влияниС увСличСния количСства ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ ΠΏΡ€ΠΈ BulkLoad), хотя ΠΈ объяснимо. Π’ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ приходится Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запросы ΠΊ 30 Ρ€Π΅Π³ΠΈΠΎΠ½Π°ΠΌ вмСсто ΠΎΠ΄Π½ΠΎΠ³ΠΎ, Π° объСм Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ Ρ‚Π°ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Π΄Π°Π»ΠΎ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ. Π’ΠΎ Π²Ρ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±Ρ‰Π΅Π΅ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ опрСдСляСтся самым ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ RS, Π° Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ количСство DataNode мСньшС количСства RS Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠ² ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΡƒΠ»Π΅Π²ΡƒΡŽ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Ну ΠΈ посмотрим Π½Π° пятСрку Π»ΠΈΠ΄Π΅Ρ€ΠΎΠ²:

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ†Π΅Π½ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния Π±Π»ΠΎΠΊΠΎΠ² Get:

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ потСряло Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ вСроятно ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ кэш для чтСния Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΉ (статистичСски) ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. ЕстСствСнно, Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ»-Π²Π° сообщСний Π² запросС – Ρ‚ΠΎΠΆΠ΅ вСсьма ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π›ΡƒΡ‡ΡˆΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
Ну ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ† посмотрим Π½Π° модСль Π±Π»ΠΎΠΊΠ° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполнял сначала get, Π° ΠΏΠΎΡ‚ΠΎΠΌ put:

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
Π’ΡƒΡ‚ всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹. И Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π»ΠΈΠ΄Π΅Ρ€ΠΎΠ²:

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase

9. НагрузочноС тСстированиС

Ну ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ† запустим Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, Π½ΠΎ всСгда Π±ΠΎΠ»Π΅Π΅ интСрСсно ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ с Ρ‡Π΅ΠΌ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ. На сайтС DataStax – ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Cassandra Π΅ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ НВ ряда NoSQL Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰, Π² Ρ‚ΠΎΠΌ числС HBase вСрсии 0.98.6-1. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»Π°ΡΡŒ 40 ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… 100 Π±Π°ΠΉΡ‚, диски SSD. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ тСстирования ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Read-Modify-Write ΠΏΠΎΠΊΠ°Π·Π°Π» Ρ‚Π°ΠΊΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
Насколько я понял, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»ΠΎΡΡŒ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΏΠΎ 100 записСй ΠΈ для 16 Π½ΠΎΠ΄ HBase тСст DataStax ΠΏΠΎΠΊΠ°Π·Π°Π» ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ 10 тыс. ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² сСкунду.

Π£Π΄Π°Ρ‡Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² нашСм кластСрС Ρ‚ΠΎΠΆΠ΅ 16 Π½ΠΎΠ΄, Π½ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Β«ΡƒΠ΄Π°Ρ‡Π½ΠΎΒ», Ρ‡Ρ‚ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎ 64 ядра (ΠΏΠΎΡ‚ΠΎΠΊΠ°), Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π² тСстС DataStax лишь ΠΏΠΎ 4. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны Ρƒ Π½ΠΈΡ… диски SSD, Π° Ρƒ нас HDD ΠΈ Π±ΠΎΠ»Π΅Π΅ новая вСрсия HBase ΠΈ утилизация CPU Π²ΠΎ врСмя Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ практичСски ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π»Π°ΡΡŒ Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ (Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ Π½Π° 5-10 ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΎΠ²). Однако Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒΡΡ Π½Π° этой ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Настройки Ρ‚Π°Π±Π»ΠΈΡ† ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ производится Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΎΡ‚ 0 Π΄ΠΎ 50 ΠΌΠ»Π½. случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (Ρ‚.Π΅. ΠΏΠΎ сути ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π½ΠΎΠ²Ρ‹ΠΉ). Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 50 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² записСй, Ρ€Π°Π·Π±ΠΈΡ‚Π° Π½Π° 64 ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ. ΠšΠ»ΡŽΡ‡ΠΈ Π·Π°Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎ crc32. Настройки Ρ‚Π°Π±Π»ΠΈΡ† Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹Π΅, MSLAB Π²ΠΊΠ»ΡŽΡ‡Π΅Π½. Запуск 40 ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΈΠ· 100 случайных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ Ρ‚ΡƒΡ‚ ΠΆΠ΅ ΠΏΠΈΡˆΠ΅Ρ‚ сгСнСрированныС 100 Π±Π°ΠΉΡ‚ ΠΏΠΎ этим ΠΊΠ»ΡŽΡ‡Π°ΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
Π‘Ρ‚Π΅Π½Π΄: 16 DataNode ΠΈ 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 ΠΏΠΎΡ‚ΠΎΠΊΠ°). ВСрсия HBase 1.2.0-cdh5.14.2.

Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±Π»ΠΈΠΆΠ΅ ΠΊ 40 тыс. ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² сСкунду, Ρ‡Ρ‚ΠΎ сущСствСнно Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Π² тСстС DataStax. Однако Π² цСлях экспСримСнта ΠΌΠΎΠΆΠ½ΠΎ нСсколько ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ условия. Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ маловСроятно, Ρ‡Ρ‚ΠΎ всС Ρ€Π°Π±ΠΎΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Π΅ΡΡ‚ΠΈΡΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΈΠΉ «горячий» Π½Π°Π±ΠΎΡ€ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌΠΈ записями (10 ΠšΠ‘), Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ°Ρ‡ΠΊΠ°ΠΌΠΈ ΠΏΠΎ 100, Π² 4 Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅ΠΉ 50 тыс. На Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ запуск 40 ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΈΠ· 100 ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΠΈ Ρ‚ΡƒΡ‚ ΠΆΠ΅ ΠΏΠΈΡˆΠ΅Ρ‚ случайныС 10 ΠšΠ‘ ΠΏΠΎ этим ΠΊΠ»ΡŽΡ‡Π°ΠΌ Π½Π°Π·Π°Π΄.

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
Π‘Ρ‚Π΅Π½Π΄: 16 DataNode ΠΈ 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 ΠΏΠΎΡ‚ΠΎΠΊΠ°). ВСрсия HBase 1.2.0-cdh5.14.2.

Π’ Ρ…ΠΎΠ΄Π΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ нСсколько Ρ€Π°Π· запускался major compaction, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅ Π±Π΅Π· этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ постСпСнно Π΄Π΅Π³Ρ€Π°Π΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²ΠΎ врСмя выполнСния Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°. ΠŸΡ€ΠΎΡΠ°Π΄ΠΊΠΈ Π²Ρ‹Π·Π²Π°Π½Ρ‹ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌΠΈ. Иногда ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊΠ°Π»ΠΈΡΡŒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π° ΠΏΠ°ΡƒΠ·Π°, ΠΈΠ½ΠΎΠ³Π΄Π° сторонниС прилоТСния создавали Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° кластСр.

Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ сразу ΠΆΠ΅ запись β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ тяТСлых сцСнариСв Ρ€Π°Π±ΠΎΡ‚Ρ‹ для HBase. Если Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ put запросы нСбольшого Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎ 100 Π±Π°ΠΉΡ‚, объСдинив ΠΈΡ… Π² ΠΏΠ°Ρ‡ΠΊΠΈ ΠΏΠΎ 10-50 тыс ΡˆΡ‚ΡƒΠΊ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сотни тысяч ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² сСкунду ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π΄Π΅Π»Π° обстоят с запросами Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π΄ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Ρƒ DataStax большС всСго Π·Π° счСт запросов Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΏΠΎ 50 тыс.

ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° использования HBase
Π‘Ρ‚Π΅Π½Π΄: 16 DataNode ΠΈ 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 ΠΏΠΎΡ‚ΠΎΠΊΠ°). ВСрсия HBase 1.2.0-cdh5.14.2.

10. Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Данная систСма достаточно Π³ΠΈΠ±ΠΊΠΎ настраиваСтся, ΠΎΠ΄Π½Π°ΠΊΠΎ влияниС большого количСства ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² всС Π΅Ρ‰Π΅ остаСтся нСизвСстным. Π§Π°ΡΡ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… Π±Ρ‹Π»Π° протСстирована, Π½ΠΎ Π½Π΅ вошла Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ тСстов. НапримСр, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ экспСримСнты ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΊΠ°ΠΊ DATA_BLOCK_ENCODING, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ значСния ΠΈΠ· сосСдних ячССк, Ρ‡Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ объяснимо для Π΄Π°Π½Π½Ρ‹Ρ… сгСнСрированных случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’ случаС использования большого количСства ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. Π’ Ρ†Π΅Π»ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ HBase ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ достаточно ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Π½ΠΎΠΉ Π‘Π”, которая ΠΏΡ€ΠΈ опСрациях с большими Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достаточно ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. ОсобСнно Ссли Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ разнСсти Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ процСссы чтСния ΠΈ записи.

Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π° ваш взгляд нСдостаточно раскрыто, Π³ΠΎΡ‚ΠΎΠ² Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΈΡΠΊΡƒΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ссли с Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π½Π΅ согласны.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com