[Hbase] ์†Œ๊ฐœ

[์›๋ณธ ๋งํฌ]

HBase๋Š” Hadoop Database์˜ ์ถ•์•ฝ์œผ๋กœ, ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์ด๋‹ค.

์ด๋ฆ„ ๊ทธ๋Œ€๋กœ Hadoop์˜ ํŒŒ์ผ์‹œ์Šคํ…œ ๊ตฌ์กฐ HDFS์— ๊ธฐ๋ฐ˜ํ•ด์„œ ๋งŒ๋“ค์–ด์กŒ๊ณ , Java๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค. Google์˜ Bigtable๊ฐ€ ๋ชจํ‹ฐ๋ธŒ๋‹ค.

ํƒ„์ƒ ์‹œ๊ธฐ๋Š” 2008๋…„.

SQL์€ ์ง€์›ํ•˜์ง€ ์•Š๋Š” NoSQL ์‹œ์Šคํ…œ์ด๋‹ค. ํ„ฐํ”„ํ•œ raw query ๊ตฌ์กฐ๋ฅผ ๊ฐ€์กŒ๋‹ค.




ํŠน์ง•

๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค์— ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์ธ DB๋กœ ์ ํ•ฉํ•œ ํฌ์ง€์…˜์ด๋‹ค.

๋งค์šฐ ๋†’์€ ์‹ค์‹œ๊ฐ„ ์“ฐ๊ธฐ/์ฝ๊ธฐ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ œ๊ณตํ•˜๋Š” ๊ณ ์„ฑ๋Šฅ DB์— ์†ํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  NoSQL๋กœ์„œ๋Š” ํŠน์ดํ•˜๊ฒŒ ๊ฝค ๊ฐ•๋ ฅํ•œ ํŠธ๋žœ์žญ์…˜๊ณผ ์ผ๊ด€์„ฑ ์ˆ˜์ค€์„ ์ œ๊ณตํ•œ๋‹ค. (๋‹ค๋งŒ ์™„์ „ํ•œ ACID ์ˆ˜์ค€์„ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š์Œ)

ํŽ˜ํƒ€๋ฐ”์ดํŠธ ๋‹จ์œ„์˜ ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์‹œ์Šคํ…œ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋””์Šคํฌ ์ €์žฅ ํšจ์œจ ์ž์ฒด๋„ ๊ฝค ๊ดœ์ฐฎ์€ ํŽธ์ด๋‹ค.
๋‹ค๋ฅธ DB๋“ค๋ณด๋‹ค ๋ฐ์ดํ„ฐ ์••์ถ•์„ ์ž˜ ํ•ด์ค€๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์กฐ์— ์žˆ์–ด์„œ๋Š” ์š”์ฆ˜ ๋ถ„์‚ฐ DB๋“ค๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ Master-Slave ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค. ๋‹จ์ผ Master๋ฅผ ํ†ตํ•ด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๊ด€๋ฆฌ๋œ๋‹ค.




์•„ํ‚คํ…์ณ

๋‚ด๋ถ€ ์•„ํ‚คํ…์ณ๋‚˜ ๋™์ž‘๋ฐฉ์‹์€ ๋‹ค์†Œ ๋ณต์žกํ•œ ํŽธ์ด๋‹ค.
๋‹จ์ผ ๊ธฐ์ˆ ์Šคํƒ์ด ์•„๋‹ˆ๋ผ, ์–‘ํŒŒ์ฒ˜๋Ÿผ ๊ฒน๊ฒน์ด ์Œ“์•„์˜ฌ๋ฆฐ ๊ธฐํ˜•์ ์ธ ์‹œ์Šคํ…œ์ด๋ผ ๋” ๊ทธ๋ ‡๋‹ค.

