HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ

์ข‹์€ ์˜คํ›„์—์š” ์ œ ์ด๋ฆ„์€ Danil Lipovoy์ž…๋‹ˆ๋‹ค. Sbertech์˜ ์šฐ๋ฆฌ ํŒ€์€ 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 ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
๋ฐฑ์—… ๋งˆ์Šคํ„ฐ๋Š” ZooKeeper ๋…ธ๋“œ์— ์žˆ๋Š” ํ™œ์„ฑ ๋งˆ์Šคํ„ฐ์˜ ํ•˜ํŠธ๋น„ํŠธ๋ฅผ ๋“ฃ๊ณ , ์‚ฌ๋ผ์ง€๋Š” ๊ฒฝ์šฐ ๋งˆ์Šคํ„ฐ์˜ ๊ธฐ๋Šฅ์„ ๋Œ€์‹ ํ•ฉ๋‹ˆ๋‹ค.

2. HBASE์— ๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ

๋จผ์ €, ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ฒฝ์šฐ์ธ put(rowkey)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”์— ํ‚ค-๊ฐ’ ๊ฐ์ฒด๋ฅผ ์“ฐ๋Š” ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ๋จผ์ € hbase:meta ํ…Œ์ด๋ธ”์„ ์ €์žฅํ•˜๋Š” ๋ฃจํŠธ ์˜์—ญ ์„œ๋ฒ„(RRS)๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Š” ZooKeeper๋กœ๋ถ€ํ„ฐ ์ด ์ •๋ณด๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ RRS์— ์•ก์„ธ์Šคํ•˜๊ณ  hbase:meta ํ…Œ์ด๋ธ”์„ ์ฝ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ RS(RegionServer)๊ฐ€ ๊ด€์‹ฌ ํ…Œ์ด๋ธ”์— ์ง€์ •๋œ rowkey์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ผ์„ ๋‹ด๋‹นํ•˜๋Š” ์ •๋ณด๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฉ”ํƒ€ ํ…Œ์ด๋ธ”์€ ํด๋ผ์ด์–ธํŠธ์— ์˜ํ•ด ์บ์‹œ๋˜๋ฏ€๋กœ ํ›„์† ํ˜ธ์ถœ์€ RS๋กœ ์ง์ ‘ ๋” ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ, ์š”์ฒญ์„ ๋ฐ›์€ RS๋Š” ๋จผ์ € ์ด๋ฅผ WriteAheadLog(WAL)์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ถฉ๋Œ ๋ฐœ์ƒ ์‹œ ๋ณต๊ตฌ์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋ฅผ MemStore์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํŠน์ • ์˜์—ญ์— ๋Œ€ํ•ด ์ •๋ ฌ๋œ ํ‚ค ์„ธํŠธ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ๋ฒ„ํผ์ž…๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์€ ์—ฌ๋Ÿฌ ์˜์—ญ(ํŒŒํ‹ฐ์…˜)์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ ์˜์—ญ์—๋Š” ๋ถ„๋ฆฌ๋œ ํ‚ค ์ง‘ํ•ฉ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋ฒ„์— ์ง€์—ญ์„ ๋ฐฐ์น˜ํ•˜์—ฌ ๋” ๋†’์€ ์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ์ง„์ˆ ์ด ๋ช…๋ฐฑํ•จ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ด๊ฒƒ์ด ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ์ ์„ ๋‚˜์ค‘์— ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

MemStore์— ํ•ญ๋ชฉ์„ ๋ฐฐ์น˜ํ•œ ํ›„ ํ•ญ๋ชฉ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ €์žฅ๋˜์—ˆ๋‹ค๋Š” ์‘๋‹ต์ด ํด๋ผ์ด์–ธํŠธ์— ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ๋Š” ๋ฒ„ํผ์—๋งŒ ์ €์žฅ๋˜๋ฉฐ, ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ์ฑ„์›Œ์ ธ์•ผ๋งŒ ๋””์Šคํฌ์— ๋„๋‹ฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
'์‚ญ์ œ' ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋Š” ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์‚ญ์ œ๋œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋˜๋ฉฐ, ์ฃผ์š” ์••์ถ• ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ˆœ๊ฐ„ ํŒŒ๊ธฐ ์ž์ฒด๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ 7๋ฌธ๋‹จ์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

HFile ํ˜•์‹์˜ ํŒŒ์ผ์€ HDFS์— ์ถ•์ ๋˜๋ฉฐ ๋•Œ๋•Œ๋กœ ์•„๋ฌด๊ฒƒ๋„ ์‚ญ์ œํ•˜์ง€ ์•Š๊ณ  ์ž‘์€ ํŒŒ์ผ์„ ํฐ ํŒŒ์ผ๋กœ ๋ณ‘ํ•ฉํ•˜๋Š” ์ž‘์€ ์••์ถ• ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ๋งŒ ๋‚˜ํƒ€๋‚˜๋Š” ๋ฌธ์ œ๋กœ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค(์ด์— ๋Œ€ํ•ด์„œ๋Š” ๋‚˜์ค‘์— ๋‹ค์‹œ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค).

์œ„์—์„œ ์„ค๋ช…ํ•œ ๋กœ๋“œ ํ”„๋กœ์„ธ์Šค ์™ธ์—๋„ ํ›จ์”ฌ ๋” ํšจ๊ณผ์ ์ธ ์ ˆ์ฐจ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๋Š” ์•„๋งˆ๋„ ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ์ธก๋ฉด์ธ BulkLoad์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ HFiles๋ฅผ ํ˜•์„ฑํ•˜๊ณ  ์ด๋ฅผ ๋””์Šคํฌ์— ์ €์žฅํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ํ™•์žฅํ•˜๊ณ  ๋งค์šฐ ์ ์ ˆํ•œ ์†๋„๋ฅผ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์—ฌ๊ธฐ์„œ์˜ ์ œํ•œ์€ HBase๊ฐ€ ์•„๋‹ˆ๋ผ ํ•˜๋“œ์›จ์–ด์˜ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ 16๊ฐœ์˜ RegionServer์™€ 16๊ฐœ์˜ NodeManager YARN(CPU Xeon E5-2680 v4 @ 2.40GHz * 64 ์Šค๋ ˆ๋“œ), HBase ๋ฒ„์ „ 1.2.0-cdh5.14.2๋กœ ๊ตฌ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ถ€ํŒ… ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ

