์ข์ ์คํ์์ ์ ์ด๋ฆ์ Danil Lipovoy์ ๋๋ค. Sbertech์ ์ฐ๋ฆฌ ํ์ HBase๋ฅผ ์ด์ ๋ฐ์ดํฐ์ฉ ์คํ ๋ฆฌ์ง๋ก ์ฌ์ฉํ๊ธฐ ์์ํ์ต๋๋ค. ๊ณต๋ถํ๋ ๊ณผ์ ์์ ์ฒด๊ณํํ๊ณ ์ค๋ช ํ๊ณ ์ถ์ ๊ฒฝํ์ด ์์์ต๋๋ค (๋ง์ ๋ถ๋ค๊ป ๋์์ด ๋๊ธธ ๋ฐ๋๋๋ค). ์๋์ ๋ชจ๋ ์คํ์ HBase ๋ฒ์ 1.2.0-cdh5.14.2 ๋ฐ 2.0.0-cdh6.0.0-beta1์ ์ฌ์ฉํ์ฌ ์ํ๋์์ต๋๋ค.
- ์ผ๋ฐ ์ํคํ ์ฒ
- HBASE์ ๋ฐ์ดํฐ ์ฐ๊ธฐ
- HBASE์์ ๋ฐ์ดํฐ ์ฝ๊ธฐ
- ๋ฐ์ดํฐ ์บ์ฑ
- ์ผ๊ด ๋ฐ์ดํฐ ์ฒ๋ฆฌ MultiGet/MultiPut
- ํ ์ด๋ธ์ ์์ญ์ผ๋ก ๋ถํ ํ๋ ์ ๋ต(๋ถํ )
- ๋ด๊ฒฐํจ์ฑ, ์์ถ ๋ฐ ๋ฐ์ดํฐ ์ง์ญ์ฑ
- ์ค์ ๋ฐ ์ฑ๋ฅ
- ์คํธ๋ ์ค ํ ์คํธ
- ์กฐ์ฌ ๊ฒฐ๊ณผ
1. ์ผ๋ฐ ์ํคํ ์ฒ
๋ฐฑ์
๋ง์คํฐ๋ ZooKeeper ๋
ธ๋์ ์๋ ํ์ฑ ๋ง์คํฐ์ ํํธ๋นํธ๋ฅผ ๋ฃ๊ณ , ์ฌ๋ผ์ง๋ ๊ฒฝ์ฐ ๋ง์คํฐ์ ๊ธฐ๋ฅ์ ๋์ ํฉ๋๋ค.
2. HBASE์ ๋ฐ์ดํฐ ์ฐ๊ธฐ
๋จผ์ , ๊ฐ์ฅ ๊ฐ๋จํ ๊ฒฝ์ฐ์ธ put(rowkey)๋ฅผ ์ฌ์ฉํ์ฌ ํ ์ด๋ธ์ ํค-๊ฐ ๊ฐ์ฒด๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ํด๋ผ์ด์ธํธ๋ ๋จผ์ hbase:meta ํ ์ด๋ธ์ ์ ์ฅํ๋ ๋ฃจํธ ์์ญ ์๋ฒ(RRS)๊ฐ ์ด๋์ ์๋์ง ์ฐพ์์ผ ํฉ๋๋ค. ๊ทธ๋ ZooKeeper๋ก๋ถํฐ ์ด ์ ๋ณด๋ฅผ ๋ฐ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ RRS์ ์ก์ธ์คํ๊ณ hbase:meta ํ ์ด๋ธ์ ์ฝ์ต๋๋ค. ์ฌ๊ธฐ์ RS(RegionServer)๊ฐ ๊ด์ฌ ํ ์ด๋ธ์ ์ง์ ๋ rowkey์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ผ์ ๋ด๋นํ๋ ์ ๋ณด๋ฅผ ์ถ์ถํฉ๋๋ค. ๋์ค์ ์ฌ์ฉํ ์ ์๋๋ก ๋ฉํ ํ ์ด๋ธ์ ํด๋ผ์ด์ธํธ์ ์ํด ์บ์๋๋ฏ๋ก ํ์ ํธ์ถ์ RS๋ก ์ง์ ๋ ๋น ๋ฅด๊ฒ ์งํ๋ฉ๋๋ค.
๋ค์์ผ๋ก, ์์ฒญ์ ๋ฐ์ RS๋ ๋จผ์ ์ด๋ฅผ WriteAheadLog(WAL)์ ๊ธฐ๋กํฉ๋๋ค. ์ด๋ ์ถฉ๋ ๋ฐ์ ์ ๋ณต๊ตฌ์ ํ์ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ฐ์ดํฐ๋ฅผ MemStore์ ์ ์ฅํฉ๋๋ค. ์ด๋ ํน์ ์์ญ์ ๋ํด ์ ๋ ฌ๋ ํค ์ธํธ๋ฅผ ํฌํจํ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฒํผ์ ๋๋ค. ํ ์ด๋ธ์ ์ฌ๋ฌ ์์ญ(ํํฐ์ )์ผ๋ก ๋๋ ์ ์์ผ๋ฉฐ, ๊ฐ ์์ญ์๋ ๋ถ๋ฆฌ๋ ํค ์งํฉ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์๋ก ๋ค๋ฅธ ์๋ฒ์ ์ง์ญ์ ๋ฐฐ์นํ์ฌ ๋ ๋์ ์ฑ๋ฅ์ ์ป์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ์ง์ ์ด ๋ช ๋ฐฑํจ์๋ ๋ถ๊ตฌํ๊ณ ์ด๊ฒ์ด ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ํ๋ ๊ฒ์ ์๋๋ผ๋ ์ ์ ๋์ค์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
MemStore์ ํญ๋ชฉ์ ๋ฐฐ์นํ ํ ํญ๋ชฉ์ด ์ฑ๊ณต์ ์ผ๋ก ์ ์ฅ๋์๋ค๋ ์๋ต์ด ํด๋ผ์ด์ธํธ์ ๋ฐํ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ๋ฒํผ์๋ง ์ ์ฅ๋๋ฉฐ, ์ผ์ ์๊ฐ์ด ์ง๋๊ฑฐ๋ ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ์ฑ์์ ธ์ผ๋ง ๋์คํฌ์ ๋๋ฌํ๊ฒ ๋ฉ๋๋ค.
'์ญ์ ' ์์
์ ์ํํ ๋ ๋ฐ์ดํฐ๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ญ์ ๋์ง ์์ต๋๋ค. ๋จ์ํ ์ญ์ ๋ ๊ฒ์ผ๋ก ํ์๋๋ฉฐ, ์ฃผ์ ์์ถ ํจ์๋ฅผ ํธ์ถํ๋ ์๊ฐ ํ๊ธฐ ์์ฒด๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด์ ๋ํ ์์ธํ ๋ด์ฉ์ 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๋ก ๊ตฌ์ฑ๋ ํด๋ฌ์คํฐ์ ๋ถํ ๊ฒฐ๊ณผ์ ๋๋ค.
์ฌ๊ธฐ์๋ ํ
์ด๋ธ์ ํํฐ์
(์ง์ญ) ์์ Spark ์คํ ํ๋ก๊ทธ๋จ์ ์๋ฅผ ๋๋ฆฌ๋ฉด ๋ค์ด๋ก๋ ์๋๊ฐ ๋นจ๋ผ์ง๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ๋ํ ์๋๋ ๋
น์ ๋ณผ๋ฅจ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ํฐ ๋ธ๋ก์ MB/์ด๋ฅผ ์ฆ๊ฐ์ํค๊ณ ์์ ๋ธ๋ก์ ๋จ์ ์๊ฐ๋น ์ฝ์
๋ ๋ ์ฝ๋ ์๋ฅผ ์ฆ๊ฐ์ํค๋ฉฐ ๋ค๋ฅธ ๋ชจ๋ ์กฐ๊ฑด์ ๋์ผํฉ๋๋ค.
๋์์ ๋ ๊ฐ์ ํ ์ด๋ธ์ ๋ก๋๋ฅผ ์์ํ์ฌ ์๋๋ฅผ ๋ ๋ฐฐ๋ก ๋์ผ ์๋ ์์ต๋๋ค. ์๋์์๋ ํ ๋ฒ์ ๋ ํ ์ด๋ธ์ 10KB ๋ธ๋ก์ ์ฐ๋ ๊ฒ์ด ๊ฐ๊ฐ ์ฝ 600MB/์ด(์ด 1275MB/์ด)์ ์๋๋ก ๋ฐ์ํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ ํ๋์ ํ ์ด๋ธ์ ์ฐ๋ ์๋์ธ 623MB/์ด์ ์ผ์นํฉ๋๋ค. ์ 11๋ฒ)
๊ทธ๋ฌ๋ 50KB์ ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ ๋ ๋ฒ์งธ ์คํ์์๋ ๋ค์ด๋ก๋ ์๋๊ฐ ์ฝ๊ฐ ์ฆ๊ฐํ๊ณ ์์ผ๋ฉฐ ์ด๋ ์ ํ ๊ฐ์ ์ ๊ทผํ๊ณ ์์์ ๋ํ๋
๋๋ค. ๋์์, ์ค์ ๋ก HBASE ์์ฒด์๋ ๋ก๋๊ฐ ์์ฑ๋์ง ์๋๋ค๋ ์ ์ ๋ช
์ฌํด์ผ ํฉ๋๋ค. ํ์ํ ๊ฒ์ ๋จผ์ hbase:meta์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๊ณ HFiles๋ฅผ ๋ผ์ด๋ํ ํ BlockCache ๋ฐ์ดํฐ๋ฅผ ์ฌ์ค์ ํ๊ณ ๋น์ด ์์ง ์์ ๊ฒฝ์ฐ ๋์คํฌ์ ๋ํ MemStore ๋ฒํผ์
๋๋ค.
3. HBASE์์ ๋ฐ์ดํฐ ์ฝ๊ธฐ
ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ฏธ hbase:meta์ ๋ชจ๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด(ํฌ์ธํธ 2 ์ฐธ์กฐ) ์์ฒญ์ ํ์ํ ํค๊ฐ ์ ์ฅ๋ RS๋ก ์ง์ ์ด๋ํฉ๋๋ค. ๋จผ์ MemCache์์ ๊ฒ์์ด ์ํ๋ฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด BlockCache ๋ฒํผ์ ํ์ํ ๊ฒฝ์ฐ HFiles์์๋ ๊ฒ์์ด ์ํ๋ฉ๋๋ค. ํ์ผ์์ ๋ฐ์ดํฐ๊ฐ ๋ฐ๊ฒฌ๋๋ฉด BlockCache์ ์ ์ฅ๋๋ฉฐ ๋ค์ ์์ฒญ ์ ๋ ๋น ๋ฅด๊ฒ ๋ฐํ๋ฉ๋๋ค. Bloom ํํฐ๋ฅผ ์ฌ์ฉํ๋ฉด HFile์์ ๊ฒ์ํ๋ ๊ฒ์ด ์๋์ ์ผ๋ก ๋น ๋ฆ ๋๋ค. ์๋์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ์ด ํ์ผ์ ํ์ํ ํค๊ฐ ํฌํจ๋์ด ์๋์ง ์ฆ์ ํ์ธํ๊ณ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๋ค์ ํ์ผ๋ก ์ด๋ํฉ๋๋ค.
์ด ์ธ ๊ฐ์ง ์์ค๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ฉด RS๋ ์๋ต์ ์์ฑํฉ๋๋ค. ํนํ, ํด๋ผ์ด์ธํธ๊ฐ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์์ฒญํ ๊ฒฝ์ฐ ๋ฐ๊ฒฌ๋ ์ฌ๋ฌ ๋ฒ์ ์ ๊ฐ์ฒด๋ฅผ ํ ๋ฒ์ ์ ์กํ ์ ์์ต๋๋ค.
4. ๋ฐ์ดํฐ ์บ์ฑ
MemStore ๋ฐ BlockCache ๋ฒํผ๋ ํ ๋น๋ ์จ ํ RS ๋ฉ๋ชจ๋ฆฌ์ ์ต๋ 80%๋ฅผ ์ฐจ์งํฉ๋๋ค(๋๋จธ์ง๋ RS ์๋น์ค ์์ ์ฉ์ผ๋ก ์์ฝ๋จ). ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ๋ชจ๋๊ฐ ํ๋ก์ธ์ค๊ฐ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ณ ์ฆ์ ์ฝ๋ ๊ฒ์ด๋ผ๋ฉด BlockCache๋ฅผ ์ค์ด๊ณ MemStore๋ฅผ ๋๋ฆฌ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค. ์ฐ๊ธฐ ๋ฐ์ดํฐ๊ฐ ์ฝ๊ธฐ๋ฅผ ์ํด ์บ์์ ๋ค์ด๊ฐ์ง ์์ผ๋ฉด BlockCache์ ์ฌ์ฉ ๋น๋๊ฐ ์ค์ด๋ญ๋๋ค. BlockCache ๋ฒํผ๋ LruBlockCache(ํญ์ ํ์ ์์)์ BucketCache(์ผ๋ฐ์ ์ผ๋ก ํ์ ์์ง ์๊ฑฐ๋ SSD์ ์์)์ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. BucketCache๋ ์ฝ๊ธฐ ์์ฒญ์ด ๋ง๊ณ LruBlockCache์ ๋ง์ง ์์ Garbage Collector๊ฐ ํ๋ฐํ๊ฒ ์๋ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋์์ ์ฝ๊ธฐ ์บ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ด ํฌ๊ฒ ํฅ์๋ ๊ฒ์ด๋ผ๊ณ ๊ธฐ๋ํด์๋ ์ ๋์ง๋ง ์ด์ ๋ํด์๋ 8๋ฌธ๋จ์์ ๋ค์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์ ์ฒด RS์ ํ๋์ BlockCache๊ฐ ์๊ณ ๊ฐ ํ
์ด๋ธ๋ง๋ค ํ๋์ MemStore๊ฐ ์์ต๋๋ค(๊ฐ Column Family์ ํ๋์ฉ).
๋ฐฉ๋ฒ
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 ๋ชจ๋๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋๋ฉด ์ด ์๊ณ๊ฐ ์ดํ ์ฑ๋ฅ์ด ๊ธ๊ฒฉํ๊ฒ ๋จ์ด์ง๊ธฐ ์์ํ๊ณ ๋ ์ฝ๋์ ๋ฐ์ดํฐ ์์ด ๋ง์์ง์๋ก ์๋ ์๊ฐ์ด ๊ธธ์ด์ง๋๋ค.
ํ
์คํธ๋ ๊ฐ์ ๋จธ์ , 8๊ฐ ์ฝ์ด, ๋ฒ์ HBase 2.0.0-cdh6.0.0-beta1์์ ์ํ๋์์ต๋๋ค.
MSLAB ๋ชจ๋๋ ์ ์ธ๋ ๋ฐ์ดํฐ์ ๊ตฌ์ธ๋ ๋ฐ์ดํฐ์ ํผํฉ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ํ ์กฐ๊ฐํ๋ฅผ ์ค์ด๊ธฐ ์ํด ์ค๊ณ๋์์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก MSLAB์ ํ์ฑํํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์๋์ ์ผ๋ก ์์ ์ (์ฒญํฌ)์ ๋ฐฐ์น๋์ด ์ฒญํฌ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก, ์์ฒญํ ๋ฐ์ดํฐ ํจํท์ ์์ด ํ ๋น๋ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ๋ฉด ์ฑ๋ฅ์ด ๊ธ๊ฒฉํ ์ ํ๋ฉ๋๋ค. ๋ฐ๋ฉด, ์ด ๋ชจ๋๋ฅผ ๋๋ ๊ฒ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ์ง์ค๋๋ ๋์ GC๋ก ์ธํด ์ค์ง๋ ์ ์์ผ๋ฏ๋ก ๊ถ์ฅ๋์ง ์์ต๋๋ค. ์ข์ ํด๊ฒฐ์ฑ ์ ์ฝ๊ธฐ์ ๋์์ ๋ฃ๊ธฐ๋ฅผ ํตํด ํ์ฑ ์ฐ๊ธฐ์ ๊ฒฝ์ฐ ์ ๋ณผ๋ฅจ์ ๋๋ฆฌ๋ ๊ฒ์ ๋๋ค. ๊ธฐ๋ก ํ MemStore๋ฅผ ๋์คํฌ๋ก ์ฌ์ค์ ํ๋ ํ๋ฌ์ ๋ช ๋ น์ ์คํํ๊ฑฐ๋ BulkLoad๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๋ํ๋ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ค๋ ์ ์ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ์๋ ํ๋ ๋ ํฐ(๋์ผํ ์) ๋ฐ์ดํฐ์ ๋ํ MemStore์ ์ฟผ๋ฆฌ๋ก ์ธํด ์๋๊ฐ ๋๋ ค์ง๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค. ๊ทธ๋ฌ๋ ์ฒญํฌ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๋ฉด ์ฒ๋ฆฌ ์๊ฐ์ด ์ ์์ผ๋ก ๋์๊ฐ๋๋ค.
์ฒญํฌ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๋ ๊ฒ ์ธ์๋ ์ง์ญ๋ณ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํ๋ ๊ฒ์ด ๋์์ด ๋ฉ๋๋ค. ํ
์ด๋ธ ๋ถํ . ์ด๋ก ์ธํด ๊ฐ ์ง์ญ์ผ๋ก ๋ค์ด์ค๋ ์์ฒญ์ด ์ค์ด๋ค๊ณ ์
์ ๋ง์ผ๋ฉด ์๋ต์ด ์ํธํ๊ฒ ์ ์ง๋ฉ๋๋ค.
6. ํ ์ด๋ธ์ ์์ญ์ผ๋ก ๋ถํ ํ๋ ์ ๋ต(๋ถํ )
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๊ฐ ์๋ํ๊ธฐ ์์ํ์ฌ ์ฌ์ค์ ๋ชจ๋ ์์ ์ด ๋ง๋น๋ฉ๋๋ค. ๋๊ท๋ชจ ์์ถ ์์ ์ ์์ํ์ฌ ๋ฐ์ํ ์ํด๋ฌผ์ ์ ๊ฑฐํ๊ณ ์์ฐ์ฑ์ ํ๋ณตํ์ต๋๋ค.
ํ
์คํธ๋ 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๊ฐ์ ์คํ์ด ์์ต๋๋ค.
ํ
์คํธ๋ 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 ์์ ์ ์ค์ํ์ง ์๋ค๋ ํ์์ ๊ธฐ์ค์ ๋ณผ ์ ์์ต๋๋ค(์ผ๋ฐ์ ์ผ๋ก ์์ธก ๊ฐ๋ฅํจ).
๊ทธ๋ฌ๋ ํํฐ์
์๋ฅผ ๋๋ฆฌ๋ฉด ์ฑ๋ฅ์ด ์ ํ๋๋ค๋ ์ฌ์ค์ ์ดํดํ ์ ์์ง๋ง ๋ค์ ์์์น ๋ชปํ ์ผ์
๋๋ค(BulkLoad๋ฅผ ์ฌ์ฉํ์ฌ ํํฐ์
์๋ฅผ ๋๋ฆฌ๋ฉด ๊ธ์ ์ ์ธ ์ํฅ์ ์ด๋ฏธ ํ์ธํ์ต๋๋ค). ์ฒซ์งธ, ์ฒ๋ฆฌ๋ฅผ ์ํด์๋ 30๊ฐ ์ง์ญ์ด ์๋ XNUMX๊ฐ ์ง์ญ์ ๋ํ ์์ฒญ์ ์์ฑํด์ผ ํ๋๋ฐ, ๋ฐ์ดํฐ ์์ด ์ด ์ ๋๋ก ์ด๋์ ์ป์ ์ ๋๋ ์๋๋ค. ๋์งธ, ์ด ๋์ ์๊ฐ์ ๊ฐ์ฅ ๋๋ฆฐ RS์ ์ํด ๊ฒฐ์ ๋๋๋ฐ, DataNode์ ์๊ฐ RS์ ์๋ณด๋ค ์ ๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ์ง์ญ์์๋ ์ง์ฝ์ฑ์ด XNUMX์ด ๋ฉ๋๋ค. ๊ทธ๋ผ ์์ XNUMX๊ฐ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ด์ Get ๋ธ๋ก ์คํ ๊ฒฐ๊ณผ๋ฅผ ํ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
ํํฐ์
์๊ฐ ์๋ฏธ๋ฅผ ์์๋๋ฐ, ์ด๋ ์๋ง๋ ๋ฐ์ดํฐ๊ฐ ์ ์บ์๋๊ณ ์ฝ๊ธฐ ์บ์๊ฐ ๊ฐ์ฅ ์ค์ํ(ํต๊ณ์ ) ๋งค๊ฐ๋ณ์๋ผ๋ ์ฌ์ค๋ก ์ค๋ช
๋ ์ ์์ต๋๋ค. ๋น์ฐํ ์์ฒญ์ ๋ฉ์์ง ์๋ฅผ ๋๋ฆฌ๋ ๊ฒ๋ ์ฑ๋ฅ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์ต๊ณ ์ ์:
๋ง์ง๋ง์ผ๋ก ๋จผ์ get๊ณผ put์ ์ํํ ๋ธ๋ก์ ๋ชจ๋ธ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ์๋ ๋ชจ๋ ๋งค๊ฐ๋ณ์๊ฐ ์ค์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฆฌ๋๋ค์ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
9. ๋ถํ ํ ์คํธ
๊ธ์, ๋ง์นจ๋ด ์ฐ๋ฆฌ๋ ์ด๋ ์ ๋ ๊ด์ฐฎ์ ๋ก๋๋ฅผ ์ถ์ํ ๊ฒ์ด์ง๋ง ๋น๊ตํ ๊ฒ์ด ์์ผ๋ฉด ํญ์ ๋ ํฅ๋ฏธ๋ก์ธ ๊ฒ์
๋๋ค. Cassandra์ ์ฃผ์ ๊ฐ๋ฐ์์ธ DataStax์ ์น์ฌ์ดํธ์๋
๋ด๊ฐ ์๋ ํ, ์ฝ๊ธฐ๋ 100๊ฐ์ ๋ ์ฝ๋ ๋ธ๋ก์ผ๋ก ์ํ๋์์ผ๋ฉฐ 16๊ฐ์ HBase ๋
ธ๋์ ๋ํด DataStax ํ
์คํธ์์ ์ด๋น 10๊ฐ์ ์์
์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ์์ต๋๋ค.
์ฐ๋ฆฌ ํด๋ฌ์คํฐ์๋ 16๊ฐ์ ๋ ธ๋๊ฐ ์๋ค๋ ๊ฒ์ ๋คํ์ด์ง๋ง ๊ฐ ๋ ธ๋์ 64๊ฐ์ ์ฝ์ด(์ค๋ ๋)๊ฐ ์๋ ๊ฒ์ ๊ทธ๋ฆฌ "์ด์ด ์ข์ง" ์์ต๋๋ค. ๋ฐ๋ฉด DataStax ํ ์คํธ์๋ 4๊ฐ๋ง ์์ต๋๋ค. ๋ฐ๋ฉด์ ๊ทธ๋ค์ SSD ๋๋ผ์ด๋ธ๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง ์ฐ๋ฆฌ๋ HDD๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋๋ ๋ก๋ ์ค ์ ๋ฒ์ ์ HBase ๋ฐ CPU ์ฌ์ฉ๋ฅ ์ ์ค์ง์ ์ผ๋ก ํฌ๊ฒ ์ฆ๊ฐํ์ง ์์์ต๋๋ค(์๊ฐ์ ์ผ๋ก 5~10%). ํ์ง๋ง ์ด ๊ตฌ์ฑ์ ์ฌ์ฉํด ์์ํด ๋ณด๊ฒ ์ต๋๋ค. ๊ธฐ๋ณธ ํ ์ด๋ธ ์ค์ , ์ฝ๊ธฐ๋ 0์์ 50์ฒ๋ง ์ฌ์ด์ ํค ๋ฒ์์์ ๋ฌด์์๋ก ์ํ๋ฉ๋๋ค(์ฆ, ๊ธฐ๋ณธ์ ์ผ๋ก ๋งค๋ฒ ์๋ก์์ง). ํ ์ด๋ธ์๋ 50๊ฐ์ ํํฐ์ ์ผ๋ก ๋๋์ด์ง 64์ฒ๋ง ๊ฐ์ ๋ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ํค๋ crc32๋ฅผ ์ฌ์ฉํ์ฌ ํด์๋ฉ๋๋ค. ํ ์ด๋ธ ์ค์ ์ ๊ธฐ๋ณธ๊ฐ์ด๋ฉฐ MSLAB์ ํ์ฑํ๋์ด ์์ต๋๋ค. 40๊ฐ์ ์ค๋ ๋๋ฅผ ์์ํ๋ฉด ๊ฐ ์ค๋ ๋๋ 100๊ฐ์ ์์ ํค ์งํฉ์ ์ฝ๊ณ ์์ฑ๋ 100๋ฐ์ดํธ๋ฅผ ์ฆ์ ์ด ํค์ ๋ค์ ์๋๋ค.
์คํ ๋: 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๋ฅผ ๋ค์ ์๋๋ค.
์คํ ๋: 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์์ ์ป์ ๊ฒฐ๊ณผ๋ณด๋ค ๊ฒฐ๊ณผ๊ฐ ํจ์ฌ ๋ ์ฐ์ํ๋ค๋ ์ ์ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
์คํ ๋: 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