hive_base
Last updated
Last updated
https://www.simplilearn.com/tutorials/hadoop-tutorial/hive
ํ๋ก ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ง ํ๋ ์์ํฌ๋ก, ๋น ๋ฅธ ์๋๋ก ์ฑ์ฅํ๋ ํ์ด์ค๋ถ์ ์์ ๋คํธ์ํฌ์์ ๋งค์ผ๊ฐ์ด ์์ฐ๋๋ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ํ์ตํ๊ธฐ ์ํด ๊ฐ๋ฐ๋์์ต๋๋ค.
ํ์ด๋ธ์์ ๋ ์ฝ๋ ๋จ์ ๊ฐฑ์ (record-level update), ์ฝ์ , ์ญ์ ๋ฅผ ํ ์ ์๊ธด ํ์ง๋ง ์ฟผ๋ฆฌ๋ก ์ ํ ์ด๋ธ์ ๋ง๋ค ์ ์๊ณ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ์ผ๋ก ๋จ๊ธธ ์๋ ์์ต๋๋ค.
SQL์ ๋น์ฆ๋์ค ์ธํ ๋ฆฌ์ ์ค ๋ถ์ผ์ ๋๊ตฌ์์ ์ฌ์ฉ๋๋ ๊ณตํต ์ธ์ด(lingua franca)์ด๊ธฐ ๋๋ฌธ์(์๋ฅผ ๋ค์ด ODBC๋ ๊ณตํต ์ธํฐํ์ด์ค) ํด๋น ๋ถ์ผ์ ์์ฉ ์ ํ๊ณผ ์ฝ๊ฒ ํตํฉํ ์ ์์ต๋๋ค.
Hive๋ ๋ฐ์ดํฐ์์ ์ข์ฐ๋์ง ์๋ ์ฟผ๋ฆฌ ์์ง์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ํน์ง์ด ์์ต๋๋ค.
๋์ ํ์ฅ์ฑ๊ณผ ๋ด๊ฒฐํจ์ฑ์ ๋ชฉํ๋ก ์ค๊ณ๋์์ต๋๋ค.
๋๊ท๋ชจ ๋ฐฐ์น ์ฒ๋ฆฌ๋ฅผ ๊พธ์คํ ์คํํฉ๋๋ค.
ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ๊ฑฐ๋ ์ด ์งํฅ ์คํ ๋ฆฌ์ง๋ฅผ ๋ง๋๋ ๋ฑ์ ๋ฌด๊ฑฐ์ด ์ฒ๋ฆฌ๋ ์๋ฌด๋๋ ์ฒ๋ฆฌ ์๊ฐ์ด ๊ธธ์ด์ง๋ ๊ฒฝํฅ์ด ์์ด์ Hive์์ ์คํํ๋๊ฒ์ด ์ ํฉํฉ๋๋ค.
๋ถ์ฐ์์คํ ์ ๋ํฅ์ ์์ํ ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ก ์ฎ๊ฒจ ๊ฐ๊ณ ์์ง๋ง, Hive๋ ์์ผ๋ก๋ ๋ฐ์ดํฐ์์ ์ข์ฐ๋์ง ์๋ ์ฟผ๋ฆฌ ์์ง์ผ๋ก ๊ณ์ ์ด์ฉ๋ ๊ฒ์ ๋๋ค.
ํ๊ณ
Hive๋ ์จ๋ผ์ธ ํธ๋์ญ์ ์ฒ๋ฆฌ(OLTP)์ฉ์ผ๋ก ์ค๊ณ๋์ง ์์์ผ๋ฉฐ ์จ๋ผ์ธ ๋ถ์ ์ฒ๋ฆฌ์๋ง ์ฌ์ฉ๋ฉ๋๋ค.
Hive๋ ๋ฐ์ดํฐ ๋ฎ์ด์ฐ๊ธฐ ๋๋ ํ์ ์ ์ง์ํ์ง๋ง ์ ๋ฐ์ดํธ ๋ฐ ์ญ์ ๋ ์ง์ํ์ง ์์ต๋๋ค.
Hive์์๋ ํ์ ์ฟผ๋ฆฌ๊ฐ ์ง์๋์ง ์์ต๋๋ค.
๋ก๊น
ํ์ด๋ธ์ ์๋ฌ ๋ก๊ทธ๋ ๋ก์ปฌ ํ์ผ์์คํ ์ ${java.io.tmpdir}/${user.name}/hive.log์์ ์ฐพ์ ์ ์์, ํ๊ฒฝ ์ค์ ๋ฌธ์ ๋ ๋ค๋ฅธ ์ ํ์ ์๋ฌ๋ฅผ ์ง๋จํ ๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
๋ก๊น ์ค์ ํ์ผ์ conf/hive-log4j.properties๊ณ , ๋ก๊ทธ ์์ค๊ณผ ๋ค๋ฅธ ๋ก๊น ๊ด๋ จ ์ค์ ์ ๋ณ๊ฒฝํ๊ณ ์ถ์ผ๋ฉด ์ด ํ์ผ์ ๋ณ๊ฒฝํ๋ฉด ๋ฉ๋๋ค.
https://www.oreilly.com/content/hadoop-what-you-need-to-know/
์ฐ๊ธฐ ์คํค๋ง(schema on write) - ์ ํต์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ ์ด๋ธ์ ์คํค๋ง๋ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ ์์ ์ ๊ฒ์ฆ๋ฉ๋๋ค. ๋ก๋ ์ค์ธ ๋ฐ์ดํฐ๊ฐ ์คํค๋ง์ ๋ถํฉ๋์ง ์์ผ๋ฉด ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ฑฐ๋ถํฉ๋๋ค. ๋ฐ์ด๋ฒํ ์ด์ค ์ฐ๋ ์์ ์ ๋ผ์ดํฐ์ ์คํค๋ง๋ฅผ ๊ฒ์ฆํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ฝ๊ธฐ ์คํค๋ง(schema on read) - ํ์ด๋ธ๋ ๋ก๋ ์์ ์ด ์๋๋ผ ์ฟผ๋ฆฌ๋ฅผ ์คํํ ๋ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ฆํฉ๋๋ค.
๋ ๋ฐฉ์์ ์๋ก ์์ถฉ ๊ด๊ณ(trade-off)๋ก ์ฝ๊ธฐ ์คํค๋ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด๋ถ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ํ์ฑํ๊ฑฐ๋ ๋์คํฌ์ ์ง๋ ฌํํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ์ ๋งค์ฐ ๋น ๋ฅธ ์๋๋ก ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ ์ ์์ต๋๋ค. ๋ก๋ ์กฐ์์ ์ํด์๋ ๋จ์ํ ํ์ผ์ ๋ณต์ฌํ๊ฑฐ๋ ์ด๋ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ฐ๊ธฐ ์คํค๋ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ปฌ๋ผ ๋จ์์ ๋ฐ์ดํฐ ์์ธ๊ณผ ์์ถ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋ ๋น ๋ฅด๊ฒ ์ฟผ๋ฆฌ๋ฅผ ์ํํ ์ ์์, ์๋์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ ์๊ฐ์ ๋ ์ค๋ ๊ฑธ๋ฆผ, ๋์ฑ์ด ์ฟผ๋ฆฌ๊ฐ ์ ํด์ง์ง ์์์ ๋ก๋ ์์ ์ ์คํค๋ง๋ฅผ ์ง์ ํ ์ ์๊ณ ์์ธ๋ ์ ์ฉํ ์ ์๋ ๊ฒฝ์ฐ๋ ๋น๋ฒํฉ๋๋ค.
์ค์ ํ ์ด๋ธ์ ๊ฐฑ์ ์ ์์ ์๋ก์ด ํ ์ด๋ธ์ ๋ง๋ค์ด ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋๋ค๋ ์ ์ด๋ฉฐ ๋๋์ ๋ฐ์ดํฐ์ ์ ๋์์ผ๋ก ์คํ๋๋ ๋ฐ์ดํฐ์จ์ดํ์ฐ์ง ์ ํ๋ฆฌ์ผ์ด์ ์์ ์๋ํ๋ ๋ฐฉ์
HDFS ๊ธฐ์กด ํ์ผ์ ๊ฐฑ์ ์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฝ์ , ๋ณ๊ฒฝ, ์ญ์ ๋ก ์ธํ ๊ฐฑ์ ๋ด์ญ์ ๋ณ๋์ ์์ ๋ธํ ํ์ผ์ ์ ์ฅ๋ฉ๋๋ค. ๋ธํ ํ์ผ์ ๋ฉํ์คํ ์ด์์ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์คํ๋๋ ๋งต๋ฆฌ๋์ค ์ก์ ์ํด ๊ธฐ์กด ํ ์ด๋ธ๊ณผ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณํฉ๋ฉ๋๋ค.
ํ ์ด๋ธ๊ณผ ํํฐ์ ์์ค์ ์ ๊ธ์ ์ง์ํ๋ฉฐ ์ ๊ธ์ ํน์ ํ๋ก์ธ์ค๊ฐ ํ ์ด๋ธ์ ์ฝ๋ ๋์ค์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ํ ์ด๋ธ์ ์ญ์ ํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์ ๊ธ์ ์ฃผํคํผ์ ์ํด ํฌ๋ช ํ๊ฒ ๊ด๋ฆฌ๋๋ฏ๋ก ์ฌ์ฉ์๊ฐ ์ง์ ์ฃผํคํผ๋ฅผ ์กฐ์ํ์ฌ ์ ๊ธ์ ์ ์ฉํ๊ฑฐ๋ ํด์ ํ ์๋ ์์ต๋๋ค.
ํ์ด๋ธ๋ ํน์ ํ ๊ฒฝ์ฐ์ ์ฟผ๋ฆฌ์ ์๋๋ฅผ ๋์ผ ์ ์๋ ์์ธ์ ์ง์ํ๋๋ฐ ์ฝคํจํธ(compact) ์์ธ๊ณผ ๋นํธ๋งต(bitmap) ์์ธ์ ์ง์ํฉ๋๋ค. ์์ธ์ ํ๋ฌ๊ทธ์ธ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฐฉ์์ ์์ธ๋ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ฝคํฉํธ ์์ธ์ ๊ฐ ๊ฐ์ ํ์ผ ์คํ์ ์ด ์๋ HDFS ๋ธ๋ก ๋๋ฒ๋ก ์ ์ฅํฉ๋๋ค. ๋์คํฌ ๊ณต๊ฐ์ ๋ง์ด ์ฐจ์ง ์์ผ๋ฉด์๋ ์ธ์ ํ ํ ์ฌ์ด์ ๋ถํฌ๋ ํน์ ์ปฌ๋ผ์ ๋ํ ๊ฐ์ ์์ธํ๋ ๋ฐ ๋งค์ฐ ํจ์จ์ ์ ๋๋ค.
๋นํธ๋งต ์์ธ์ ํน์ ๊ฐ์ด ์ถํํ๋ ํ์ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ธฐ ์ํด ์์ถ๋ ๋นํธ์ (bitset)์ ์ฌ์ฉํฉ๋๋ค.
https://docs.cloudera.com/HDPDocuments/HDP2/HDP-2.4.0/bk_performance_tuning/content/hive_perf_best_pract_design_data_stg_smartly.html
ํ ์ด๋ธ์ ํํฐ์ ์ผ๋ก ๊ตฌ์กฐํํ ์ ์์ต๋๋ค. ํํฐ์ ์ด๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๋ ์ง์ ๊ฐ์ ํํฐ์ ์ปฌ๋ผ์ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํฐ ๋จ์(coarse-grained)๋ก ๋ถํ ํ๋ ๋ฐฉ์์ด๋ฉฐ ํํฐ์ ์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ์ ์ผ๋ถ๋ฅผ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์ง์ํ ์ ์์ต๋๋ค.
ํ ์ด๋ธ๊ณผ ํํฐ์ ์ ํจ์จ์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ์ํด ๋ฐ์ดํฐ์ ์ถ๊ฐ๋ ๊ตฌ์กฐ์ธ ๋ฒํท์ผ๋ก ๋์ฑ ์ธ๋ถํ ๋ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ID๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฒํท์ ์์ฑํ๋ฉด ์ ์ฒด ์ฌ์ฉ์ ์ค์์ ๋ฌด์์ ๋ฐ์ดํฐ ์ํ์ ๋ฝ์ ์ฌ์ฉ์๊ฐ ์์ฑํ ์ฟผ๋ฆฌ๊ฐ ์ ๋๋ก ์คํ๋๋์ง ๋น ๋ฅด๊ฒ ํ๊ฐํ ์ ์์ต๋๋ค.
ํํฐ์
ํ ์ด๋ธ์ ๋ค์ค ์ฐจ์์ผ๋ก ํํฐ์ ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋จผ์ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ก๊ทธ๋ฅผ ํํฐ์ ํ๊ณ ๊ทธ๋ค์์ ์ง์ญ๋ณ๋ก ํจ์จ์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ์ํํ๊ธฐ ์ํด ๊ฐ ๋ ์ง๋ณ ํํฐ์ ์ ๊ตญ๊ฐ๋ณ ์๋ธํํฐ์ ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๋ฒํท
ํ ์ด๋ธ์ ๋ฒํท์ผ๋ก ๊ตฌ์กฐํํ๋ ์ด์ ๋ ๊ฐ์ง
๋งค์ฐ ํจ์จ์ ์ธ ์ฟผ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ, ๋ฒํทํ ์ ํ ์ด๋ธ์ ๋ํ ์ถ๊ฐ ๊ตฌ์กฐ๋ฅผ ๋ถ์ฌํ๊ณ , ํ์ด๋ธ๋ ์ด๋ค ์ฟผ๋ฆฌ๋ฅผ ์ํํ ๋ ์ด ์ถ๊ฐ ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค. ํนํ ๋์ผํ ์ปฌ๋ผ(์กฐ์ธํ ์ปฌ๋ผ)์ ๋ํ ๋ฒํท์ ๊ฐ์ง ๋ ํ ์ด๋ธ์ ์กฐ์ธํ ๋ ๋งต ์กฐ์ธ์ ๊ตฌํํ๋ฉด ๋งค์ฐ ํจ์จ์ ์ ๋๋ค.
ํจ์จ์ ์ธ ์ํ๋ง์ ์ ๋ฆฌ, ๋งค์ฐ ํฐ ๋ฐ์ดํฐ์ ์ ๋์์ผ๋ก ๊ฐ๋ฐํ๊ฑฐ๋ ๊ฐ์ ํ๋ ๊ณผ์ ์์ ๋ฐ์ดํฐ์ ์ ์ผ๋ถ๋ง์ ์ฟผ๋ฆฌ๋ฅผ ์ํํ ์ ์์ผ๋ฉด ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค.
https://www.oreilly.com/library/view/hadoop-application-architectures/9781491910313/ch01.html
Hive ์ธ๋ถ์์ Hive ๋ฉํ์คํ ์ด๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก HCatalog๋ผ๋ ๋ณ๋์ ํ๋ก์ ํธ๊ฐ ์์๋์๊ณ HCatalog๋ Hive์ ์ผ๋ถ์ด๋ฉฐ ๋ค๋ฅธ ๋๊ตฌ(์: Pig ๋ฐ MapReduce)๊ฐ Hive ๋ฉํ์คํ ์ด์ ํตํฉํ ์ ์๋๋ก ํฉ๋๋ค.
HCatalog๋ ํ๋ก์ด ๋ชจ๋ ๋๊ตฌ์์ ์ฌ์ฉํ ์ ์๋ ํ์ด๋ธ ๋ฉํ์คํ ์ด๋ฅผ ๋ง๋ค๊ณ , ๋งต๋ฆฌ๋์ค์ ํผ๊ทธ์ ์ปค๋ฅํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ๋ก ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด๋ธ ์จ์ดํ์ฐ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ ์ ์์ต๋๋ค. ํ์ด๋ธ๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ฌ์ฉ์๋ฅผ ์ํ ํ์ด๋ธ DDL๋ก ๋ฉํ์คํ ์ด๋ฅผ ๋ค๋ฃจ๋ ๋ช ๋ นํ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๊ณ ์๋ฆผ ์๋น์ค๋ ์ ๊ณตํฉ๋๋ค.
๋ฉํ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ๊ณต์ ํ๋ฉด ์ฌ์ฉ์๊ฐ ๋๊ตฌ ๊ฐ์ ์์ฝ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํผ๊ทธ๋ ๋งต๋ฆฌ๋์ค๋ก ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฆฌ๊ณ ๋๋ฉด ์ ๊ทํํ ๋ค์ ํ์ด๋ธ๋ก ๋ถ์ํฉ๋๋ค. ๋ถ์ ์ฟผ๋ฆฌ๋ฅผ ์ํด ํ์ด๋ธ๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ ETL ์ฒ๋ฆฌ๋ฅผ ํ๊ฑฐ๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๊ตฌ์ถํ ๋ ํผ๊ทธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
https://cwiki.apache.org/confluence/display/hive/hcatalog+usinghcat
HCatalog๋ SerDe(serializer-deserializer)๋ฅผ ์์ฑํ ์ ์๋ ๋ชจ๋ ํ์์ ํ์ผ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ๋ฅผ ์ง์ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก HCatalog๋ RCFile, CSV, JSON, SequenceFile ๋ฐ ORC ํ์ผ ํ์์ ์ง์ํฉ๋๋ค. ์ฌ์ฉ์ ์ง์ ํ์์ ์ฌ์ฉํ๋ ค๋ฉด InputFormat, OutputFormat ๋ฐ SerDe๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.
https://www.amazon.com/Programming-Hive-Warehouse-Language-Hadoop/dp/1449319335
https://www.amazon.com/Hadoop-Definitive-Guide-Tom-White/dp/1449311520