์—ฌ๊ธฐ์„œ๋Š” ํ…Œ์ด๋ธ”์˜ ํŒŒํ‹ฐ์…˜(์ง€์—ญ) ์ˆ˜์™€ Spark ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋ฉด ๋‹ค์šด๋กœ๋“œ ์†๋„๊ฐ€ ๋นจ๋ผ์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์†๋„๋Š” ๋…น์Œ ๋ณผ๋ฅจ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ํฐ ๋ธ”๋ก์€ MB/์ดˆ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์ž‘์€ ๋ธ”๋ก์€ ๋‹จ์œ„ ์‹œ๊ฐ„๋‹น ์‚ฝ์ž…๋œ ๋ ˆ์ฝ”๋“œ ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ ๋‹ค๋ฅธ ๋ชจ๋“  ์กฐ๊ฑด์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๋™์‹œ์— ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์— ๋กœ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜์—ฌ ์†๋„๋ฅผ ๋‘ ๋ฐฐ๋กœ ๋†’์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ๋Š” ํ•œ ๋ฒˆ์— ๋‘ ํ…Œ์ด๋ธ”์— 10KB ๋ธ”๋ก์„ ์“ฐ๋Š” ๊ฒƒ์ด ๊ฐ๊ฐ ์•ฝ 600MB/์ดˆ(์ด 1275MB/์ดˆ)์˜ ์†๋„๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ์“ฐ๋Š” ์†๋„์ธ 623MB/์ดˆ์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์œ„ 11๋ฒˆ)

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
๊ทธ๋Ÿฌ๋‚˜ 50KB์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ๋‘ ๋ฒˆ์งธ ์‹คํ–‰์—์„œ๋Š” ๋‹ค์šด๋กœ๋“œ ์†๋„๊ฐ€ ์•ฝ๊ฐ„ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋Š” ์ œํ•œ ๊ฐ’์— ์ ‘๊ทผํ•˜๊ณ  ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋™์‹œ์—, ์‹ค์ œ๋กœ HBASE ์ž์ฒด์—๋Š” ๋กœ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ๋ช…์‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒƒ์€ ๋จผ์ € hbase:meta์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ  HFiles๋ฅผ ๋ผ์ด๋‹ํ•œ ํ›„ BlockCache ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์„ค์ •ํ•˜๊ณ  ๋น„์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋””์Šคํฌ์— ๋Œ€ํ•œ MemStore ๋ฒ„ํผ์ž…๋‹ˆ๋‹ค.

3. HBASE์—์„œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด๋ฏธ hbase:meta์˜ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด(ํฌ์ธํŠธ 2 ์ฐธ์กฐ) ์š”์ฒญ์€ ํ•„์š”ํ•œ ํ‚ค๊ฐ€ ์ €์žฅ๋œ RS๋กœ ์ง์ ‘ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € MemCache์—์„œ ๊ฒ€์ƒ‰์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด BlockCache ๋ฒ„ํผ์™€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ HFiles์—์„œ๋„ ๊ฒ€์ƒ‰์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด BlockCache์— ์ €์žฅ๋˜๋ฉฐ ๋‹ค์Œ ์š”์ฒญ ์‹œ ๋” ๋น ๋ฅด๊ฒŒ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. Bloom ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด HFile์—์„œ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋น ๋ฆ…๋‹ˆ๋‹ค. ์†Œ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์€ ํ›„ ์ด ํŒŒ์ผ์— ํ•„์š”ํ•œ ํ‚ค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์ฆ‰์‹œ ํ™•์ธํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‹ค์Œ ํŒŒ์ผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
์ด ์„ธ ๊ฐ€์ง€ ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๋ฉด RS๋Š” ์‘๋‹ต์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์š”์ฒญํ•œ ๊ฒฝ์šฐ ๋ฐœ๊ฒฌ๋œ ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ๊ฐ์ฒด๋ฅผ ํ•œ ๋ฒˆ์— ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ๋ฐ์ดํ„ฐ ์บ์‹ฑ

MemStore ๋ฐ BlockCache ๋ฒ„ํผ๋Š” ํ• ๋‹น๋œ ์˜จ ํž™ RS ๋ฉ”๋ชจ๋ฆฌ์˜ ์ตœ๋Œ€ 80%๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค(๋‚˜๋จธ์ง€๋Š” RS ์„œ๋น„์Šค ์ž‘์—…์šฉ์œผ๋กœ ์˜ˆ์•ฝ๋จ). ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ๋ชจ๋“œ๊ฐ€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ณ  ์ฆ‰์‹œ ์ฝ๋Š” ๊ฒƒ์ด๋ผ๋ฉด BlockCache๋ฅผ ์ค„์ด๊ณ  MemStore๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ์“ฐ๊ธฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฝ๊ธฐ๋ฅผ ์œ„ํ•ด ์บ์‹œ์— ๋“ค์–ด๊ฐ€์ง€ ์•Š์œผ๋ฉด BlockCache์˜ ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. BlockCache ๋ฒ„ํผ๋Š” LruBlockCache(ํ•ญ์ƒ ํž™์— ์žˆ์Œ)์™€ BucketCache(์ผ๋ฐ˜์ ์œผ๋กœ ํž™์— ์žˆ์ง€ ์•Š๊ฑฐ๋‚˜ SSD์— ์žˆ์Œ)์˜ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. BucketCache๋Š” ์ฝ๊ธฐ ์š”์ฒญ์ด ๋งŽ๊ณ  LruBlockCache์— ๋งž์ง€ ์•Š์•„ Garbage Collector๊ฐ€ ํ™œ๋ฐœํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋™์‹œ์— ์ฝ๊ธฐ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•ด์„œ๋Š” ์•ˆ ๋˜์ง€๋งŒ ์ด์— ๋Œ€ํ•ด์„œ๋Š” 8๋ฌธ๋‹จ์—์„œ ๋‹ค์‹œ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
์ „์ฒด RS์— ํ•˜๋‚˜์˜ BlockCache๊ฐ€ ์žˆ๊ณ  ๊ฐ ํ…Œ์ด๋ธ”๋งˆ๋‹ค ํ•˜๋‚˜์˜ MemStore๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(๊ฐ Column Family์— ํ•˜๋‚˜์”ฉ).

