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 ํ…Œ์ด๋ธ”์„ ์ฝ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ด€์‹ฌ ์žˆ๋Š” ํ…Œ์ด๋ธ”์˜ ์ฃผ์–ด์ง„ ํ–‰ ํ‚ค์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” RegionServer(RS)์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”ํƒ€ ํ…Œ์ด๋ธ”์€ ํด๋ผ์ด์–ธํŠธ์— ์˜ํ•ด ์บ์‹œ๋˜๋ฏ€๋กœ ํ›„์† ์š”์ฒญ์ด ๋” ๋น ๋ฅด๊ฒŒ RS์— ์ง์ ‘ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

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

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

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

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

์œ„์— ์„ค๋ช…๋œ ๋กœ๋”ฉ ํ”„๋กœ์„ธ์Šค ์™ธ์—๋„ ํ›จ์”ฌ ๋” ํšจ์œจ์ ์ธ ์ ˆ์ฐจ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์ธ BulkLoad์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ HFiles๋ฅผ ํ˜•์„ฑํ•˜๊ณ  ๋””์Šคํฌ์— ์ €์žฅํ•œ๋‹ค๋Š” ์‚ฌ์‹ค๋กœ ๊ตฌ์„ฑ๋˜๋Š”๋ฐ, ์ด๋ฅผ ํ†ตํ•ด ์™„๋ฒฝํ•œ ํ™•์žฅ์„ฑ๊ณผ ๋งค์šฐ ์ ์ ˆํ•œ ์†๋„๋ฅผ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ, ์—ฌ๊ธฐ์„œ์˜ ํ•œ๊ณ„๋Š” HBase๊ฐ€ ์•„๋‹ˆ๋ผ ํ•˜๋“œ์›จ์–ด์˜ ์„ฑ๋Šฅ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” 16๊ฐœ์˜ RegionServer์™€ 16๊ฐœ์˜ NodeManagers 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์— ์ €์žฅ๋˜๊ณ  ๋‹ค์Œ ์š”์ฒญ ์‹œ ๋” ๋น ๋ฅด๊ฒŒ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. HFile์—์„œ์˜ ๊ฒ€์ƒ‰์€ Bloom ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต์  ๋น ๋ฆ…๋‹ˆ๋‹ค. ์ฆ‰, ์ ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์€ ํ›„ ํ•ด๋‹น ํŒŒ์ผ์— ํ•„์š”ํ•œ ํ‚ค๊ฐ€ ์žˆ๋Š”์ง€ ์ฆ‰์‹œ ํŒ๋ณ„ํ•˜๊ณ , ์—†์œผ๋ฉด ๋‹ค์Œ ํŒŒ์ผ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.

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

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

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

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

๋ฐฉ๋ฒ• ์„ค๋ช… ์ด๋ก ์ƒ, ์บ์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ธ ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์บ์‹œ์— ๋„๋‹ฌํ•˜์ง€ ์•Š์œผ๋ฉฐ ์‹ค์ œ๋กœ ํ…Œ์ด๋ธ”์˜ 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

"์ฝ์„ ๋•Œ ์บ์‹œ ๋ฐ์ดํ„ฐ" ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ false๋กœ ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์—ฌ๋Ÿฌ๋ถ„์—๊ฒŒ ์ข‹์€ ์•„์ด๋””์–ด๊ฐ€ ์žˆ๋‹ค๋ฉด, ๋Œ“๊ธ€๋กœ ์ž์œ ๋กญ๊ฒŒ ๊ณต์œ ํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

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

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

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

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

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

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

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

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

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

1000001
1000002
...
1100003

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- ๋†“๋‹ค
-์–ป๋‹ค
โ€” Get+Put

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

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

๊ทธ๋ž˜์„œ ๋ธ”๋ก์€ ์ด๋ ‡๊ฒŒ ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค:

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

๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์ด ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ์ฝ”๋“œ ํฌ๊ธฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์†๋„๊ฐ€ ๋–จ์–ด์ง€๊ณ , ์บ์‹ฑ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ์†๋„ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์€ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชฉํ‘œ๋Š” ๊ฐ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์˜ํ–ฅ์˜ ์ •๋„์™€ ์ค‘์š”์„ฑ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ๋Š” ์„ ํ˜• ํšŒ๊ท€ ํ•จ์ˆ˜์˜ ์ž…๋ ฅ์œผ๋กœ ์ œ๊ณต๋˜์—ˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด 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.

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

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

HBase ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
ํ•˜์ง€๋งŒ ํŒŒํ‹ฐ์…˜ ์ˆ˜๋ฅผ ๋Š˜๋ ธ์„ ๋•Œ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋œ๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋‹ค์†Œ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ผ์ž…๋‹ˆ๋‹ค(BulkLoad์—์„œ ํŒŒํ‹ฐ์…˜ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋ฉด ๊ธ์ •์ ์ธ ํšจ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์„ ์ด๋ฏธ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค). ํ•˜์ง€๋งŒ ์ดํ•ดํ•  ๋งŒํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ์ฒซ์งธ, ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ๋Š” ํ•˜๋‚˜๊ฐ€ ์•„๋‹Œ 30๊ฐœ ์ง€์—ญ์— ์š”์ฒญ์„ ๋ณด๋‚ด์•ผ ํ•˜๋Š”๋ฐ, ๋ฐ์ดํ„ฐ ์–‘์ด ๊ทธ๋ ‡๊ฒŒ ๋งŽ์ง€ ์•Š์•„ ์ด๋กœ ์ธํ•œ ์ด์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‘˜์งธ, ์ด ์‹คํ–‰ ์‹œ๊ฐ„์€ ๊ฐ€์žฅ ๋А๋ฆฐ RS์— ์˜ํ•ด ๊ฒฐ์ •๋˜๋ฉฐ, DataNode์˜ ์ˆ˜๊ฐ€ RS์˜ ์ˆ˜๋ณด๋‹ค ์ ๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ถ€ ์ง€์—ญ์€ ์ง€์—ญ์„ฑ์ด ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ, ์ƒ์œ„ 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 ์‚ฌ์šฉ์˜ ์ด๋ก ๊ณผ ์‹ค์ œ
์Šคํƒ ๋“œ: 16๊ฐœ ๋ฐ์ดํ„ฐ๋…ธ๋“œ์™€ 16๊ฐœ RS(CPU Xeon E5-2680 v4 @ 2.40GHz * 64๊ฐœ ์Šค๋ ˆ๋“œ). HBase ๋ฒ„์ „ 1.2.0-cdh5.14.2.

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

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

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

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

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

10. ๊ฒฐ๋ก 

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

๋งŒ์•ฝ ์—ฌ๋Ÿฌ๋ถ„์ด ์ถฉ๋ถ„ํžˆ ๋‹ค๋ฃจ์ง€ ๋ชปํ•œ ๋‚ด์šฉ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ ๋‹ค๋ฉด, ๋” ์ž์„ธํžˆ ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•ด์ฃผ์„ธ์š”. ํ˜น์€ ๋™์˜ํ•˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ํ† ๋ก ํ•ด์ฃผ์„ธ์š”.

์ถœ์ฒ˜ : habr.com

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster