์๋ ํ์ธ์ ์ ๋ 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 ํ ์ด๋ธ์ ์ฝ์ต๋๋ค. ์ฌ๊ธฐ์ ๊ด์ฌ ์๋ ํ ์ด๋ธ์ ์ฃผ์ด์ง ํ ํค์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ RegionServer(RS)์ ๋ํ ์ ๋ณด๋ฅผ ์ถ์ถํฉ๋๋ค. ๋์ค์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ฉํ ํ ์ด๋ธ์ ํด๋ผ์ด์ธํธ์ ์ํด ์บ์๋๋ฏ๋ก ํ์ ์์ฒญ์ด ๋ ๋น ๋ฅด๊ฒ RS์ ์ง์ ์ ์ก๋ฉ๋๋ค.
๋ค์์ผ๋ก, RS๋ ์์ฒญ์ ๋ฐ์ผ๋ฉด ๋จผ์ ์ถฉ๋ ๋ฐ์ ์ ๋ณต๊ตฌ์ ํ์ํ WriteAheadLog(WAL)์ ์์ฒญ์ ๊ธฐ๋กํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ MemStore์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ์ด๋ ์ฃผ์ด์ง ์์ญ์ ๋ํ ์ ๋ ฌ๋ ํค ์งํฉ์ ํฌํจํ๋ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ๋ฒํผ์ ๋๋ค. ํ ์ด๋ธ์ ์ฌ๋ฌ ์์ญ(ํํฐ์ )์ผ๋ก ๋๋ ์ ์์ผ๋ฉฐ, ๊ฐ ์์ญ์ ๋ถ๋ฆฌ๋ ํค ์งํฉ์ ํฌํจํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฌ๋ฌ ์๋ฒ์ ์ง์ญ์ ๋ฐฐ์นํ์ฌ ๋ ๋์ ์ฑ๋ฅ์ ์ป์ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด ์ฃผ์ฅ์ด ๋๋ฌด๋ ๋ช ๋ฐฑํจ์๋ ๋ถ๊ตฌํ๊ณ , ์ด๊ฒ์ด ๋ชจ๋ ๊ฒฝ์ฐ์ ์ ์ฉ๋๋ ๊ฒ์ ์๋๋ผ๋ ์ฌ์ค์ ๋์ค์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
๋ ์ฝ๋๊ฐ MemStore์ ๋ฐฐ์น๋๋ฉด ๋ ์ฝ๋๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ ์ฅ๋์๋ค๋ ์๋ต์ด ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐํ๋ฉ๋๋ค. ์ค์ ๋ก๋ ๋ฒํผ์๋ง ์ ์ฅ๋๊ณ ์ผ์ ์๊ฐ์ด ์ง๋๊ฑฐ๋ ์๋ก์ด ๋ฐ์ดํฐ๋ก ์ฑ์์ง ๋๋ง ๋์คํฌ์ ๊ธฐ๋ก๋ฉ๋๋ค.

"์ญ์ " ์์
์ ์ํํด๋ ๋ฌผ๋ฆฌ์ ์ธ ๋ฐ์ดํฐ ์ญ์ ๋ ๋ฐ์ํ์ง ์์ต๋๋ค. ์ด๋ฌํ ํญ๋ชฉ์ ๋จ์ํ ์ญ์ ๋ ๊ฒ์ผ๋ก ํ์๋ ๋ฟ์ด๋ฉฐ, ์ญ์ ์์ฒด๋ 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๋ก ๊ตฌ์ฑ๋ ํด๋ฌ์คํฐ์ ๋ก๋ฉํ ๊ฒฐ๊ณผ์ ๋๋ค.