๋ฐฉ๋ฒ• ์„ค๋ช… ์ด๋ก ์ ์œผ๋กœ ์“ฐ๊ธฐ ์‹œ ๋ฐ์ดํ„ฐ๋Š” ์บ์‹œ์— ๋“ค์–ด๊ฐ€์ง€ ์•Š์œผ๋ฉฐ ์‹ค์ œ๋กœ ํ…Œ์ด๋ธ”์˜ ๊ฒฝ์šฐ CACHE_DATA_ON_WRITE ๋งค๊ฐœ๋ณ€์ˆ˜์™€ RS์˜ "Cache DATA on Write"๋Š” 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

"์ฝ๊ธฐ ์‹œ ๋ฐ์ดํ„ฐ ์บ์‹œ" ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ false๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์•„์ด๋””์–ด๊ฐ€ ์žˆ์œผ์‹œ๋ฉด ๋Œ“๊ธ€๋กœ ํ† ๋ก ํ•ด ์ฃผ์„ธ์š”.

5. ์ผ๊ด„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ MultiGet/MultiPut

๋‹จ์ผ ์š”์ฒญ(Get/Put/Delete)์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ž‘์—…์ด๋ฏ€๋กœ ๊ฐ€๋Šฅํ•˜๋ฉด ์ด๋ฅผ List ๋˜๋Š” List๋กœ ๊ฒฐํ•ฉํ•ด์•ผ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์“ฐ๊ธฐ ์ž‘์—…์˜ ๊ฒฝ์šฐ ํŠนํžˆ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฝ์„ ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•จ์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๊ทธ๋ž˜ํ”„๋Š” MemStore์—์„œ 50๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ฝ๊ธฐ๋Š” ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์œผ๋ฉฐ ๊ฐ€๋กœ ์ถ•์—๋Š” ์š”์ฒญ์˜ ํ‚ค ์ˆ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ํ•œ ์š”์ฒญ์—์„œ ํ‚ค๋ฅผ 000๊ฐœ๋กœ ๋Š˜๋ฆฌ๋ฉด ์‹คํ–‰ ์‹œ๊ฐ„์ด ๋‹จ์ถ•๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†๋„๊ฐ€ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ MSLAB ๋ชจ๋“œ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜๋ฉด ์ด ์ž„๊ณ„๊ฐ’ ์ดํ›„ ์„ฑ๋Šฅ์ด ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๋–จ์–ด์ง€๊ธฐ ์‹œ์ž‘ํ•˜๊ณ  ๋ ˆ์ฝ”๋“œ์˜ ๋ฐ์ดํ„ฐ ์–‘์ด ๋งŽ์•„์งˆ์ˆ˜๋ก ์ž‘๋™ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง‘๋‹ˆ๋‹ค.

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ

ํ…Œ์ŠคํŠธ๋Š” ๊ฐ€์ƒ ๋จธ์‹ , 8๊ฐœ ์ฝ”์–ด, ๋ฒ„์ „ HBase 2.0.0-cdh6.0.0-beta1์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

MSLAB ๋ชจ๋“œ๋Š” ์‹ ์„ธ๋Œ€ ๋ฐ์ดํ„ฐ์™€ ๊ตฌ์„ธ๋Œ€ ๋ฐ์ดํ„ฐ์˜ ํ˜ผํ•ฉ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ํž™ ์กฐ๊ฐํ™”๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ MSLAB์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ์ž‘์€ ์…€(์ฒญํฌ)์— ๋ฐฐ์น˜๋˜์–ด ์ฒญํฌ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ, ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ ํŒจํ‚ท์˜ ์–‘์ด ํ• ๋‹น๋œ ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ์„ฑ๋Šฅ์ด ๊ธ‰๊ฒฉํžˆ ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ์ด ๋ชจ๋“œ๋ฅผ ๋„๋Š” ๊ฒƒ๋„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ์ง‘์ค‘๋˜๋Š” ๋™์•ˆ GC๋กœ ์ธํ•ด ์ค‘์ง€๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ถŒ์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์€ ์ฝ๊ธฐ์™€ ๋™์‹œ์— ๋„ฃ๊ธฐ๋ฅผ ํ†ตํ•ด ํ™œ์„ฑ ์“ฐ๊ธฐ์˜ ๊ฒฝ์šฐ ์…€ ๋ณผ๋ฅจ์„ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ก ํ›„ MemStore๋ฅผ ๋””์Šคํฌ๋กœ ์žฌ์„ค์ •ํ•˜๋Š” ํ”Œ๋Ÿฌ์‹œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ BulkLoad๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๋“œํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ํ‘œ๋Š” ๋” ํฐ(๋™์ผํ•œ ์–‘) ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ MemStore์˜ ์ฟผ๋ฆฌ๋กœ ์ธํ•ด ์†๋„๊ฐ€ ๋Š๋ ค์ง€๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฒญํฌ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๋ฉด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์ •์ƒ์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
์ฒญํฌ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ ์™ธ์—๋„ ์ง€์—ญ๋ณ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• ํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” ๋ถ„ํ• . ์ด๋กœ ์ธํ•ด ๊ฐ ์ง€์—ญ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์ด ์ค„์–ด๋“ค๊ณ  ์…€์— ๋งž์œผ๋ฉด ์‘๋‹ต์ด ์–‘ํ˜ธํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

6. ํ…Œ์ด๋ธ”์„ ์˜์—ญ์œผ๋กœ ๋ถ„ํ• ํ•˜๋Š” ์ „๋žต(๋ถ„ํ• )

