์๋
ํ๋ธ๋ฅด! ์ง๊ธ OTUS์์ ์๋ก์ด ๊ฐ์ข ์คํธ๋ฆผ ๋ฑ๋ก์ด ์งํ ์ค์
๋๋ค.
๋งค์ผ XNUMX์ต ๋ช ์ด ๋๋ ์ฌ๋๋ค์ด Twitter๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ์ธ์์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์์๋ณด๊ณ ์ด์ ๋ํด ํ ๋ก ํฉ๋๋ค. ๊ฐ ํธ์๊ณผ ๊ธฐํ ์ฌ์ฉ์ ์์ ์ Twitter ๋ด์์ ๋ด๋ถ ๋ฐ์ดํฐ ๋ถ์์ ์ฌ์ฉํ ์ ์๋ ์ด๋ฒคํธ๋ฅผ ์์ฑํฉ๋๋ค. ์๋ฐฑ ๋ช ์ ์ง์์ด ์ด ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ณ ์๊ฐํํ๋ฉฐ, ์ด๋ค์ ๊ฒฝํ์ ๊ฐ์ ํ๋ ๊ฒ์ด ํธ์ํฐ ๋ฐ์ดํฐ ํ๋ซํผ ํ์ ์ต์ฐ์ ๊ณผ์ ์ ๋๋ค.
์ฐ๋ฆฌ๋ ๊ด๋ฒ์ํ ๊ธฐ์ ์ ๋ฅ๋ ฅ์ ๊ฐ์ถ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์๊ณ ์ ๋๋ก ์๋ํ๋ SQL ๊ธฐ๋ฐ ๋ถ์ ๋ฐ ์๊ฐํ ๋๊ตฌ์ ์ก์ธ์คํ ์ ์์ด์ผ ํ๋ค๊ณ ๋ฏฟ์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ๋ถ์๊ฐ ๋ฐ ์ ํ ๊ด๋ฆฌ์๋ฅผ ํฌํจํ์ฌ ๊ธฐ์ ์ด ๋ถ์กฑํ ์์ ํ ์๋ก์ด ์ฌ์ฉ์ ๊ทธ๋ฃน์ด ๋ฐ์ดํฐ์์ ํต์ฐฐ๋ ฅ์ ์ถ์ถํ์ฌ Twitter์ ๊ธฐ๋ฅ์ ๋ ์ ์ดํดํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ํธ์ํฐ์์ ๋ฐ์ดํฐ ๋ถ์์ ๋ฏผ์ฃผํํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
๋ด๋ถ ๋ฐ์ดํฐ ๋ถ์์ ์ํ ๋๊ตฌ์ ๊ธฐ๋ฅ์ด ํฅ์๋จ์ ๋ฐ๋ผ Twitter ์๋น์ค๋ ๊ฐ์ ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ๊ฐ์ ์ ์ฌ์ง๊ฐ ์์ต๋๋ค. Scalding๊ณผ ๊ฐ์ ํ์ฌ ๋๊ตฌ์๋ ํ๋ก๊ทธ๋๋ฐ ๊ฒฝํ์ด ํ์ํฉ๋๋ค. Presto ๋ฐ Vertica์ ๊ฐ์ SQL ๊ธฐ๋ฐ ๋ถ์ ๋๊ตฌ์๋ ๋๊ท๋ชจ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ํ ๋ฐ์ดํฐ์ ์ง์์ ์ผ๋ก ์ก์ธ์คํ์ง ์๊ณ ์ฌ๋ฌ ์์คํ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐฐํฌํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์๋
์ ์ฐ๋ฆฌ๋ ๋ฐํํ์ต๋๋ค.
BigQuery : SQL ์์ง ๊ธฐ๋ฐ์ ๊ธฐ์ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋๋ ๋ฉ , ์๋, ๋จ์์ฑ ๋ฐ ๋์ฒ ๋ฅ๋ ฅ์ผ๋ก ์ ๋ช ํฉ๋๋ค.๊ธฐ๊ณ ํ์ต .๋ฐ์ดํฐ ์คํ๋์ค: Google Docs์ ๊ฐ์ ๊ณต๋์์ ๊ธฐ๋ฅ์ ๊ฐ์ถ ๋น ๋ฐ์ดํฐ ์๊ฐํ ๋๊ตฌ์ ๋๋ค.
์ด ๊ธฐ์ฌ์์๋ ์ด๋ฌํ ๋๊ตฌ์ ๋ํ ์ฐ๋ฆฌ์ ๊ฒฝํ, ์ฆ ์ฐ๋ฆฌ๊ฐ ์ํํ ์์ , ๋ฐฐ์ด ์์ , ๋ค์์ ์ํํ ์์ ์ ๋ํด ์์๋ด ๋๋ค. ์ด์ ์ผ๊ด ๋ฐ ๋ํํ ๋ถ์์ ์ค์ ์ ๋ ๊ฒ์ ๋๋ค. ์ค์๊ฐ ๋ถ์์ ๋ค์ ๊ธ์์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค.
ํธ์ํฐ์ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ์ญ์ฌ
BigQuery์ ๋ํด ์์๋ณด๊ธฐ ์ ์ Twitter์์ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ์ญ์ฌ๋ฅผ ๊ฐ๋ตํ๊ฒ ๋ค์ ์ค๋ช ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. 2011๋ ์๋ Vertica์ Hadoop์์ Twitter ๋ฐ์ดํฐ ๋ถ์์ด ์ํ๋์์ต๋๋ค. MapReduce Hadoop ์์ ์ ์์ฑํ๊ธฐ ์ํด Pig๋ฅผ ์ฌ์ฉํ์ต๋๋ค. 2012๋ ์ ์ฐ๋ฆฌ๋ ๋ณต์กํ ํ์ดํ๋ผ์ธ์ ์์ฑํ๋ ๊ธฐ๋ฅ๊ณผ ํ ์คํธ ์ฉ์ด์ฑ ๋ฑ์ ์ด์ ์ ๊ฐ์ถ Scala API๋ฅผ ๊ฐ์ถ Scalding์ผ๋ก Pig๋ฅผ ๋์ฒดํ์ต๋๋ค. ๊ทธ๋ฌ๋ SQL ์์ ์ ๋ ์ต์ํ ๋ง์ ๋ฐ์ดํฐ ๋ถ์๊ฐ์ ์ ํ ๊ด๋ฆฌ์์๊ฒ๋ ์๋นํ ๊ฐํ๋ฅธ ํ์ต ๊ณก์ ์ด์์ต๋๋ค. 2016๋ ๊ฒฝ์ ์ฐ๋ฆฌ๋ Presto๋ฅผ Hadoop ๋ฐ์ดํฐ์ฉ SQL ํ๋ฐํธ ์๋๋ก ์ฌ์ฉํ๊ธฐ ์์ํ์ต๋๋ค. Spark๋ ์์ ๋ฐ์ดํฐ ๊ณผํ ๋ฐ ๊ธฐ๊ณ ํ์ต์ ์ ํฉํ Python ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ต๋๋ค.
2018๋ ๋ถํฐ ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ ๋ถ์ ๋ฐ ์๊ฐํ๋ฅผ ์ํด ๋ค์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด ์์ต๋๋ค.
- ์์ฐ๋ผ์ธ์ ํํ
- ์์ ๋ฐ์ดํฐ ๋ถ์ ๋ฐ ๊ธฐ๊ณ ํ์ต์ ์ํ Scalding ๋ฐ Spark
- ์์ ๋ฐ ๋ํํ SQL ๋ถ์์ ์ํ Vertica ๋ฐ Presto
- ์๊ณ์ด ์งํ์ ๋ํ ๋ฎ์ ๋ํํ, ํ์์ , ์งง์ ๋๊ธฐ ์๊ฐ ์ก์ธ์ค๋ฅผ ์ํ Druid
- ๋ฐ์ดํฐ ์๊ฐํ๋ฅผ ์ํ Tableau, Zeppelin ๋ฐ Pivot
์ฐ๋ฆฌ๋ ์ด๋ฌํ ๋๊ตฌ๊ฐ ๋งค์ฐ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง ์ด๋ฌํ ๊ธฐ๋ฅ์ ํธ์ํฐ์ ๋ ๋ง์ ์ฒญ์ค์๊ฒ ์ ๊ณตํ๋ ๋ฐ ์ด๋ ค์์ด ์๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. Google Cloud๋ก ํ๋ซํผ์ ํ์ฅํจ์ผ๋ก์จ ํธ์ํฐ ์ ์ฒด์ ๋ํ ๋ถ์ ๋๊ตฌ๋ฅผ ๋จ์ํํ๋ ๋ฐ ์ค์ ์ ๋๊ณ ์์ต๋๋ค.
Google์ BigQuery ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค
Twitter์ ์ฌ๋ฌ ํ์ ์ด๋ฏธ ์ผ๋ถ ํ๋ก๋์ ํ์ดํ๋ผ์ธ์ BigQuery๋ฅผ ํฌํจํ์ต๋๋ค. ๊ทธ๋ค์ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ์ฐ๋ฆฌ๋ ๋ชจ๋ Twitter ์ฌ์ฉ ์ฌ๋ก์ ๋ํ BigQuery์ ๊ฐ๋ฅ์ฑ์ ํ๊ฐํ๊ธฐ ์์ํ์ต๋๋ค. ์ฐ๋ฆฌ์ ๋ชฉํ๋ BigQuery๋ฅผ ํ์ฌ ์ ์ฒด์ ์ ๊ณตํ๊ณ ์ด๋ฅผ ๋ฐ์ดํฐ ํ๋ซํผ ํดํท ๋ด์์ ํ์คํํ๊ณ ์ง์ํ๋ ๊ฒ์ด์์ต๋๋ค. ์ด๊ฒ์ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๋ก ์ด๋ ค์ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ์ ์ผ๋ก ์์ ํ๊ณ , ์ ์ฌ์ ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ์ง์ํ๊ณ , ์ ์ ํ ์ก์ธ์ค ์ ์ด๋ฅผ ๋ณด์ฅํ๊ณ , ๊ณ ๊ฐ ๊ฐ์ธ์ ๋ณด ๋ณดํธ๋ฅผ ๋ณด์ฅํ ์ ์๋ ์ธํ๋ผ๋ฅผ ๊ฐ๋ฐํด์ผ ํ์ต๋๋ค. ๋ํ ํ์ด BigQuery๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ๋ฆฌ์์ค ํ ๋น, ๋ชจ๋ํฐ๋ง, ์ง๋ถ ๊ฑฐ์ ์ ์ํ ์์คํ ์ ๋ง๋ค์ด์ผ ํ์ต๋๋ค.
2018๋ 250์์ ์ฐ๋ฆฌ๋ BigQuery ๋ฐ ๋ฐ์ดํฐ ์คํ๋์ค์ ์ ์ฌ์ ์ํ ๋ฆด๋ฆฌ์ค๋ฅผ ์ถ์ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ฐ์ธ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฆฌํ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์คํ๋ ๋์ํธ ์ค ์ผ๋ถ๋ฅผ Twitter ์ง์์๊ฒ ์ ๊ณตํ์ต๋๋ค. BigQuery๋ ์์ง๋์ด๋ง, ์ฌ๋ฌด, ๋ง์ผํ ๋ฑ ๋ค์ํ ํ์ 8๋ช ์ด์์ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ์ต๋๋ค. ๊ฐ์ฅ ์ต๊ทผ์๋ ์์ฝ๋ ์์ฒญ์ ์ ์ธํ๊ณ ์ฝ 100๊ฐ์ ์์ฒญ์ ์คํํ์ฌ ๋งค์ ์ฝ XNUMXPB๋ฅผ ์ฒ๋ฆฌํ์ต๋๋ค. ๋งค์ฐ ๊ธ์ ์ ์ธ ํผ๋๋ฐฑ์ ๋ฐ์ ํ ์ฐ๋ฆฌ๋ ์์ผ๋ก ๋์๊ฐ BigQuery๋ฅผ Twitter์์ ๋ฐ์ดํฐ์ ์ํธ์์ฉํ๊ธฐ ์ํ ๊ธฐ๋ณธ ๋ฆฌ์์ค๋ก ์ ๊ณตํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
๋ค์์ Google BigQuery ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ์์ ์์ค ์ํคํ ์ฒ์ ๋ํ ๋ค์ด์ด๊ทธ๋จ์ ๋๋ค.
๋ด๋ถ Cloud Replicator ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์จํ๋ ๋ฏธ์ค Hadoop ํด๋ฌ์คํฐ์์ Google Cloud Storage(GCS)๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ Apache Airflow๋ฅผ ์ฌ์ฉํ์ฌ "
๋ค์ ์น์ ์์๋ ์ฌ์ฉ ํธ์์ฑ, ์ฑ๋ฅ, ๋ฐ์ดํฐ ๊ด๋ฆฌ, ์์คํ ์ํ ๋ฐ ๋น์ฉ์ ๋ํ ์ ๊ทผ ๋ฐฉ์๊ณผ ์ ๋ฌธ ์ง์์ ๋ํด ๋ ผ์ํฉ๋๋ค.
์ฌ์ฉ ํธ์์ฑ
์ํํธ์จ์ด๋ฅผ ์ค์นํ ํ์๊ฐ ์๊ณ ์ง๊ด์ ์ธ ์น ์ธํฐํ์ด์ค๋ฅผ ํตํด BigQuery์ ์ก์ธ์คํ ์ ์์ผ๋ฏ๋ก ์ฌ์ฉ์๊ฐ BigQuery๋ฅผ ์ฝ๊ฒ ์์ํ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ์๋ ํ๋ก์ ํธ, ๋ฐ์ดํฐ์ธํธ, ํ ์ด๋ธ๊ณผ ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ํฌํจํ์ฌ ์ผ๋ถ GCP ๊ธฐ๋ฅ๊ณผ ๊ฐ๋ ์ ์ต์ํด์ ธ์ผ ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ฉ์๊ฐ ์์ํ๋ ๋ฐ ๋์์ด ๋๋ ํํ ๋ฆฌ์ผ๊ณผ ํํ ๋ฆฌ์ผ์ ๊ฐ๋ฐํ์ต๋๋ค. ๊ธฐ๋ณธ ์ฌํญ์ ์ดํดํ๋ฉด ์ฌ์ฉ์๋ ์ฝ๊ฒ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํ์ํ๊ณ , ์คํค๋ง์ ํ ์ด๋ธ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ณ , ๊ฐ๋จํ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ , ๋ฐ์ดํฐ ์คํ๋์ค์์ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํํ ์ ์์ต๋๋ค.
BigQuery์ ๋ฐ์ดํฐ ์
๋ ฅ์ ๋ํ ์ฐ๋ฆฌ์ ๋ชฉํ๋ ํ ๋ฒ์ ํด๋ฆญ์ผ๋ก HDFS ๋๋ GCS ๋ฐ์ดํฐ์ธํธ๋ฅผ ์ํํ๊ฒ ๋ก๋ํ๋ ๊ฒ์ด์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ณ ๋ คํ๋ค
๋ฐ์ดํฐ๋ฅผ BigQuery๋ก ๋ณํํ๊ธฐ ์ํด ์ฌ์ฉ์๋ ์์ฝ๋ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ SQL ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ๋ง๋ญ๋๋ค. ์ข
์์ฑ์ด ์๋ ๋ณต์กํ ๋ค๋จ๊ณ ํ์ดํ๋ผ์ธ์ ๊ฒฝ์ฐ ์์ฒด Airflow ํ๋ ์์ํฌ ๋๋ Cloud Composer๋ฅผ ์ฌ์ฉํ ๊ณํ์
๋๋ค.
ะัะพะธะทะฒะพะดะธัะตะปัะฝะพััั
BigQuery๋ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฒ์ฉ SQL ์ฟผ๋ฆฌ๋ฅผ ์ํด ์ค๊ณ๋์์ต๋๋ค. ํธ๋์ญ์
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์ํ ๋ฎ์ ๋๊ธฐ ์๊ฐ, ๋์ ์ฒ๋ฆฌ๋ ์ฟผ๋ฆฌ ๋๋ ๋ค์์์ ๊ตฌํ๋๋ ๋ฎ์ ๋๊ธฐ ์๊ฐ ์๊ณ์ด ๋ถ์์ ์ํ ๊ฒ์ด ์๋๋๋ค.
๊ฐ๊ฐ ์ฝ 800TB์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ 1๊ฐ ์ด์์ ์ฟผ๋ฆฌ๋ฅผ ๋ถ์ํ ๊ฒฐ๊ณผ ํ๊ท ์คํ ์๊ฐ์ 30์ด์ธ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ํ ๋ค์ํ ํ๋ก์ ํธ์ ์์ ์์ ์ฌ๋กฏ์ ์ฌ์ฉํ๋ ๋ฐ ์ฑ๋ฅ์ด ํฌ๊ฒ ์ข์ฐ๋๋ค๋ ๊ฒ์ ๋ฐฐ์ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ๋ก๋์ ์ฌ์ฉ ์ฌ๋ก ๋ฐ ๋ํํ ๋ถ์์ ๋ํ ์ฑ๋ฅ์ ์ ์งํ๊ธฐ ์ํด ํ๋ก๋์ ๋ฐ ์์ ์ฌ๋กฏ ์์ฝ์ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํด์ผ ํ์ต๋๋ค. ์ด๋ ์ฌ๋กฏ ์์ฝ ๋ฐ ํ๋ก์ ํธ ๊ณ์ธต ๊ตฌ์กฐ ์ค๊ณ์ ํฐ ์ํฅ์ ๋ฏธ์ณค์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋ฒ์ญ์ ๋ ๋ฒ์งธ ๋ถ๋ถ์์ ์์ผ๋ก ๋ฉฐ์น ๋์ ๋ฐ์ดํฐ ๊ด๋ฆฌ, ๊ธฐ๋ฅ ๋ฐ ์์คํ
๋น์ฉ์ ๋ํด ์ด์ผ๊ธฐํ ๊ฒ์ด๋ฉฐ ์ด์ ๋ชจ๋ ์ฌ๋์ ์ด๋ํฉ๋๋ค.
๋ ์ฝ์ด๋ณด๊ธฐ:
๋ฐ์ดํฐ ๊ตฌ์ถ ๋๊ตฌ ๋๋ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ์ค๋ฌด๋์ ๊ณตํต์ Delta Lake ์์ธํ ์์๋ณด๊ธฐ: ์คํค๋ง ์ ์ฉ ๋ฐ ์งํ Apache Arrow๋ฅผ ์ฌ์ฉํ๋ Python์ ๊ณ ์ Apache Parquet
์ถ์ฒ : habr.com