본문으로 건너뛰기

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.kc.credential.id": "credential_id",
    "fs.s3a.service.kc.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