HBase๋Š” ํ‚ค-๊ฐ’ ์ €์žฅ์†Œ์ด๊ณ  ํŒŒํ‹ฐ์…”๋‹์€ ํ‚ค๋ณ„๋กœ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋“  ์ง€์—ญ์— ๊ท ๋“ฑํ•˜๊ฒŒ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด๋Ÿฌํ•œ ํ…Œ์ด๋ธ”์„ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๋ถ„ํ• ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์„ธ ์˜์—ญ์œผ๋กœ ๋ถ„ํ• ๋ฉ๋‹ˆ๋‹ค.

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
์˜ˆ๋ฅผ ๋“ค์–ด ๋‚˜์ค‘์— ๋กœ๋“œ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ธด ๊ฐ’์ฒ˜๋Ÿผ ๋ณด์ด๊ณ  ๋Œ€๋ถ€๋ถ„์ด ๋™์ผํ•œ ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋กœ ์ธํ•ด ๊ธ‰๊ฒฉํ•œ ์†๋„ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1000001
1000002
...
1100003

ํ‚ค๋Š” ๋ฐ”์ดํŠธ ๋ฐฐ์—ด๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ์‹œ์ž‘ํ•˜๊ณ  ์ด ํ‚ค ๋ฒ”์œ„๋ฅผ ์ €์žฅํ•˜๋Š” ๋™์ผํ•œ ์˜์—ญ #1์— ์†ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ถ„ํ•  ์ „๋žต์ด ์žˆ์Šต๋‹ˆ๋‹ค.

HexStringSplit โ€“ ํ‚ค๋ฅผ "00000000" => "FFFFFFFF" ๋ฒ”์œ„์˜ XNUMX์ง„์ˆ˜๋กœ ์ธ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ๊ณ  ์™ผ์ชฝ์„ XNUMX์œผ๋กœ ์ฑ„์›๋‹ˆ๋‹ค.

UniformSplit โ€“ ํ‚ค๋ฅผ "00" => "FF" ๋ฒ”์œ„์˜ XNUMX์ง„์ˆ˜ ์ธ์ฝ”๋”ฉ๊ณผ ์˜ค๋ฅธ์ชฝ ํŒจ๋”ฉ์ด XNUMX์ธ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ถ„ํ• ํ•  ํ‚ค ๋ฒ”์œ„๋‚˜ ์ง‘ํ•ฉ์„ ์ง€์ •ํ•˜๊ณ  ์ž๋™ ๋ถ„ํ• ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ํšจ๊ณผ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋Š” ๊ท ์ผ ๋ถ„ํ•  ๋ฐ ํ•ด์‹œ ์—ฐ๊ฒฐ ์‚ฌ์šฉ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด CRC32(rowkey) ํ•จ์ˆ˜์™€ rowkey ์ž์ฒด๋ฅผ ํ†ตํ•ด ํ‚ค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ฐ”์ดํŠธ ์Œ์ž…๋‹ˆ๋‹ค.

ํ•ด์‹œ + ํ–‰ ํ‚ค

๊ทธ๋Ÿฌ๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์ง€์—ญ ์ „์ฒด์— ๊ณ ๋ฅด๊ฒŒ ๋ถ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. ์ฝ์„ ๋•Œ ์ฒ˜์Œ XNUMX๋ฐ”์ดํŠธ๋Š” ์‚ญ์ œ๋˜๊ณ  ์›๋ž˜ ํ‚ค๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. RS๋Š” ๋˜ํ•œ ํ•ด๋‹น ์ง€์—ญ์˜ ๋ฐ์ดํ„ฐ์™€ ํ‚ค์˜ ์–‘์„ ์ œ์–ดํ•˜๊ณ , ์ œํ•œ์ด ์ดˆ๊ณผ๋˜๋ฉด ์ž๋™์œผ๋กœ ์ด๋ฅผ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.

7. ๋‚ด๊ฒฐํ•จ์„ฑ ๋ฐ ๋ฐ์ดํ„ฐ ์ง€์—ญ์„ฑ

๊ฐ ํ‚ค ์„ธํŠธ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์ง€์—ญ์€ ๋‹จ ํ•˜๋‚˜์ด๋ฏ€๋กœ RS ์ถฉ๋Œ ๋˜๋Š” ํ๊ธฐ์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์€ ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ HDFS์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. RS๊ฐ€ ๋–จ์–ด์ง€๋ฉด ๋งˆ์Šคํ„ฐ๋Š” ZooKeeper ๋…ธ๋“œ์— ํ•˜ํŠธ๋น„ํŠธ๊ฐ€ ์—†์Œ์„ ํ†ตํ•ด ์ด๋ฅผ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ œ๊ณต๋˜๋Š” ์˜์—ญ์„ ๋‹ค๋ฅธ RS์— ํ• ๋‹นํ•˜๊ณ  HFiles๊ฐ€ ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ €์žฅ๋˜๋ฏ€๋กœ ์ƒˆ ์†Œ์œ ์ž๊ฐ€ ์ด๋ฅผ ์ฝ๊ณ  ๊ณ„์†ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋Š” MemStore์— ์žˆ๊ณ  HFiles์— ๋“ค์–ด๊ฐˆ ์‹œ๊ฐ„์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— HDFS์—๋„ ์ €์žฅ๋˜์–ด ์žˆ๋Š” WAL์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—… ๊ธฐ๋ก์„ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋œ ํ›„ RS๋Š” ์š”์ฒญ์— ์‘๋‹ตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋™์œผ๋กœ ์ธํ•ด ์ผ๋ถ€ ๋ฐ์ดํ„ฐ์™€ ์ด๋ฅผ ์„œ๋น„์Šคํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ๋…ธ๋“œ์— ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ง€์—ญ์„ฑ์ด ์ค„์–ด๋“ค๊ณ  ์žˆ์–ด์š”.

๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์€ ๋Œ€๊ทœ๋ชจ ์••์ถ•์ž…๋‹ˆ๋‹ค. ์ด ์ ˆ์ฐจ๋Š” ํŒŒ์ผ์„ ๋‹ด๋‹นํ•˜๋Š” ๋…ธ๋“œ(ํ•ด๋‹น ์ง€์—ญ์ด ์žˆ๋Š” ์œ„์น˜)๋กœ ํŒŒ์ผ์„ ์ด๋™ํ•˜๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ ์ด โ€‹โ€‹์ ˆ์ฐจ ์ค‘์— ๋„คํŠธ์›Œํฌ์™€ ๋””์Šคํฌ์˜ ๋กœ๋“œ๊ฐ€ ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•ž์œผ๋กœ๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ๋ˆˆ์— ๋„๊ฒŒ ๊ฐ€์†ํ™”๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ major_compaction์€ ๋ชจ๋“  HFile์„ ์˜์—ญ ๋‚ด ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋ณ‘ํ•ฉํ•˜๊ณ  ํ…Œ์ด๋ธ” ์„ค์ •์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ๊ฐ์ฒด์˜ ๋ฒ„์ „ ์ˆ˜๋‚˜ ๊ฐ์ฒด๊ฐ€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์‚ญ์ œ๋˜๊ธฐ ์ „๊นŒ์ง€์˜ ์ˆ˜๋ช…์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ ˆ์ฐจ๋Š” HBase์˜ ์šด์˜์— ๋งค์šฐ ๊ธ์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์€ ํ™œ์„ฑ ๋ฐ์ดํ„ฐ ๊ธฐ๋ก์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ์ด ์–ด๋–ป๊ฒŒ ์ €ํ•˜๋˜๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” 40๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ์–ด๋–ป๊ฒŒ ์“ฐ๊ณ  40๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์“ฐ๊ธฐ ์Šค๋ ˆ๋“œ๋Š” ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ์ฝ๋Š” ์ ์  ๋” ๋งŽ์€ HFiles๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ ์  ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐํ•ด์•ผ ํ•˜๊ณ  ๊ฒฐ๊ตญ GC๊ฐ€ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์—ฌ ์‚ฌ์‹ค์ƒ ๋ชจ๋“  ์ž‘์—…์ด ๋งˆ๋น„๋ฉ๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ์••์ถ• ์ž‘์—…์„ ์‹œ์ž‘ํ•˜์—ฌ ๋ฐœ์ƒํ•œ ์ž”ํ•ด๋ฌผ์„ ์ œ๊ฑฐํ•˜๊ณ  ์ƒ์‚ฐ์„ฑ์„ ํšŒ๋ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
ํ…Œ์ŠคํŠธ๋Š” 3๊ฐœ์˜ DataNode์™€ 4๊ฐœ์˜ RS(CPU Xeon E5-2680 v4 @ 2.40GHz * 64 ์Šค๋ ˆ๋“œ)์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. HBase ๋ฒ„์ „ 1.2.0-cdh5.14.2

๋ฐ์ดํ„ฐ๊ฐ€ ํ™œ๋ฐœํžˆ ๊ธฐ๋ก๋˜๊ณ  ์ฝํ˜€์ง€๋Š” "๋ผ์ด๋ธŒ" ํ…Œ์ด๋ธ”์—์„œ ๋Œ€๊ทœ๋ชจ ์••์ถ•์ด ์‹œ์ž‘๋˜์—ˆ๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ ์ž˜๋ชป๋œ ์‘๋‹ต์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์„ค๋ช…์ด ์˜จ๋ผ์ธ์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ํ…Œ์ด๋ธ”์— ์“ฐ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฒฐ๊ณผ ๊ฐ’์ด ์ ํžŒ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ์ฆ‰์‹œ ์ฝ๊ณ  ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์ด ์ง„ํ–‰๋˜๋Š” ๋™์•ˆ ์•ฝ 200ํšŒ ์ •๋„์˜ ๋Œ€๊ทœ๋ชจ ์••์ถ•์ด ์ด๋ฃจ์–ด์กŒ์œผ๋ฉฐ ๋‹จ ํ•œ ๊ฑด์˜ ์‹คํŒจ๋„ ๊ธฐ๋ก๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋ฌธ์ œ๋Š” ๋ถ€ํ•˜๊ฐ€ ๋†’์€ ๊ฒฝ์šฐ์—๋งŒ ๋“œ๋ฌผ๊ฒŒ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ณ„ํš๋Œ€๋กœ ์“ฐ๊ธฐ ๋ฐ ์ฝ๊ธฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘์ง€ํ•˜๊ณ  ์ด๋Ÿฌํ•œ GC ๊ฐ์†Œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋” ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋Œ€๊ทœ๋ชจ ์••์ถ•์€ MemStore์˜ ์ƒํƒœ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋””์Šคํฌ๋กœ ํ”Œ๋Ÿฌ์‹œํ•˜๊ณ  ์••์ถ•ํ•˜๋ ค๋ฉด ํ”Œ๋Ÿฌ์‹œ(connection.getAdmin().flush(TableName.valueOf(tblName)))๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

8. ์„ค์ • ๋ฐ ์„ฑ๋Šฅ

์ด๋ฏธ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด HBase๋Š” BulkLoad๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์•„๋ฌด๊ฒƒ๋„ ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋ถ€๋ถ„์—์„œ ๊ฐ€์žฅ ํฐ ์„ฑ๊ณต์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‹œ์Šคํ…œ๊ณผ ์‚ฌ๋žŒ์—๊ฒŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋„๊ตฌ๋Š” ๋Œ€๊ทœ๋ชจ ๋ธ”๋ก์— ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€๋Ÿ‰์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ ๋” ์ ํ•ฉํ•œ ๋ฐ˜๋ฉด, ํ”„๋กœ์„ธ์Šค์— ์—ฌ๋Ÿฌ ๊ฒฝ์Ÿ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ์š”์ฒญ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์œ„์— ์„ค๋ช…๋œ Get ๋ฐ Put ๋ช…๋ น์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ตœ์ ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ด๋ธ” โ€‹โ€‹๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์„ค์ •์˜ ๋‹ค์–‘ํ•œ ์กฐํ•ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถœ์‹œ๊ฐ€ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • 10๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์—ฐ์†์œผ๋กœ 3๋ฒˆ ๋™์‹œ์— ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์ด๊ฒƒ์„ ์Šค๋ ˆ๋“œ ๋ธ”๋ก์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค).
  • ๋ธ”๋ก ๋‚ด ๋ชจ๋“  ์Šค๋ ˆ๋“œ์˜ ์ž‘๋™ ์‹œ๊ฐ„์„ ํ‰๊ท ํ•˜์—ฌ ๋ธ”๋ก ์ž‘๋™์˜ ์ตœ์ข… ๊ฒฐ๊ณผ์˜€์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋Š” ๋™์ผํ•œ ํ…Œ์ด๋ธ”์—์„œ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์Šค๋ ˆ๋“œ ๋ธ”๋ก์ด ์‹œ์ž‘๋  ๋•Œ๋งˆ๋‹ค ์ฃผ์š” ์••์ถ•์ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ ๋ธ”๋ก์€ ๋‹ค์Œ ์ž‘์—… ์ค‘ ํ•˜๋‚˜๋งŒ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

