[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/