์ผ๋‹จ ์ตœ์ƒ์œ„ ๊ด€๋ฆฌ์ž๋กœ๋Š” HMaster์™€ Zookeeper๊ฐ€ ์กด์žฌํ•œ๋‹ค.
Zookeeper๋Š” ์žฅ์• ์ง€ ๊ฐ์ง€/๋ณต๊ตฌ ๋“ฑ์„ ๊ฐ๋…ํ•˜๊ณ , HMaster๋Š” ์ข€ ๋” ์„ธ๋ถ€์ ์ธ ์žฅ์• ์ฒ˜๋ฆฌ๋‚˜ ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ, ๋ฐ์ดํ„ฐ coordinatin ๋“ฑ์„ ๊ฐ๋…ํ•œ๋‹ค. ๊ฐ๋…์ž๊ฐ€ ๋‘˜์ด๋ผ์„œ ์ข€ ๊ดด๋ฌผ๊ฐ™๊ธด ํ•œ๋ฐ... ์•„๋ฌดํŠผ ๊ทธ๋ ‡๋‹ค.

์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ณ  ์ฝ๋Š” ์ฃผ์ฒด๋Š” Region Server๋‹ค. ์ €๊ฒŒ ๊ฐ๊ฐ์˜ Slave Server์ธ ์…ˆ์ด๋‹ค.
Client๊ฐ€ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๋ฉด, ์ ์ ˆํ•œ Region Server๋กœ ์ฟผ๋ฆฌ๊ฐ€ ์ „๋‹ฌ๋œ๋‹ค. Region ์„œ๋ฒ„๋Š” ์ฟผ๋ฆฌ๋ฅผ ํ•ด์„ํ•ด์„œ HDFS ํŒŒ์ผ์‹œ์Šคํ…œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ฝ๋Š”๋‹ค.
Region Server ์ž์ฒด์— ๋ฐ์ดํ„ฐ๊ฐ€ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค. Worker Node์ผ ๋ฟ์ด๋‹ค.




vs CassandraDB

HBase์˜ ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ๋Œ€์ ์ž๋Š” CassandraDB๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
ํŽ˜๋ถ์„ ์œ„์‹œ๋กœ CassandraDB์˜ ์˜ํ–ฅ์ด ํผ์ ธ๋‚˜๊ฐ€๋ฉด์„œ HBase๋Š” ์•ฝ๊ฐ„ ์˜›๋‚  ๊ธฐ์ˆ ์ฒ˜๋Ÿผ ์ทจ๊ธ‰๋ฐ›๋Š” ๊ธฐ์กฐ๊ฐ€ ์žˆ๋‹ค.

์‹ค์ œ๋กœ๋„ ๋งŽ์€ ๋ถ€๋ถ„์—์„œ CassandraDB๋ณด๋‹ค ๋งŽ์ด ์ณ์ง€๊ธด ํ•œ๋‹ค.
๊ฑฐ์˜ ์œ ์ผํ•œ ์žฅ์ ์€ ํ•˜๋‘ก์˜ ๊ฐ•๋ ฅํ•œ ์—์ฝ”์‹œ์Šคํ…œ๋“ค์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ ์ •๋„๋‹ค.



์šด์˜๋Šฅ๋ ฅ

์ผ๋‹จ HBase๋ฅผ ๋น„๋กฏํ•œ ํ•˜๋‘ก ์Šคํƒ๋“ค์€ ํ•˜๋‚˜๊ฐ™์ด ์šด์˜ ๋‚œ์ด๋„๊ฐ€ ๋†’์€ ํŽธ์ด๋‹ค. ํ™˜๊ฒฝ ์ž์ฒด๊ฐ€ ์‡ ํ‡ดํ•˜๋Š” ๊ฒƒ๋„ ์žˆ๊ณ , ๊ณ„์ธต์ด ์“ธ๋ฐ์—†์ด ๋ณต์žกํ•˜๋‹ค.
Cassandra-like ์‹œ์Šคํ…œ๋“ค์€ ์ปค๋ฎค๋‹ˆํ‹ฐ๋„ ๊ฝค ์ž˜ ๊ตด๋Ÿฌ๊ฐ€๊ณ , ๊ธฐ์ˆ ์˜ ์šด์˜ ๋ณต์žก๋„๊ฐ€ ๋น„๊ต์  ๋‚ฎ์€ ํŽธ์ด๋‹ค.



์ˆ˜ํ‰ ํ™•์žฅ