-๋†“๋‹ค
-์–ป๋‹ค
โ€”์–ป๊ธฐ+๋„ฃ๊ธฐ

  • ๊ฐ ๋ธ”๋ก์€ ํ•ด๋‹น ์ž‘์—…์„ 50๋ฒˆ ๋ฐ˜๋ณตํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ ˆ์ฝ”๋“œ์˜ ๋ธ”๋ก ํฌ๊ธฐ๋Š” 100๋ฐ”์ดํŠธ, 1000๋ฐ”์ดํŠธ ๋˜๋Š” 10000๋ฐ”์ดํŠธ(์ž„์˜)์ž…๋‹ˆ๋‹ค.
  • ์š”์ฒญ๋œ ํ‚ค์˜ ๊ฐœ์ˆ˜(ํ‚ค 10๊ฐœ ๋˜๋Š” XNUMX๊ฐœ)๊ฐ€ ๋‹ค๋ฅธ ๋ธ”๋ก์ด ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ธ”๋ก์€ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ” ์„ค์ •์—์„œ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ๋œ ๋งค๊ฐœ๋ณ€์ˆ˜:

โ€” BlockCache = ์ผœ์ง ๋˜๋Š” ๊บผ์ง
โ€” ๋ธ”๋ก ํฌ๊ธฐ = 65KB ๋˜๋Š” 16KB
โ€” ํŒŒํ‹ฐ์…˜ = 1, 5 ๋˜๋Š” 30
โ€” MSLAB = ํ™œ์„ฑํ™” ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”

๋”ฐ๋ผ์„œ ๋ธ”๋ก์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ใ…. MSLAB ๋ชจ๋“œ๊ฐ€ ์ผœ์ ธ/๊บผ์กŒ์Šต๋‹ˆ๋‹ค.
๋น„. BlockCache = true/none, BlockSize = 65/16Kb, Partition = 1/5/30 ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋œ ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์”จ. ์••์ถ•์€ GZ๋กœ ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋””. 10๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ 1/10/100๋ฐ”์ดํŠธ์˜ ๋ ˆ์ฝ”๋“œ๋กœ ์ด ํ…Œ์ด๋ธ”์— 1000/10000 put/get/get+put ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ๋™์‹œ์— ์‹คํ–‰๋˜์–ด ์—ฐ์† 50๊ฐœ์˜ ์ฟผ๋ฆฌ(์ž„์˜ ํ‚ค)๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด์žํ˜•. d ์ง€์ ์€ ์„ธ ๋ฒˆ ๋ฐ˜๋ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์—ํ”„. ๋ชจ๋“  ์Šค๋ ˆ๋“œ์˜ ์ž‘๋™ ์‹œ๊ฐ„์„ ํ‰๊ท ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์ด ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ์ฝ”๋“œ ํฌ๊ธฐ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด ์†๋„๊ฐ€ ๋–จ์–ด์ง€๊ฑฐ๋‚˜ ์บ์‹ฑ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ์†๋„๊ฐ€ ๋Š๋ ค์งˆ ๊ฒƒ์œผ๋กœ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชฉํ‘œ๋Š” ๊ฐ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์˜ํ–ฅ ์ •๋„์™€ ์œ ์˜์„ฑ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด์—ˆ์œผ๋ฏ€๋กœ ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํ˜• ํšŒ๊ท€ ํ•จ์ˆ˜์˜ ์ž…๋ ฅ์œผ๋กœ ์ž…๋ ฅํ•˜์—ฌ t-ํ†ต๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์˜์„ฑ์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ Put ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ๋ธ”๋ก์˜ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ์ „์ฒด ์กฐํ•ฉ ์„ธํŠธ 2*2*3*2*3 = 144๊ฐœ ์˜ต์…˜ + 72 tk. ์ผ๋ถ€๋Š” ๋‘ ๋ฒˆ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด 216๊ฐœ์˜ ์‹คํ–‰์ด ์žˆ์Šต๋‹ˆ๋‹ค.

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
ํ…Œ์ŠคํŠธ๋Š” 3๊ฐœ์˜ DataNode์™€ 4๊ฐœ์˜ RS(CPU Xeon E5-2680 v4 @ 2.40GHz * 64 ์Šค๋ ˆ๋“œ)๋กœ ๊ตฌ์„ฑ๋œ ๋ฏธ๋‹ˆ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. HBase ๋ฒ„์ „ 1.2.0-cdh5.14.2.

