본문으로 건너뛰기

Hadoop Eco와 연동

Data Catalog 서비스에서 Hadoop Eco를 연동하는 방법을 설명합니다.

안내

Data Catalog 연동은 Hadoop Eco 클러스터 생성 단계에서만 설정할 수 있는 옵션입니다. 이는 Hive, Trino, Spark 등 메타스토어를 참조하는 컴포넌트가 클러스터 초기화 시점에 연동 정보가 함께 설정되기 때문입니다. Hadoop Eco 클러스터 생성 방법은 클러스터 생성 문서를 참고하세요.

Step 1. Hadoop Eco에서 Data Catalog 연동

Hadoop Eco 클러스터 생성 시 Object Storage를 먼저 연동한 뒤, Data Catalog 카탈로그(Standard 또는 Iceberg)를 연결합니다.
각 카탈로그 유형은 연동 방식이 다르므로 아래 탭에서 선택해 확인하세요.

  1. Object Storage와 연동하기 위해 Hadoop Eco > 클러스터 생성 > 3단계: 상세 설정 (선택) 에서 core-site.xml 정보를 추가합니다.
  • S3 연동을 위한 Credential 발급은 Authentication 문서를 참고하시기 바랍니다.

    Object Storage 연결 정보
    {
    "configurations":
    [
    {
    "classification": "core-site",
    "properties":
    {
    "fs.s3a.service.kic.credential.id": "credential_id",
    "fs.s3a.service.kic.credential.secret": "credential_secret",
    "fs.s3a.access.key": "access_key",
    "fs.s3a.secret.key": "secret_key",
    "fs.s3a.buckets.create.region": "kr-central-2",
    "fs.s3a.endpoint.region": "kr-central-2",
    "fs.s3a.endpoint": "objectstorage.kr-central-2.kakaocloud.com",
    "s3service.s3-endpoint": "objectstorage.kr-central-2.kakaocloud.com"
    }
    }
    ]
    }
  1. Data Catalog와 연동하기 위해 클러스터 생성 > 3단계: 서비스 연동 설정 (선택) 에서 Data Catalog 연동을 설정합니다.
    • 하둡 네트워크/서브넷 정보를 확인 후, 원하는 Standard 카탈로그를 선택합니다.

Step 2. 컴포넌트 사용

Data Catalog 서비스에서 Hadoop Eco와 연동 후, 컴포넌트 사용하는 방법을 설명합니다.

안내

Hadoop Eco 서비스의 컴포넌트 사용에 대한 자세한 설명은 컴포넌트 사용 문서를 참고하세요.

Step 3. 쿼리로 테이블 생성 및 데이터 입력

연동된 Data Catalog 테이블을 Hive, Spark, Trino에서 동일하게 사용할 수 있습니다.

Hive 쿼리로 테이블 생성과 데이터 입력

Hive 쿼리를 이용해서 여러 포맷의 데이터 생성 및 데이터 입력 방법을 설명합니다.

$ hive (data_table)> CREATE EXTERNAL TABLE text_table (
> col1 string
> )
> LOCATION 's3a://kbc-test.kc/data_table/text_table';

OK
Time taken: 5.351 seconds
$ hive (data_table)>
> INSERT INTO TABLE text_table VALUES ('a'), ('b'), ('c');
.....
Table data_table.text_table stats: [numFiles=1, totalSize=16]
OK
col1
Time taken: 31.864 second

Spark 쿼리를 사용한 데이터 확인

spark-shell을 이용하여 Hive로 생성한 테이블 내용을 확인합니다.

주의

하단의 테스트 쿼리는 모두 정상 동작해야 하지만, 버전 또는 테이블 포맷에 따라 호환성 문제가 발생할 수 있습니다. 현재 호환성 문제가 있는 버전과 포맷은 다음과 같습니다.

  • spark2: ORC, JSON 포맷
  • spark3: JSON 포맷
$ spark-shell

scala> spark.sql("use data_table").show()
....
scala> spark.sql("show tables").show()
+----------+-------------+-----------+
| namespace| tableName|isTemporary|
+----------+-------------+-----------+
|data_table| avro_table| false|
|data_table| csv_table| false|
|data_table| json_table| false|
|data_table| orc_table| false|
|data_table|parquet_table| false|
|data_table| text_table| false|
+----------+-------------+-----------+

Trino 쿼리로 데이터 확인

Trino CLI를 이용해서 Hive로 만든 데이터 테이블 내용을 확인합니다.

  trino> show catalogs;
Catalog
---------
hive
system
(2 rows)

trino> show schemas in hive;
Schema
--------------------
...
default
information_schema
kbc_hive_test
....
(8 rows)

trino> show tables in hive.kbc_hive_test;
Table
------------------
datatype_avro
datatype_csv
datatype_json
datatype_orc
datatype_parquet
datatype_text
(6 rows)

Step 4. 테이블 파티션 추가

Hadoop Eco와 연동된 테이블에 Hive 쿼리를 이용하여 파티션 정보를 추가하는 방법입니다.

파티션 데이터 입력

Hive에서 파티션 테이블을 생성하고 INSERT INTO 문을 사용하여 파티션 데이터를 입력하면, 자동으로 메타데이터가 업데이트됩니다.

   CREATE EXTERNAL TABLE text_table (
col1 string
) PARTITIONED BY (yymmdd STRING)
LOCATION 's3a://kbc-test.kc/data_table/text_table';

MSCK REPAIR

Object Storage에 데이터 디렉터리만 수동으로 생성하고 EXTERNAL 테이블을 정의한 경우, Hive의 MSCK REPAIR TABLE 명령을 사용하여 메타스토어의 파티션 정보를 추가할 수 있습니다.

   $ hadoop fs -ls s3a://kbc-test.kc/tables/orders/
Found 7 items
drwxrwxrwx - ubuntu ubuntu 0 1970-01-01 00:00 s3a://kbc-test.kc/tables/orders/year=1992
drwxrwxrwx - ubuntu ubuntu 0 1970-01-01 00:00 s3a://kbc-test.kc/tables/orders/year=1993
drwxrwxrwx - ubuntu ubuntu 0 1970-01-01 00:00 s3a://kbc-test.kc/tables/orders/year=1994