์ฌ๊ธฐ์๋ ํ
์ด๋ธ์ ํํฐ์
(์ง์ญ) ์์ Spark ์คํ์์ ์๋ฅผ ๋๋ฆฌ๋ฉด ๋ก๋ฉ ์๋๊ฐ ๋นจ๋ผ์ง๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์๋๋ ๋
น์ ๋ณผ๋ฅจ์ ๋ฐ๋ผ์๋ ๋ฌ๋ผ์ง๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ์กฐ๊ฑด์ด ๋์ผํ๋ค๋ฉด, ํฐ ๋ธ๋ก์ MB/์ด ์ธก์ ์น๋ฅผ ์ฆ๊ฐ์ํค๊ณ , ์์ ๋ธ๋ก์ ๋จ์ ์๊ฐ๋น ์ฝ์
๋ ๋ ์ฝ๋ ์๋ฅผ ์ฆ๊ฐ์ํต๋๋ค.
๋ ๊ฐ์ ํ ์ด๋ธ์ ๋์์ ๋ก๋ฉ์ ์คํํ์ฌ ์๋๋ฅผ ๋ ๋ฐฐ๋ก ๋์ผ ์๋ ์์ต๋๋ค. ์๋์์ ๋ ๊ฐ์ ํ ์ด๋ธ์ ๋์์ 10KB ๋ธ๋ก์ ์ฐ๋ ๊ฒ์ด ๊ฐ๊ฐ ์ฝ 600MB/์ด(์ ์ฒด 1275MB/์ด)์ ์๋๋ก ์ํ๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ ํ๋์ ํ ์ด๋ธ์ ์ฐ๋ ์๋์ธ 623MB/์ด์ ๋์ผํฉ๋๋ค(์์ #11 ์ฐธ์กฐ).

ํ์ง๋ง 50KB ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ ๋ ๋ฒ์งธ ์ถ์์์๋ ๋ค์ด๋ก๋ ์๋๊ฐ ์ฝ๊ฐ๋ง ์ฆ๊ฐํ์ฌ ํ๊ณ๊ฐ์ ์ ๊ทผํ๊ณ ์์์ ๋ณด์ฌ์ค๋๋ค. ์ฌ๊ธฐ์ HBASE ์์ฒด์๋ ์ค์ง์ ์ผ๋ก ๋ถํ๊ฐ ์ ํ ์๋ค๋ ์ ์ ๋ช
์ฌํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํ์ํ ๊ฒ์ ๋จผ์ hbase:meta์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๊ณ , HFiles ๋ฐฑ์
ํ BlockCache ๋ฐ์ดํฐ๋ฅผ ์ฌ์ค์ ํ๊ณ MemStore ๋ฒํผ๊ฐ ๋น์ด ์์ง ์์ผ๋ฉด ๋์คํฌ์ ์ ์ฅํ๋ ๊ฒ์
๋๋ค.
3. HBASE์์ ๋ฐ์ดํฐ ์ฝ๊ธฐ
hbase:meta์ ๋ชจ๋ ์ ๋ณด๊ฐ ์ด๋ฏธ ํด๋ผ์ด์ธํธ์ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด(2๋ฒ ์ฐธ์กฐ), ์์ฒญ์ ํ์ํ ํค๊ฐ ์ ์ฅ๋ RS๋ก ์ง์ ์ ์ก๋ฉ๋๋ค. ๋จผ์ , MemCache์์ ๊ฒ์์ด ์ํ๋ฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์๋์ง ์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ๊ฒ์์ BlockCache ๋ฒํผ์์ ์ํ๋๊ณ , ํ์ํ ๊ฒฝ์ฐ HFiles์์๋ ์ํ๋ฉ๋๋ค. ํ์ผ์์ ๋ฐ์ดํฐ๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ํด๋น ๋ฐ์ดํฐ๋ BlockCache์ ์ ์ฅ๋๊ณ ๋ค์ ์์ฒญ ์ ๋ ๋น ๋ฅด๊ฒ ๋ฐํ๋ฉ๋๋ค. HFile์์์ ๊ฒ์์ Bloom ํํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋น๊ต์ ๋น ๋ฆ ๋๋ค. ์ฆ, ์ ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ํด๋น ํ์ผ์ ํ์ํ ํค๊ฐ ์๋์ง ์ฆ์ ํ๋ณํ๊ณ , ์์ผ๋ฉด ๋ค์ ํ์ผ๋ก ๋์ด๊ฐ๋๋ค.

RS๋ ์ธ ๊ฐ์ง ์์ค๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ฉด ์๋ต์ ์์ฑํฉ๋๋ค. ํนํ, ํด๋ผ์ด์ธํธ๊ฐ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์์ฒญํ ๊ฒฝ์ฐ, ๋ฐ๊ฒฌ๋ ๊ฐ์ฒด์ ์ฌ๋ฌ ๋ฒ์ ์ ํ ๋ฒ์ ์ ์กํ ์ ์์ต๋๋ค.
4. ๋ฐ์ดํฐ ์บ์ฑ
MemStore์ BlockCache ๋ฒํผ๋ ํ ๋น๋ ์จํ RS ๋ฉ๋ชจ๋ฆฌ์ ์ต๋ 80%๋ฅผ ์ฐจ์งํฉ๋๋ค(๋๋จธ์ง๋ RS ์๋น์ค ์์ ์ ์ํด ์์ฝ๋ฉ๋๋ค). ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ๋ชจ๋๊ฐ ํ๋ก์ธ์ค๊ฐ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ณ ์ฆ์ ์ฝ๋ ๊ฒ์ด๋ผ๋ฉด BlockCache๋ฅผ ์ค์ด๊ณ MemStore๋ฅผ ๋๋ฆฌ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค. ์๋ํ๋ฉด ์ฝ๊ธฐ์ฉ์ผ๋ก ์บ์์ ๋ฐ์ดํฐ๋ฅผ ์ธ ๋ ๋ฐ์ดํฐ๊ฐ ์บ์์ ๋๋ฌํ์ง ์์ผ๋ฏ๋ก BlockCache๊ฐ ๋ ์์ฃผ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. BlockCache ๋ฒํผ๋ LruBlockCache(ํญ์ ํ์ ์์น)์ BucketCache(์ผ๋ฐ์ ์ผ๋ก ํ ์ธ๋ถ ๋๋ SSD์ ์์น)์ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ง์ ์ฝ๊ธฐ ์์ฒญ์ด ์๊ณ LruBlockCache์ ๋ง์ง ์์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ํ๋ฐํ๊ฒ ์๋ํ๋ ๊ฒฝ์ฐ BucketCache๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋์์ ์ฝ๊ธฐ ์บ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ด ๊ธ๊ฒฉํ๊ฒ ํฅ์๋ ๊ฒ์ด๋ผ๊ณ ๊ธฐ๋ํด์๋ ์ ๋์ง๋ง 8๋ฒ ํญ๋ชฉ์์ ์ด์ ๋ํด ๋ค์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.

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 ๋ชจ๋๊ฐ ํ์ฑํ๋์ด ์๋ ๊ฒฝ์ฐ ์ด ์๊ณ๊ฐ์ ์ง๋๋ฉด ์ฑ๋ฅ์ด ๊ธ๊ฒฉํ ๋จ์ด์ง๊ธฐ ์์ํ๊ณ , ๋ ์ฝ๋์ ๋ฐ์ดํฐ ์์ด ๋ง์์๋ก ๋ฐํ์์ด ๋ ๊ธธ์ด์ง๋๋ค.

ํ
์คํธ๋ ๊ฐ์ ๋จธ์ , 8๊ฐ ์ฝ์ด, HBase ๋ฒ์ 2.0.0-cdh6.0.0-beta1์์ ์ํ๋์์ต๋๋ค.
MSLAB ๋ชจ๋๋ ์ ์ธ๋์ ์ด์ ์ธ๋์ ๋ฐ์ดํฐ๊ฐ ์์์ผ๋ก ์ธํด ๋ฐ์ํ๋ ํ ์กฐ๊ฐํ๋ฅผ ์ค์ด๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ ์ผ๋ก, MSLAB์ ํ์ฑํํ๋ฉด ๋ฐ์ดํฐ๊ฐ ๋น๊ต์ ์์ ์ (์ฒญํฌ)์ ๋ถ์ฐ๋์ด ๋ถ๋ถ์ ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์์ฒญ๋ ๋ฐ์ดํฐ ํจํท์ ์์ด ํ ๋น๋ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ๊ฒ ๋๋ฉด ์ฑ๋ฅ์ด ๊ธ๊ฒฉํ ์ ํ๋ฉ๋๋ค. ๋ฐ๋ฉด, ์ด ๋ชจ๋๋ฅผ ๋นํ์ฑํํ๋ ๊ฒ๋ ๋ฐ๋์งํ์ง ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ง์ค์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ธฐ๊ฐ ๋์ GC๋ก ์ธํด ์ค๋จ์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ข์ ํด๊ฒฐ์ฑ ์ ์ฝ๊ธฐ์ ๋์์ ์ฐ๊ธฐ๋ฅผ ํ์ฑํํ ๊ฒฝ์ฐ ์ ๋ณผ๋ฅจ์ ๋๋ฆฌ๋ ๊ฒ์ ๋๋ค. ๊ธฐ๋ก ํ MemStore๋ฅผ ๋์คํฌ๋ก ํ๋ฌ์ํ๋ flush ๋ช ๋ น์ ์คํํ๊ฑฐ๋ BulkLoad๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๋ํ๋ ๊ฒฝ์ฐ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ค๋ ์ ์ ์ ์ํ์ธ์. ์๋ ํ๋ MemStore์์ ๋ ํฐ(๊ทธ๋ฆฌ๊ณ ๋์ผํ ์์) ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ ๊ฒฝ์ฐ ์๋ ์ ํ๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค. ๊ทธ๋ฌ๋ ์ฒญํฌ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๋ฉด ์ฒ๋ฆฌ ์๊ฐ์ด ์ ์์ผ๋ก ๋์๊ฐ๋๋ค.

์ฒญํฌ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๋ ๊ฒ ์ธ์๋, ๋ฐ์ดํฐ๋ฅผ ์ง์ญ๋ณ๋ก ๋ถํ ํ๋ ๊ฒ(ํ
์ด๋ธ ๋ถํ )๋ ๋์์ด ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ ์ง์ญ์ ๋ค์ด์ค๋ ์์ฒญ์ด ์ค์ด๋ค๊ณ ์
์ ๋ค์ด๋ง๋๋ค๋ฉด ์๋ต ์๋๋ ์ํธํ๊ฒ ์ ์ง๋ฉ๋๋ค.
6. ํ ์ด๋ธ์ ์ง์ญ๋ณ๋ก ๋ถํ ํ๋ ์ ๋ต(์คํ๋ง)
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๊ฐ ์๋ํ๊ฒ ๋์ด ์ฌ์ค์ ๋ชจ๋ ์์ ์ด ๋ง๋น๋ฉ๋๋ค. ๋๊ท๋ชจ ์์ถ์ ์ค์ํ์ฌ ๋์ ๋ ๋งํ์ ์ ๊ฑฐํ๊ณ ์์ฐ์ฑ์ ํ๋ณตํ์ต๋๋ค.

ํ
์คํธ๋ 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๊ฐ์ ๋ฐ์ฌ๊ฐ ์์ต๋๋ค.

ํ
์คํธ๋ 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 ์์ (์ผ๋ฐ์ ์ผ๋ก ๋งค์ฐ ์์ธก ๊ฐ๋ฅํจ)์ ์ค์ํ์ง ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.

ํ์ง๋ง ํํฐ์
์๋ฅผ ๋๋ ธ์ ๋ ์ฑ๋ฅ์ด ์ ํ๋๋ค๋ ์ฌ์ค์ ๋ค์ ์์์น ๋ชปํ ์ผ์
๋๋ค(BulkLoad์์ ํํฐ์
์๋ฅผ ๋๋ฆฌ๋ฉด ๊ธ์ ์ ์ธ ํจ๊ณผ๊ฐ ๋ํ๋๋ ๊ฒ์ ์ด๋ฏธ ํ์ธํ์ต๋๋ค). ํ์ง๋ง ์ดํดํ ๋งํ ์ผ์
๋๋ค. ์ฒซ์งธ, ์ฒ๋ฆฌ๋ฅผ ์ํด์๋ ํ๋๊ฐ ์๋ 30๊ฐ ์ง์ญ์ ์์ฒญ์ ๋ณด๋ด์ผ ํ๋๋ฐ, ๋ฐ์ดํฐ ์์ด ๊ทธ๋ ๊ฒ ๋ง์ง ์์ ์ด๋ก ์ธํ ์ด์ ์ด ์์ต๋๋ค. ๋์งธ, ์ด ์คํ ์๊ฐ์ ๊ฐ์ฅ ๋๋ฆฐ RS์ ์ํด ๊ฒฐ์ ๋๋ฉฐ, DataNode์ ์๊ฐ RS์ ์๋ณด๋ค ์ ๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ์ง์ญ์ ์ง์ญ์ฑ์ด ์ ํ ์์ต๋๋ค. ๊ทธ๋ผ, ์์ XNUMX๊ฐ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.

์ด์ Get ๋ธ๋ก์ ์คํํ ๊ฒฐ๊ณผ๋ฅผ ํ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.

ํํฐ์
๊ฐ์์ ์๋ฏธ๊ฐ ์ฌ๋ผ์ก๋๋ฐ, ์ด๋ ๋ฐ์ดํฐ๊ฐ ์ ์บ์๋๊ณ ์ฝ๊ธฐ ์บ์๊ฐ ํต๊ณ์ ์ผ๋ก ๊ฐ์ฅ ์ค์ํ ๋งค๊ฐ๋ณ์์ด๊ธฐ ๋๋ฌธ์ผ ์ ์์ต๋๋ค. ๋น์ฐํ ์์ฒญ์ ๋ฉ์์ง ์๋ฅผ ๋๋ฆฌ๋ ๊ฒ๋ ์ฑ๋ฅ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์ต์์ ๊ฒฐ๊ณผ:

๋ง์ง๋ง์ผ๋ก get์ ๋จผ์ ์ํํ ๋ค์ put์ ์ํํ ๋ธ๋ก์ ๋ชจ๋ธ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.

์ฌ๊ธฐ์๋ ๋ชจ๋ ๋งค๊ฐ๋ณ์๊ฐ ์ค์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฆฌ๋๋ค์ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.

9. ๋ถํ ํ ์คํธ
๊ธ์์, ๋ง์ง๋ง์ผ๋ก, ์ด๋ ์ ๋ ๊ด์ฐฎ์ ๋ก๋๋ฅผ ์์ํ ๊ฒ๋๋ค. ํ์ง๋ง ๋น๊ตํ ๊ฒ์ด ์์ผ๋ฉด ํญ์ ๋ ์ฌ๋ฐ์ฃ . Cassandra์ ํต์ฌ ๊ฐ๋ฐ์ฌ์ธ DataStax์ ์น์ฌ์ดํธ์๋ HBase ๋ฒ์ 0.98.6-1์ ํฌํจํ ์ฌ๋ฌ NoSQL ์คํ ๋ฆฌ์ง์ NT์ ๋๋ค. ๋ค์ด๋ก๋๋ 40๊ฐ์ ์ค๋ ๋, 100๋ฐ์ดํธ์ ๋ฐ์ดํฐ ํฌ๊ธฐ, SSD ๋์คํฌ๋ก ์ํ๋์์ต๋๋ค. ์ฝ๊ธฐ-์์ -์ฐ๊ธฐ ์์ ์ ํ ์คํธํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.

์ ๊ฐ ์๋ ํ, ์ฝ๊ธฐ๋ 100๊ฐ ๋ ์ฝ๋ ๋ธ๋ก ๋จ์๋ก ์ด๋ฃจ์ด์ก์ผ๋ฉฐ, 16๊ฐ HBase ๋
ธ๋์ ๋ํด DataStax ํ
์คํธ๋ ์ด๋น 10๊ฐ์ ์์
์ฑ๋ฅ์ ๋ณด์์ต๋๋ค.
๋คํํ๋ ์ ํฌ ํด๋ฌ์คํฐ์๋ 16๊ฐ์ ๋ ธ๋๊ฐ ์์ง๋ง, ๊ฐ๊ฐ์ 64๊ฐ์ ์ฝ์ด(์ค๋ ๋)๊ฐ ์๋ค๋ ๊ฒ์ "์ด์ด ์ข์ง" ์์ ๋ฐ๋ฉด, DataStax ํ ์คํธ์์๋ 4๊ฐ๋ง ์์ต๋๋ค. ๋ฐ๋ฉด์ SSD ๋์คํฌ๊ฐ ์๊ณ , ์ ํฌ๋ HDD์ ์ต์ ๋ฒ์ ์ HBase๋ฅผ ์ฌ์ฉํ๋๋ฐ, ๋ก๋ ์ค CPU ์ฌ์ฉ๋ฅ ์ ์ค์ง์ ์ผ๋ก ํฌ๊ฒ ์ฆ๊ฐํ์ง ์์์ต๋๋ค(์๊ฐ์ ์ผ๋ก 5-10%). ํ์ง๋ง ์ด ๊ตฌ์ฑ์ผ๋ก ์คํํด ๋ณด๊ฒ ์ต๋๋ค. ๊ธฐ๋ณธ ํ ์ด๋ธ ์ค์ ์ 0~50๋ง ๊ฐ์ ํค ๋ฒ์์์ ๋ฌด์์๋ก ์ฝ๊ธฐ๊ฐ ์ํ๋๋ค๋ ๊ฒ์ ๋๋ค(์ฆ, ๋งค๋ฒ ์๋ก์ด ํค ํ๋์ฉ ์ฝ์). ์ด ํ ์ด๋ธ์๋ 50๊ฐ์ ํํฐ์ ์ผ๋ก ๋๋ 64๋ง ๊ฐ์ ๋ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ํค๋ crc32๋ฅผ ์ฌ์ฉํ์ฌ ํด์๋ฉ๋๋ค. ํ ์ด๋ธ ์ค์ ์ ๊ธฐ๋ณธ๊ฐ์ด๋ฉฐ, MSLAB์ด ํ์ฑํ๋์ด ์์ต๋๋ค. 40๊ฐ์ ์ค๋ ๋๋ฅผ ์์ํ๊ณ , ๊ฐ ์ค๋ ๋๋ 100๊ฐ์ ๋ฌด์์ ํค ์ธํธ๋ฅผ ์ฝ๊ณ ์์ฑ๋ 100๋ฐ์ดํธ๋ฅผ ์ด๋ฌํ ํค์ ์ฆ์ ๋ค์ ์๋๋ค.

์คํ ๋: 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๋ฅผ ์ฆ์ ์๋๋ค.

์คํ ๋: 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๋ง ๊ฐ์ ๋ธ๋ก์์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ ๋๋ถ์ ๋๋ค.

์คํ ๋: 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