BlockCache๊ฐ€ ํ™œ์„ฑํ™”๋˜๊ณ  BlockSize = 3.7, 16๋ฐ”์ดํŠธ ๋ ˆ์ฝ”๋“œ, ํŒฉ๋‹น 100๊ฐœ ์กฐ๊ฐ์ด ์žˆ๋Š” ํŒŒํ‹ฐ์…˜์ด ํ•˜๋‚˜์ธ ํ…Œ์ด๋ธ”์—์„œ MSLAB ๋ชจ๋“œ๋ฅผ ๋ˆ ์ƒํƒœ์—์„œ 10์ดˆ์˜ ์ตœ๊ณ  ์‚ฝ์ž… ์†๋„๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.
BlockCache๊ฐ€ ํ™œ์„ฑํ™”๋˜๊ณ  BlockSize = 82.8, 16๋ฐ”์ดํŠธ์˜ ๋ ˆ์ฝ”๋“œ, ๊ฐ๊ฐ 10000๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์—์„œ MSLAB ๋ชจ๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ 1์ดˆ์˜ ๊ฐ€์žฅ ๋‚ฎ์€ ์‚ฝ์ž… ์†๋„๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋ชจ๋ธ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” R2๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ชจ๋ธ์˜ ์ข‹์€ ํ’ˆ์งˆ์„ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋Š” ์™ธ์‚ฝ์ด ๊ธˆ๊ธฐ๋ผ๋Š” ๊ฒƒ์ด ์ ˆ๋Œ€์ ์œผ๋กœ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ์‹œ์Šคํ…œ์˜ ์‹ค์ œ ๋™์ž‘์€ ์„ ํ˜•์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์€ ์˜ˆ์ธก์ด ์•„๋‹ˆ๋ผ ์ฃผ์–ด์ง„ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋‚ด์—์„œ ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์—ฌ๊ธฐ์—์„œ๋Š” BlockSize ๋ฐ BlockCache ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ Put ์ž‘์—…์— ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๋Š” ํ•™์ƒ์˜ ๊ธฐ์ค€์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ผ๋ฐ˜์ ์œผ๋กœ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•จ).

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
๊ทธ๋Ÿฌ๋‚˜ ํŒŒํ‹ฐ์…˜ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋ฉด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋œ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค์†Œ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ผ์ž…๋‹ˆ๋‹ค(BulkLoad๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒํ‹ฐ์…˜ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋ฉด ๊ธ์ •์ ์ธ ์˜ํ–ฅ์„ ์ด๋ฏธ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค). ์ฒซ์งธ, ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ๋Š” 30๊ฐœ ์ง€์—ญ์ด ์•„๋‹Œ XNUMX๊ฐœ ์ง€์—ญ์— ๋Œ€ํ•œ ์š”์ฒญ์„ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๋ฐ์ดํ„ฐ ์–‘์ด ์ด ์ •๋„๋กœ ์ด๋“์„ ์–ป์„ ์ •๋„๋Š” ์•„๋‹ˆ๋‹ค. ๋‘˜์งธ, ์ด ๋™์ž‘ ์‹œ๊ฐ„์€ ๊ฐ€์žฅ ๋Š๋ฆฐ RS์— ์˜ํ•ด ๊ฒฐ์ •๋˜๋Š”๋ฐ, DataNode์˜ ์ˆ˜๊ฐ€ RS์˜ ์ˆ˜๋ณด๋‹ค ์ ๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ถ€ ์ง€์—ญ์—์„œ๋Š” ์ง‘์•ฝ์„ฑ์ด XNUMX์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์ƒ์œ„ XNUMX๊ฐœ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
์ด์ œ Get ๋ธ”๋ก ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ‰๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
ํŒŒํ‹ฐ์…˜ ์ˆ˜๊ฐ€ ์˜๋ฏธ๋ฅผ ์žƒ์—ˆ๋Š”๋ฐ, ์ด๋Š” ์•„๋งˆ๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž˜ ์บ์‹œ๋˜๊ณ  ์ฝ๊ธฐ ์บ์‹œ๊ฐ€ ๊ฐ€์žฅ ์ค‘์š”ํ•œ(ํ†ต๊ณ„์ ) ๋งค๊ฐœ๋ณ€์ˆ˜๋ผ๋Š” ์‚ฌ์‹ค๋กœ ์„ค๋ช…๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์—ฐํžˆ ์š”์ฒญ์˜ ๋ฉ”์‹œ์ง€ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ๋„ ์„ฑ๋Šฅ์— ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ตœ๊ณ  ์ ์ˆ˜:

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
๋งˆ์ง€๋ง‰์œผ๋กœ ๋จผ์ € get๊ณผ put์„ ์ˆ˜ํ–‰ํ•œ ๋ธ”๋ก์˜ ๋ชจ๋ธ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
์—ฌ๊ธฐ์„œ๋Š” ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฆฌ๋”๋“ค์˜ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ

9. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ

๊ธ€์Ž„, ๋งˆ์นจ๋‚ด ์šฐ๋ฆฌ๋Š” ์–ด๋Š ์ •๋„ ๊ดœ์ฐฎ์€ ๋กœ๋“œ๋ฅผ ์ถœ์‹œํ•  ๊ฒƒ์ด์ง€๋งŒ ๋น„๊ตํ•  ๊ฒƒ์ด ์žˆ์œผ๋ฉด ํ•ญ์ƒ ๋” ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Cassandra์˜ ์ฃผ์š” ๊ฐœ๋ฐœ์ž์ธ DataStax์˜ ์›น์‚ฌ์ดํŠธ์—๋Š” ์—ฐ๊ตฌ ๊ฒฐ๊ณผ HBase ๋ฒ„์ „ 0.98.6-1์„ ํฌํ•จํ•œ ์—ฌ๋Ÿฌ NoSQL ์ €์žฅ์†Œ์˜ NT์ž…๋‹ˆ๋‹ค. ๋กœ๋”ฉ์€ ์Šค๋ ˆ๋“œ 40๊ฐœ, ๋ฐ์ดํ„ฐ ํฌ๊ธฐ 100๋ฐ”์ดํŠธ, SSD ๋””์Šคํฌ๋กœ ์ง„ํ–‰๋๋‹ค. ์ฝ๊ธฐ-์ˆ˜์ •-์“ฐ๊ธฐ ์ž‘์—…์„ ํ…Œ์ŠคํŠธํ•œ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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 ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
์Šคํƒ ๋“œ: DataNode 16๊ฐœ ๋ฐ RS 16๊ฐœ(CPU Xeon E5-2680 v4 @ 2.40GHz * 64 ์Šค๋ ˆ๋“œ). HBase ๋ฒ„์ „ 1.2.0-cdh5.14.2.