CassandraDB๋Š” ์ˆ˜ํ‰ ํ™•์žฅ์ด ๊ฝค ์ž์œ ๋กญ๊ณ  ํŽธํ•œ ํŽธ์ด๋‹ค. P2P๋ผ์„œ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ํ‰๋“ฑํ•˜๊ณ , ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋„ ์‰ฝ๋‹ค.
HBase๋Š” ํ™•์žฅ ์ž์ฒด๋„ ์†์ด ๋งŽ์ด ๊ฐ€๊ณ , ๊ณ ๋ คํ•  ๊ฒƒ๋„ ๋งŽ๋‹ค. HDFS๊ฐ€ ๋ณ‘๋ชฉ์ด๋ฉด ํ•˜๋‘ก ์ˆ˜์ค€์—์„œ ํ™•์žฅ์„ ๊ณ ๋ คํ•ด์•ผ ํ•˜๊ณ , ์—ฐ์‚ฐ์ด ๋ณ‘๋ชฉ์ด๋ผ๋ฉด Region Server๋ฅผ ํ™•์žฅํ•ด์•ผ ํ•œ๋‹ค. ๋‘˜ ๋‹ค ํ•ด์•ผํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๊ด€๋ฆฌ์ง€์ ์ด ๊ณผ๋„ํ•˜๊ฒŒ ๋ณต์žกํ•˜๋‹ค.



๊ฐ€์šฉ์„ฑ

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



์„ฑ๋Šฅ

์‚ฌ์‹ค ์‹ค์„ฑ๋Šฅ์€ CassandraDB๊ฐ€ ๋Œ€์ฒด๋กœ ๋” ๋น ๋ฅธ ํŽธ์ด๋‹ค. ์“ฐ๊ธฐ/์ฝ๊ธฐ ๋ชจ๋‘.



ํŒŒํ‹ฐ์…˜

CassandraDB๋Š” ํŒŒํ‹ฐ์…˜ ํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‹ค์ œ ํŒŒํ‹ฐ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ํŠน์ • ํŒŒํ‹ฐ์…˜ ๋‚ด์˜ ์กฐํšŒ๋Š” ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ์ด ํŠน์ง•์ด๋‹ค. ๊ทธ๋ž˜์„œ ํŒŒํ‹ฐ์…˜ ํ‚ค๋ฅผ ์ž˜ ์žก์•„์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž˜ ๋ถ„์‚ฐ๋˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ฃผ์š” ์ตœ์ ํ™” ํฌ์ธํŠธ๊ฐ€ ๋œ๋‹ค.

๋ฐ˜๋ฉด HBase์—๋Š” ํŒŒํ‹ฐ์…˜์ด๋ผ๋Š” ๊ฐœ๋…์ด ์—†๋‹ค. Row Key๋ผ๋Š” ๊ฒƒ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์ €์žฅ๋˜๋Š”๋ฐ, ๊ทธ๋ž˜์„œ Row Key ๊ธฐ์ค€์œผ๋กœ ๋ฒ”์œ„ ์Šค์บ”์„ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•œ๋‹ค. ํ•˜์ง€๋งŒ CassandraDB์ฒ˜๋Ÿผ ํŠน์ • ํŒŒํ‹ฐ์…˜ ๊ทธ๋ฃน(์˜ˆ๋ฅผ ๋“ค๋ฉด ํŠน์ • user)์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋น ๋ฅด๊ฒŒ ์Šค์บ”ํ•œ๋‹ค๋Š”์ง€ ํ•˜๋Š”๊ฑด ๋น„๊ต์  ๋А๋ฆฌ๋‹ค.
์ด๊ฑธ ํšจ์œจํ™”ํ•˜๋ ค๋ฉด Row Key๋ฅผ ๊ธฐ๊ดดํ•˜๊ฒŒ ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค. ๊ฐ™์€ ๊ฐ€์ƒ-ํŒŒํ‹ฐ์…˜ ๋‹จ์œ„๋ผ๋ฆฌ๋Š” ๋™์ผํ•œ ๋ฌธ์ž์—ด ๊ฐ’์„ prefix๋กœ ๋„ฃ์–ด์„œ ์ •๋ ฌํ• ๋•Œ ๋ญ‰์ณ์„œ ๋‚˜์˜ค๊ฒŒ ํ•œ๋‹ค๋“ ์ง€.



์ฐธ์กฐ
https://aws.amazon.com/ko/what-is/apache-hbase/
https://www.geeksforgeeks.org/dbms/architecture-of-hbase/