Dataproc Metastore ์๋น์ค๋ฅผ ๋ง๋ ํ์๋ ๋ค์ ์๋น์ค๋ฅผ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
- Dataproc ํด๋ฌ์คํฐ
- ์์ฒด ๊ด๋ฆฌํ Apache Hive ์ธ์คํด์ค, Apache Spark ์ธ์คํด์ค, Presto ํด๋ฌ์คํฐ
์ด๋ฌํ ์๋น์ค ์ค ํ๋๋ฅผ ์ฐ๊ฒฐํ๋ฉด ์ฟผ๋ฆฌ ์คํ ์ค Dataproc Metastore ์๋น์ค๋ฅผ Hive ๋ฉํ์คํ ์ด๋ก ์ฌ์ฉํฉ๋๋ค.
์์ํ๊ธฐ ์ ์
- ํ๋ก์ ํธ์์ Dataproc Metastore๋ฅผ ์ฌ์ฉ ์ค์ ํ์ธ์.
- Dataproc Metastore ์๋น์ค๋ฅผ ๋ง๋์ธ์.
- ํ๋ก์ ํธ๋ณ ๋คํธ์ํน ์๊ตฌ์ฌํญ์ ์์งํ์ธ์.
ํ์ํ ์ญํ
Dataproc Metastore ๋ฐ Dataproc ํด๋ฌ์คํฐ๋ฅผ ๋ง๋๋ ๋ฐ ํ์ํ ๊ถํ์ ์ป์ผ๋ ค๋ฉด ๊ด๋ฆฌ์์๊ฒ ๋ค์ IAM ์ญํ ์ ๋ถ์ฌํด ๋ฌ๋ผ๊ณ ์์ฒญํ์ธ์.
-
Dataproc Metastore ๋ฆฌ์์ค์ ์ ์ฒด ์ ์ด์๋ ๋ค์ ์ญํ ์ค ํ๋ ํ์:
-
์ฌ์ฉ์ ๊ณ์ ๋๋ ์๋น์ค ๊ณ์ ์ Dataproc Metastore ํธ์ง์ ์ญํ (
roles/metastore.editor
) -
์ฌ์ฉ์ ๊ณ์ ๋๋ ์๋น์ค ๊ณ์ ์ Dataproc Metastore ๊ด๋ฆฌ์ ์ญํ (
roles/metastore.admin
)
-
์ฌ์ฉ์ ๊ณ์ ๋๋ ์๋น์ค ๊ณ์ ์ Dataproc Metastore ํธ์ง์ ์ญํ (
- Dataproc ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค๋ ค๋ ๊ฒฝ์ฐ: Dataproc VM ์๋น์ค ๊ณ์ ์ ๋ํ
roles/dataproc.worker
- Hive ์จ์ดํ์ฐ์ค ๋๋ ํฐ๋ฆฌ์ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ถํ์ ๋ถ์ฌํ๋ ค๋ ๊ฒฝ์ฐ: Dataproc VM ์๋น์ค ๊ณ์ ์ ๋ํ
roles/storage.objectAdmin
์ญํ ๋ถ์ฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด๋ฌํ ์ฌ์ ์ ์๋ ์ญํ ์๋ Dataproc Metastore ๋ฐ Dataproc ํด๋ฌ์คํฐ๋ฅผ ๋ง๋๋ ๋ฐ ํ์ํ ๊ถํ์ด ํฌํจ๋์ด ์์ต๋๋ค. ํ์ํ ์ ํํ ๊ถํ์ ๋ณด๋ ค๋ฉด ํ์ ๊ถํ ์น์ ์ ํผ์น์ธ์.
ํ์ ๊ถํ
Dataproc Metastore ๋ฐ Dataproc ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๊ถํ์ด ํ์ํฉ๋๋ค.
-
Dataproc Metastore๋ฅผ ๋ง๋ค๋ ค๋ฉด ์ฌ์ฉ์ ๊ณ์ ๋๋ ์๋น์ค ๊ณ์ ์ ๋ํ
metastore.services.create
๊ถํ์ด ํ์ํฉ๋๋ค. -
Dataproc ํด๋ฌ์คํฐ๋ฅผ ๋ง๋๋ ๋ฐ ํ์ํ ๊ถํ: ์ฌ์ฉ์ ๊ณ์ ๋๋ ์๋น์ค ๊ณ์ ์
dataproc.clusters.create
-
Hive ์จ์ดํ์ฐ์ค ๋๋ ํฐ๋ฆฌ์ ์ก์ธ์คํ๋ ค๋ฉด ํ์ํ ๊ถํ: Dataproc VM ์๋น์ค ๊ณ์ ์
orgpolicy.policy.get1
,resourcemanager.projects.get
,resourcemanager.projects.list
,storage.objects.*
,storage.multipartUploads.*
์ปค์คํ ์ญํ ์ด๋ ๋ค๋ฅธ ์ฌ์ ์ ์๋ ์ญํ ์ ์ฌ์ฉํ์ฌ ์ด ๊ถํ์ ๋ถ์ฌ๋ฐ์ ์๋ ์์ต๋๋ค.
ํน์ Dataproc Metastore ์ญํ ๋ฐ ๊ถํ์ ๋ํ ์์ธ ์ค๋ช ์ IAM์ผ๋ก ์ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.Dataproc ํด๋ฌ์คํฐ
Dataproc์ ์ผ๊ด ์ฒ๋ฆฌ, ์ฟผ๋ฆฌ, ์คํธ๋ฆฌ๋ฐ, ๋จธ์ ๋ฌ๋์ ์คํ์์ค ๋ฐ์ดํฐ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ด๋ฆฌํ Apache Spark ๋ฐ Apache Hadoop ์๋น์ค์ ๋๋ค.
๊ณ ๋ ค์ฌํญ
Dataproc ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค๊ณ ์ฐ๊ฒฐํ๊ธฐ ์ Dataproc Metastore ์๋น์ค์ ์ฌ์ฉ๋๋ ์๋ํฌ์ธํธ ํ๋กํ ์ฝ์ ํ์ธํฉ๋๋ค. ์ด ํ๋กํ ์ฝ์ Hive Metastore ํด๋ผ์ด์ธํธ๊ฐ Dataproc Metastore์ ์ ์ฅ๋ ๋ฉํ๋ฐ์ดํฐ์ ์ก์ธ์คํ๋ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค. ์ด ์ต์ ์ ์๋น์ค์ ํตํฉ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์๋ ์ํฅ์ ์ค๋๋ค.
Apache Thrift
Apache Thrift ์๋ํฌ์ธํธ ํ๋กํ ์ฝ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ค์ ๋คํธ์ํฌ ์๊ตฌ์ฌํญ์ ๊ณ ๋ คํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Dataproc ํด๋ฌ์คํฐ ๋ฐ Dataproc Metastore ์๋น์ค๋ฅผ ๋์ผํ ๋คํธ์ํฌ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ๋ํ Dataproc ํด๋ฌ์คํฐ๋ Dataproc Metastore ์๋น์ค ๋คํธ์ํฌ์ ์๋ธ๋ท์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Dataproc ํด๋ฌ์คํฐ๊ฐ ๋คํธ์ํฌ์ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ํ๋ฉด ๊ณต์ ๋คํธ์ํฌ ๊ถํ์ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
Dataproc ํด๋ฌ์คํฐ๊ฐ Dataproc Metastore ์๋น์ค์ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ํ๋ ๊ฒฝ์ฐ Dataproc ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค๊ธฐ ์ ์ถ๊ฐ ๊ถํ์ ์ค์ ํด์ผ ํฉ๋๋ค.
gRPC
gRPC ์๋ํฌ์ธํธ ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์ ๋คํธ์ํฌ ์๊ตฌ์ฌํญ์ ๊ณ ๋ คํฉ๋๋ค.
gRPC ์๋ํฌ์ธํธ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ Dataproc Metastore๋ฅผ ๋ง๋ ํ์๋ ์ถ๊ฐ IAM ์ญํ ์ ๋ถ์ฌํด์ผ ํฉ๋๋ค.
Dataproc ๊ฐ์ธ ํด๋ฌ์คํฐ ์ธ์ฆ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Dataproc Metastore๊ฐ gRPC ์๋ํฌ์ธํธ ํ๋กํ ์ฝ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
Dataproc ํด๋ฌ์คํฐ๊ฐ Dataproc Metastore ์๋น์ค์ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ํ๋ ๊ฒฝ์ฐ Dataproc ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค๊ธฐ ์ ์ถ๊ฐ ๊ถํ์ ์ค์ ํด์ผ ํฉ๋๋ค.
ํด๋ฌ์คํฐ ๋ง๋ค๊ธฐ ๋ฐ Dataproc Metastore ์ฐ๊ฒฐ
๋ค์ ์๋ด์์๋ Dataproc ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ Dataproc Metastore ์๋น์ค์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. ์ด๋ฌํ ์๋ด์์๋ Dataproc Metastore ์๋น์ค๋ฅผ ์ด๋ฏธ ๋ง๋ค์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
- Dataproc ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ํํ Dataproc ์ด๋ฏธ์ง๊ฐ Dataproc Metastore๋ฅผ ๋ง๋ค ๋ ์ ํํ Hive Metastore ๋ฒ์ ๊ณผ ํธํ๋๋์ง ํ์ธํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ Dataproc ์ด๋ฏธ์ง ๋ฒ์ ๋ชฉ๋ก์ ์ฐธ์กฐํ์ธ์.
๋คํธ์ํฌ ์ฐ๊ฒฐ์ ์ต์ ํํ๋ ค๋ฉด Dataproc Metastore ์๋น์ค์ ๋์ผํ ๋ฆฌ์ ์ Dataproc ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ญ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ Dataproc ํด๋ฌ์คํฐ ๋ง๋ค๊ธฐ ํ์ด์ง๋ฅผ ์ฝ๋๋ค.
ํด๋ฌ์คํฐ ๋ง๋ค๊ธฐ๋ฅผ ์ฝ๋๋ค.
ํด๋ฌ์คํฐ ์ด๋ฆ ํ๋์ ํด๋ฌ์คํฐ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
๋ฆฌ์ ๋ฐ ์์ญ ๋ฉ๋ด์์ Dataproc Metastore ์๋น์ค๋ฅผ ๋ง๋ ๋์ผํ ๋ฆฌ์ ์ ์ ํํฉ๋๋ค. ๋ชจ๋ ์์ญ์ ์ ํํ ์ ์์ต๋๋ค.
ํด๋ฌ์คํฐ ๋ง์ถค์ค์ ํญ์ ํด๋ฆญํฉ๋๋ค.
๋คํธ์ํฌ ๊ตฌ์ฑ ์น์ ์์ Dataproc Metastore ์๋น์ค๋ฅผ ๋ง๋ ๋์ผํ ๋คํธ์ํฌ๋ฅผ ์ ํํฉ๋๋ค.
Dataproc Metastore ์น์ ์์ ์ฐ๊ฒฐํ๋ ค๋ Dataproc Metastore ์๋น์ค๋ฅผ ์ ํํฉ๋๋ค. ์์ง ์๋น์ค๋ฅผ ๋ง๋ค์ง ์์ ๊ฒฝ์ฐ ์ ์๋น์ค ๋ง๋ค๊ธฐ๋ฅผ ์ ํํฉ๋๋ค.
์ ํ์ฌํญ: Dataproc Metastore ์๋น์ค์ gRPC ์๋ํฌ์ธํธ ํ๋กํ ์ฝ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ:
- ๋ณด์ ๊ด๋ฆฌ ํญ์ ํด๋ฆญํฉ๋๋ค.
- ํ๋ก์ ํธ ์ก์ธ์ค ์น์ ์์ ์ด ํด๋ฌ์คํฐ์ ํด๋ผ์ฐ๋ ํ๋ซํผ ๋ฒ์ ์ฌ์ฉ ์ค์ ์ ์ ํํฉ๋๋ค.
ํ์์ ๋ฐ๋ผ ๋จ์ ์๋น์ค ์ต์ ์ ๊ตฌ์ฑํฉ๋๋ค.
๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ์ฌ ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ญ๋๋ค.
์ ํด๋ฌ์คํฐ๊ฐ ํด๋ฌ์คํฐ ๋ชฉ๋ก์ ํ์๋ฉ๋๋ค. ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ฉํ ์ค๋น๊ฐ ๋ ๋๊น์ง ํด๋ฌ์คํฐ ์ํ๊ฐ ํ๋ก๋น์ ๋์ผ๋ก ๋์ด๋ฉ๋๋ค. ์ฌ์ฉํ ์ค๋น๊ฐ ๋๋ฉด ์ํ๊ฐ ์คํ ์ค์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
gcloud CLI
ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค๊ณ Dataproc Metastore๋ฅผ ์ฐ๊ฒฐํ๋ ค๋ฉด ๋ค์ gcloud dataproc clusters create
๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud dataproc clusters create CLUSTER_NAME \ --dataproc-metastore=projects/PROJECT_ID/locations/LOCATION/services/SERVICE \ --region=LOCATION \ --scopes=SCOPES
๋ค์์ ๋ฐ๊ฟ๋๋ค.
CLUSTER_NAME
: ์ Dataproc ํด๋ฌ์คํฐ ์ด๋ฆ์ ๋๋ค.PROJECT_ID
: Dataproc Metastore ์๋น์ค๋ฅผ ๋ง๋ ํ๋ก์ ํธ์ ํ๋ก์ ํธ ID์ ๋๋ค.LOCATION
: Dataproc Metastore ์๋น์ค๋ฅผ ๋ง๋ ๋์ผํ ๋ฆฌ์ ์ ๋๋ค.SERVICE
: ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํ๋ ค๋ Dataproc Metastore ์๋น์ค์ ์ด๋ฆ์ ๋๋ค.SCOPES
: (์ ํ์ฌํญ) Dataproc Metastore ์๋น์ค์ gRPC ์๋ํฌ์ธํธ ํ๋กํ ์ฝ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐcloud-platform
์ ์ฌ์ฉํฉ๋๋ค.
REST
API ์๋ด์ ๋ฐ๋ผ API ํ์๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ญ๋๋ค.
Dataproc ํด๋ฌ์คํฐ ์์ฑ์ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ ์ฐ๊ฒฐ
๋ํ Dataproc ์์ฑ์ ์ฌ์ฉํ์ฌ Dataproc ํด๋ฌ์คํฐ๋ฅผ Dataproc Metastore์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์์ฑ์๋ Dataproc Metastore ENDPOINT_URI
๋ฐ WAREHOUSE_DIR
์ด ํฌํจ๋ฉ๋๋ค.
Dataproc Metastore ์๋น์ค์ Private Service Connect์ ์ฌ์ฉ๋๊ฑฐ๋ Dataproc ํด๋ฌ์คํฐ๋ฅผ Dataproc Metastore ์๋น์ค์ ๋ณด์กฐ ๋ฒ์ ์ ์ฐ๊ฒฐํ๋ ค๋ ๊ฒฝ์ฐ ์๋ด๋ฅผ ๋ฐ๋ฆ ๋๋ค.
ENDPOINT_URI
์์ฑ๊ณผ WAREHOUSE_DIR
์์ฑ์ ์ฌ์ฉํ์ฌ Dataproc ํด๋ฌ์คํฐ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์๋ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
์ต์ 1: Dataproc ํด๋ฌ์คํฐ ๋ง๋ค๊ธฐ
Dataproc ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค ๋ ๋ค์ Hive ๊ตฌ์ฑ๊ณผ ํจ๊ป ์์ฑ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
gcloud dataproc clusters create CLUSTER_NAME \ --properties="hive:hive.metastore.uris=ENDPOINT_URI,hive:hive.metastore.warehouse.dir=WAREHOUSE_DIR/hive-warehouse"
๋ค์์ ๋ฐ๊ฟ๋๋ค.
CLUSTER_NAME
: ์ Dataproc ํด๋ฌ์คํฐ ์ด๋ฆ์ ๋๋ค.ENDPOINT_URI
: Dataproc Metastore ์๋น์ค์ ์๋ํฌ์ธํธ URI์ ๋๋ค.WAREHOUSE_DIR
: Hive ์จ์ดํ์ฐ์ค ๋๋ ํฐ๋ฆฌ์ ์์น์ ๋๋ค.
์ต์
2: hive-site.xml
ํ์ผ ์
๋ฐ์ดํธ
๋ํ ํด๋ฌ์คํฐ์ hive-site.xml
ํ์ผ์ ์ง์ ์์ ํ์ฌ Dataproc ํด๋ฌ์คํฐ๋ฅผ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
- SSH๋ฅผ ์ฌ์ฉํ์ฌ
.*-m
ํด๋ฌ์คํฐ์ ์ฐ๊ฒฐํฉ๋๋ค. /etc/hive/conf/hive-site.xml
ํ์ผ์ ์ด๊ณ ๋ค์ ์ค์ ์์ ํฉ๋๋ค.<property> <name>hive.metastore.uris</name> <!-- Update this value. --> <value>ENDPOINT_URI</value> </property> <!-- Add this property entry. --> <property> <name>hive.metastore.warehouse.dir</name> <value>WAREHOUSE_DIR</value> </property>
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ENDPOINT_URI
: Dataproc Metastore ์๋น์ค์ ์๋ํฌ์ธํธ URI์ ๋๋ค.WAREHOUSE_DIR
: Hive ์จ์ดํ์ฐ์ค ๋๋ ํฐ๋ฆฌ์ ์์น์ ๋๋ค.
HiveServer2๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
sudo systemctl restart hive-server2.service
์์ฒด ๊ด๋ฆฌํ ํด๋ฌ์คํฐ
์์ฒด ๊ด๋ฆฌํ ํด๋ฌ์คํฐ๋ Apache Hive ์ธ์คํด์ค, Apache Spark ์ธ์คํด์ค, Presto ํด๋ฌ์คํฐ์ผ ์ ์์ต๋๋ค.
์์ฒด ๊ด๋ฆฌํ ํด๋ฌ์คํฐ ์ฐ๊ฒฐ
ํด๋ผ์ด์ธํธ ๊ตฌ์ฑ ํ์ผ์ ๋ค์ ๊ฐ์ ์ค์ ํฉ๋๋ค.
hive.metastore.uris=ENDPOINT_URI
hive.metastore.warehouse.dir=WAREHOUSE_DIR
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ENDPOINT_URI
: Dataproc Metastore ์๋น์ค์ ์๋ํฌ์ธํธ URI์ ๋๋ค.WAREHOUSE_DIR
: Hive ์จ์ดํ์ฐ์ค ๋๋ ํฐ๋ฆฌ์ ์์น์ ๋๋ค.