ํ‰๊ท  ๊ฒฐ๊ณผ๋Š” ์ดˆ๋‹น 40๊ฐœ ์ž‘์—…์— ๊ฐ€๊นŒ์šฐ๋ฉฐ ์ด๋Š” DataStax ํ…Œ์ŠคํŠธ๋ณด๋‹ค ํ›จ์”ฌ ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹คํ—˜ ๋ชฉ์ ์œผ๋กœ ์กฐ๊ฑด์„ ์•ฝ๊ฐ„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ž‘์—…์ด ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๊ณผ ๊ณ ์œ  ํ‚ค์—์„œ๋งŒ ์ˆ˜ํ–‰๋  ๊ฐ€๋Šฅ์„ฑ์€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋กœ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํŠน์ • "ํ•ซ" ํ‚ค ์„ธํŠธ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 10๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ๋” ํฐ ๋ ˆ์ฝ”๋“œ(100KB)๋ฅผ 4๊ฐœ์”ฉ ๋ฐฐ์น˜ํ•˜์—ฌ ๋กœ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์š”์ฒญ๋œ ํ‚ค์˜ ๋ฒ”์œ„๋ฅผ 50์œผ๋กœ ์ œํ•œํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๊ทธ๋ž˜ํ”„๋Š” 40๊ฐœ์˜ ์Šค๋ ˆ๋“œ ์‹คํ–‰์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๊ฐ ์Šค๋ ˆ๋“œ๋Š” ์ฝ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. 100๊ฐœ์˜ ํ‚ค ์„ธํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด ํ‚ค์— ์ฆ‰์‹œ ์ž„์˜์˜ 10KB๋ฅผ ๋‹ค์‹œ ์”๋‹ˆ๋‹ค.

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
์Šคํƒ ๋“œ: DataNode 16๊ฐœ ๋ฐ RS 16๊ฐœ(CPU Xeon E5-2680 v4 @ 2.40GHz * 64 ์Šค๋ ˆ๋“œ). HBase ๋ฒ„์ „ 1.2.0-cdh5.14.2.

๋กœ๋“œํ•˜๋Š” ๋™์•ˆ ์œ„์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๋ฒˆ ๋Œ€๊ทœ๋ชจ ์••์ถ•์ด ์‹œ์ž‘๋˜์—ˆ์œผ๋ฉฐ, ์ด ์ ˆ์ฐจ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉด ์„ฑ๋Šฅ์ด ์ ์ฐจ ์ €ํ•˜๋˜์ง€๋งŒ ์‹คํ–‰ ์ค‘์— ์ถ”๊ฐ€ ๋กœ๋“œ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋ฝ์€ ๋‹ค์–‘ํ•œ ์ด์œ ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ์Šค๋ ˆ๋“œ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ณ  ๋‹ค์‹œ ์‹œ์ž‘๋˜๋Š” ๋™์•ˆ ์ผ์‹œ ์ค‘์ง€๋˜์—ˆ์œผ๋ฉฐ ๋•Œ๋กœ๋Š” ํƒ€์‚ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ํด๋Ÿฌ์Šคํ„ฐ์— ๋กœ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฝ๊ณ  ์ฆ‰์‹œ ์“ฐ๋Š” ๊ฒƒ์€ HBase์˜ ๊ฐ€์žฅ ์–ด๋ ค์šด ์ž‘์—… ์‹œ๋‚˜๋ฆฌ์˜ค ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 100๋ฐ”์ดํŠธ์˜ ์ž‘์€ Put ์š”์ฒญ๋งŒ ๋งŒ๋“ค์–ด ์ด๋ฅผ 10~50๊ฐœ ์กฐ๊ฐ์˜ ํŒฉ์œผ๋กœ ๊ฒฐํ•ฉํ•˜๋ฉด ์ดˆ๋‹น ์ˆ˜์‹ญ๋งŒ ๊ฐœ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ƒํ™ฉ์€ ์ฝ๊ธฐ ์ „์šฉ ์š”์ฒญ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ 50๊ฐœ ๋ธ”๋ก์˜ ์š”์ฒญ์œผ๋กœ ์ธํ•ด DataStax์—์„œ ์–ป์€ ๊ฒฐ๊ณผ๋ณด๋‹ค ๊ฒฐ๊ณผ๊ฐ€ ํ›จ์”ฌ ๋” ์šฐ์ˆ˜ํ•˜๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
์Šคํƒ ๋“œ: DataNode 16๊ฐœ ๋ฐ RS 16๊ฐœ(CPU Xeon E5-2680 v4 @ 2.40GHz * 64 ์Šค๋ ˆ๋“œ). HBase ๋ฒ„์ „ 1.2.0-cdh5.14.2.

10. ๊ฒฐ๋ก 

์ด ์‹œ์Šคํ…œ์€ ๋งค์šฐ ์œ ์—ฐํ•˜๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์ง€๋งŒ ๋งŽ์€ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์˜ํ–ฅ์€ ์•„์ง ์•Œ๋ ค์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ์ผ๋ถ€๋Š” ํ…Œ์ŠคํŠธ๋˜์—ˆ์ง€๋งŒ ๊ฒฐ๊ณผ ํ…Œ์ŠคํŠธ ์„ธํŠธ์—๋Š” ํฌํ•จ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์˜ˆ๋น„ ์‹คํ—˜์—์„œ๋Š” ๋ฌด์ž‘์œ„๋กœ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ด์›ƒ ์…€์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ณด๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๋Š” DATA_BLOCK_ENCODING๊ณผ ๊ฐ™์€ ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ์ค‘์š”์„ฑ์ด ๋ฏธ๋ฏธํ•œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์ˆ˜์˜ ์ค‘๋ณต ๊ฐœ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋“์ด ์ƒ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ HBase๋Š” ์ƒ๋‹นํžˆ ์ง„์ง€ํ•˜๊ณ  ์„ธ์‹ฌํ•˜๊ฒŒ ๊ณ„ํš๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๋Š” ์ธ์ƒ์„ ์ฃผ๋Š”๋ฐ, ์ด๋Š” ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋งค์šฐ ์ƒ์‚ฐ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ๊ณผ์ •์„ ์‹œ๊ฐ„์— ๋งž์ถฐ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์˜๊ฒฌ์— ์ถฉ๋ถ„ํžˆ ๊ณต๊ฐœ๋˜์ง€ ์•Š์€ ๋‚ด์šฉ์ด ์žˆ์œผ๋ฉด ๋” ์ž์„ธํžˆ ๋ง์”€ํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ๋™์˜ํ•˜์ง€ ์•Š๋Š” ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด ํ† ๋ก ํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€