본문으로 건너뛰기

Hadoop Eco와 연동하기

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

안내

Hadoop Eco 서비스의 자세한 클러스터 생성 방법은 클러스터 생성 문서를 참고하시기 바랍니다.

Step 1. Hadoop Eco에서 Data Catalog 연동하기

Hadoop Eco 서비스에서 클러스터를 생성할 때 Object Storage와 연동한 후, Data Catalog를 연동하는 방법은 다음과 같습니다.

  1. Object Storage와 연동하기 위해 Hadoop 클러스터 만들기 > 3단계: 상세 설정 (선택) 에서 core-site.xml 정보를 추가합니다.

    • S3 연동을 위한 Credential 발급은 크리덴셜 발급 문서를 참고하시기 바랍니다.
    Object Storage 연결 정보
    {
    "configurations":
    [
    {
    "classification": "core-site",
    "properties":
    {
    "fs.swifta.service.kic.credential.id": "credential_id",
    "fs.swifta.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",
    }
    }
    ]
    }
  2. Data Catalog와 연동하기 위해 **클러스터 만들기 > 5단계: 서비스 연동 설정 (선택)**에서 Data Catalog 연동을 설정합니다.

    • 서비스 연동 항목에서 Data Catalog 연동을 선택합니다.
    • Data Catalog 연동 항목에서 하둡 네트워크/서브넷 정보를 확인 후, 원하는 카탈로그를 선택합니다.

Step 2. 컴포넌트 사용하기

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

안내

Hadoop Eco 서비스의 컴포넌트 사용에 대한 자세한 설명은 컴포넌트 사용 문서를 참고하시기 바랍니다.

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

Hadoop Eco와 Data Catalog를 연동한 후, Hive와 Spark, Trino를 사용해서 테이블 생성하여 데이터에 접근합니다.

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

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

text 포맷
$ hive (data_table)> CREATE EXTERNAL TABLE text_table (
> col1 string
> )
> LOCATION 'swifta://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
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 3.2.2
/_/

Using Scala version 2.12.15 (OpenJDK 64-Bit Server VM, Java 1.8.0_262)
Type in expressions to have them evaluated.
Type :help for more information.

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 --server http://$(hostname):8780

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 문을 이용하여 테이블에 파티션 데이터를 입력하고, 정보를 확인할 수 있습니다.

 # 파티션 된 테이블 생성
CREATE EXTERNAL TABLE text_table (
col1 string
) PARTITIONED BY (yymmdd STRING)
LOCATION 'swifta://kbc-test.kc/data_table/text_table';

MSCK REPAIR

Object Storage에 테이블의 파티션 정보에 맞게 디렉터리를 생성하고 EXTERNAL 테이블을 생성하면, Hive의 MSCK 명령을 이용하여 파티션 정보를 추가할 수 있습니다.

 # Object Storage의 데이터 확인
$ hadoop fs -ls swifta://kbc-test.kc/tables/orders/
Found 7 items
drwxrwxrwx - ubuntu ubuntu 0 1970-01-01 00:00 swifta://kbc-test.kc/tables/orders/year=1992
drwxrwxrwx - ubuntu ubuntu 0 1970-01-01 00:00 swifta://kbc-test.kc/tables/orders/year=1993
drwxrwxrwx - ubuntu ubuntu 0 1970-01-01 00:00 swifta://kbc-test.kc/tables/orders/year=1994