본문으로 건너뛰기

컴포넌트 목록

Hadoop Eco 서비스에서 클러스터에 설치된 컴포넌트를 사용하는 방법은 다음과 같습니다.

Hive

Hive CLI를 실행한 후, 쿼리를 입력합니다.

Hive CLI를 이용한 쿼리 실행
$ hive
hive (default)> CREATE TABLE tbl (
> col1 STRING
> ) STORED AS ORC
> TBLPROPERTIES ("orc.compress"="SNAPPY");
OK
Time taken: 1.886 seconds

Hive - Zeppelin 연동하기

  1. Zeppelin이 설치된 마스터 노드에 public ip를 부착한 후 Zeppelin ui에 접속합니다.
    Zeppelin 접근 방법은 Zeppelin을 참고하시기 바랍니다.

  2. Zeppelin에서 Hive 실행 방법

    • 상단의 메뉴에서 Notebook > Create new note 를 클릭하여 나타나는 팝업에서 hive Interpreter 를 선택합니다.
    • Zeppelin notebook에 아래와 같이 입력하여 실행할 수 있습니다.

    이미지 Trino-Zeppelin 쿼리 결과 확인

Beeline

  1. Beeline CLI를 실행합니다.

  2. HiveServer2에 직접 접근Zookeeper를 이용한 접근 중 선택하여 HiveServer2에 접속합니다.

    !connect jdbc:hive2://[서버명]:10000/default;
  3. 쿼리를 입력합니다.

    • 쿼리를 실행하기 전 접근 사용자명을 정확하게 입력하여야 합니다. Hadoop Eco의 기본 사용자는 Ubuntu입니다.

    • HDFS에 접근할 수 없는 사용자로 실행한 경우, 쿼리 실행 시 오류가 발생할 수 있습니다.

      Beeline CLI를 이용한 쿼리 실행
      ######################################
      # hiveserver2 직접 접근
      ######################################
      beeline> !connect jdbc:hive2://10.182.50.137:10000/default;
      Connecting to jdbc:hive2://10.182.50.137:10000/default;
      Enter username for jdbc:hive2://10.182.50.137:10000/default:
      Enter password for jdbc:hive2://10.182.50.137:10000/default:
      Connected to: Apache Hive (version 2.3.2)
      Driver: Hive JDBC (version 2.3.2)
      Transaction isolation: TRANSACTION_REPEATABLE_READ
      0: jdbc:hive2://10.182.50.137:10000/default> show databases;
      +----------------+
      | database_name |
      +----------------+
      | db_1 |
      | default |
      +----------------+
      2 rows selected (0.198 seconds)



      #####################################
      # 주키퍼를 이용한 접근
      #####################################
      beeline> !connect jdbc:hive2://hadoopmst-hadoop-ha-1:2181,hadoopmst-hadoop-ha-2:2181,hadoopmst-hadoop-ha-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=kepbp_hiveserver2
      Connecting to jdbc:hive2://hadoopmst-hadoop-ha-1:2181,hadoopmst-hadoop-ha-2:2181,hadoopmst-hadoop-ha-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=kepbp_hiveserver2
      Enter username for jdbc:hive2://hadoopmst-hadoop-ha-1:2181,hadoopmst-hadoop-ha-2:2181,hadoopmst-hadoop-ha-3:2181/:
      Enter password for jdbc:hive2://hadoopmst-hadoop-ha-1:2181,hadoopmst-hadoop-ha-2:2181,hadoopmst-hadoop-ha-3:2181/:
      22/09/06 05:40:52 [main]: INFO jdbc.HiveConnection: Connected to hadoopmst-hadoop-ha-1:10000
      Connected to: Apache Hive (version 2.3.9)
      Driver: Hive JDBC (version 2.3.9)
      Transaction isolation: TRANSACTION_REPEATABLE_READ
      0: jdbc:hive2://hadoopmst-hadoop-ha-1:2181,ha> show databases;
      +----------------+
      | database_name |
      +----------------+
      | default |
      +----------------+
      1 row selected (2.164 seconds)
      0: jdbc:hive2://hadoopmst-hadoop-ha-1:2181,ha>

      #####################################
      # 사용자 입력 (Enter username: )
      #####################################
      beeline> !connect jdbc:hive2://bigdata-hadoop-master-1.kep.k9d.in:10000/default;
      Connecting to jdbc:hive2://bigdata-hadoop-master-1.kep.k9d.in:10000/default;
      Enter username for jdbc:hive2://bigdata-hadoop-master-1.kep.k9d.in:10000/default: ubuntu
      Enter password for jdbc:hive2://bigdata-hadoop-master-1.kep.k9d.in:10000/default:
      Connected to: Apache Hive (version 2.3.9)
      Driver: Hive JDBC (version 2.3.9)
      Transaction isolation: TRANSACTION_REPEATABLE_READ
      0: jdbc:hive2://bigdata-hadoop-master-1.kep.k> create table t2 (`value` string,`product_num` int) partitioned by (manufacture_date string) STORED AS ORC;
      No rows affected (0.527 seconds)
      0: jdbc:hive2://bigdata-hadoop-master-1.kep.k> insert into t2 partition(manufacture_date='2019-01-01') values('asdf', '123');
      No rows affected (26.56 seconds)
      0: jdbc:hive2://bigdata-hadoop-master-1.kep.k>

Hue

Hue는 Hadoop Eco 클러스터에 제공되는 사용자 인터페이스입니다.
클러스터 상세 페이지에서 퀵 링크를 클릭하여 접속합니다. 클러스터 생성 시점에 입력한 관리자 정보로 로그인합니다.

안내

Hue는 Hive 편집기와 브라우저를 이용할 수 있습니다.

  • 브라우저 종류: 파일 브라우저, 테이블 브라우저, 잡 브라우저

클러스터 타입별 Hue 접속 포트

클러스터 가용성접속 포트
표준(Single)   마스터 1번 노드의 8888 포트
HA마스터 3번 노드의 8888 포트

이미지 Hue 사용자 로그인

Oozie

Oozie는 Hadoop Eco 클러스터의 타입이 Core Hadoop일 때 제공되는 워크플로(Workflow) 작업 도구입니다.

클러스터 타입별 Oozie 접속 포트
클러스터 가용성접속 포트
표준(Single)   마스터 1번 노드의 11000 포트
HA마스터 3번 노드의 11000 포트

이미지 Oozie 워크플로 목록

이미지 Oozie 워크플로 작업 정보

이미지 Oozie 워크플로 작업 내용

Zeppelin

Zeppelin은 Hadoop Eco 클러스터 타입이 Core Hadoop, Trino 일 때 제공되는 사용자 인터페이스입니다. 클러스터 상세 페이지에서 퀵 링크를 클릭하여 Zeppelin에 접속합니다.

클러스터 고가용성에 따른 Zeppelin 접속 포트
클러스터 고가용성접속 포트
표준(Single)  마스터 1번 노드의 8180 포트
HA마스터 3번 노드의 8180 포트

이미지 Zeppelin 사용자 인터페이스

인터프리터

인터프리터는 프로그래밍 언어 소스 코드를 바로 실행하는 환경을 의미합니다.
Zeppelin은 Spark, Hive, Trino 인터프리터를 제공합니다.

이미지 Zeppelin 사용

Spark

  1. 마스터 노드에서 spark-shell CLI를 실행한 후 테스트 코드를 입력합니다.

    spark-shell CLI를 이용한 쿼리 실행
    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> val count = sc.parallelize(1 to 90000000).filter { _ =>
    | val x = math.random
    | val y = math.random
    | x*x + y*y < 1
    | }.count()
    count: Long = 70691442
  2. 마스터 노드에서 spark-submit 명령어로 Spark 예제 파일을 실행합니다.

    $ spark-submit --class org.apache.spark.examples.SparkPi --master yarn /opt/spark/examples/jars/spark-examples_*.jar 100

Spark History Server 접속하기

  1. 클러스터의 고가용성에 따라 마스터 노드에 public ip를 부착한 후 spark history server에 접근할 수 있습니다.

    클러스터 고가용성접속 포트
    표준(Single)   마스터 1번 노드의 18082 포트
    HA마스터 3번 노드의 18082 포트
  2. History Server에서 정보를 확인합니다.

    이미지 수정필요수정필요 화면

Spark - Zeppelin 연동하기

  1. Zeppelin이 설치된 마스터 노드에 public ip를 부착한 후 Zeppelin ui에 접속합니다.
    Zeppelin 접근 방법은 Zeppelin을 참고하시기 바랍니다.

  2. Zeppelin에서 spark-shell 실행 방법

    • 상단의 메뉴에서 Notebook > Create new note 를 클릭하여 나타나는 팝업에서 spark Interpreter 를 선택합니다.
    • Zeppelin notebook에 아래와 같이 입력하여 실행할 수 있습니다.

    이미지 Trino-Zeppelin 쿼리 결과 확인

  3. Zeppelin에서 pyspark 실행 방법

    • 상단의 메뉴에서 Notebook > Create new note 를 클릭하여 나타나는 팝업에서 spark Interpreter 를 선택합니다.
    • Zeppelin notebook에 다음과 같이 입력하여 실행할 수 있습니다.

    이미지 Trino-Zeppelin 쿼리 결과 확인

  4. Zeppelin에서 Spark-submit 실행 방법

    • 상단의 메뉴에서 Notebook > Create new note 를 클릭하여 나타나는 팝업에서 spark Interpreter 를 선택합니다.
    • Zeppelin notebook에 다음과 같이 입력하여 실행할 수 있습니다.

    이미지 Trino-Zeppelin 쿼리 결과 확인

Tez

Tez는 Yarn 기반으로 Hive에서 MR 엔진을 대체하여 데이터의 분산처리를 수행하는 컴포넌트입니다.
Tez 에서 제공하는 Web UI를 통해 Tez 애플리케이션의 정보를 확인할 수 있습니다.

  1. Tez Web UI에 접근하기 위해서는 클러스터 고가용성에 따라 마스터 1번 혹은 3번 노드에 public ip를 부탁해야합니다.

  2. 이후 사용자의 /etc/hosts 파일에 마스터 1번 혹은 3번 노드의 호스트명과 public ip 정보를 추가해주어야 합니다.
    모든 설정이 끝나면 다음과 같이 접근할 수 있습니다.

    클러스터 고가용성접속 포트
    표준(Single)  마스터 1번 노드의 9999 포트
    HA마스터 3번 노드의 9999 포트

    이미지 Trino-Zeppelin 쿼리 결과 확인

Trino

  1. Trino CLI를 실행합니다. 서버 정보는 Trino Coordinator가 설치된 위치를 입력합니다.

    클러스터 가용성접속 포트
    표준(Single)  마스터 1번 노드의 8780 포트
    HA마스터 3번 노드의 8780 포트
  2. 쿼리를 입력합니다.

    Trino CLI를 이용한 쿼리 실행
    $ trino --server http://hadoopmst-trino-ha-3:8780
    trino> SHOW CATALOGS;
    Catalog
    ---------
    hive
    system
    (2 rows)

    Query 20220701_064104_00014_9rp8f, FINISHED, 2 nodes
    Splits: 12 total, 12 done (100.00%)
    0.23 [0 rows, 0B] [0 rows/s, 0B/s]

    trino> SHOW SCHEMAS FROM hive;
    Schema
    --------------------
    default
    information_schema
    (2 rows)

    Query 20220701_064108_00015_9rp8f, FINISHED, 3 nodes
    Splits: 12 total, 12 done (100.00%)
    0.23 [2 rows, 35B] [8 rows/s, 155B/s]

    trino> select * from hive.default.t1;
    col1
    ------
    a
    b
    c
    (3 rows)

    Query 20220701_064113_00016_9rp8f, FINISHED, 1 node
    Splits: 5 total, 5 done (100.00%)
    0.23 [3 rows, 16B] [13 rows/s, 71B/s]

Trino Web 접속하기

  1. Trino Coordinator가 설치된 서버의 8780 포트로 Trino Web UI에 접속합니다.

    클러스터 가용성접속 포트
    표준(Single)   마스터 1번 노드의 8780 포트
    HA마스터 3번 노드의 8780 포트
  2. Trino 쿼리 히스토리와 통계 정보를 확인합니다.

    이미지 Trino Web 화면

Trino - Zeppelin 연동하기

  1. Zeppelin에서 인터프리터를 Trino로 선택합니다.

    이미지 Trino-Zeppelin 연동

  2. Trino에 조회하고자 하는 쿼리를 입력하면 결과를 확인할 수 있습니다.

    이미지 Trino-Zeppelin 쿼리 결과 확인

Kafka

아파치 카프카(Apache Kafka)는 Hadoop Eco 클러스터의 타입이 Dataflow일 때 제공되는 대규모 실시간 데이터 스트리밍 플랫폼입니다.
Hadoop Eco 클러스터에 설치된 카프카는 터미널에서 명령어를 통해 실행할 수 있습니다. 아래의 예시 이외의 자세한 사항은 카프카 공식문서를 참고하시기 바랍니다.

  1. 토픽 생성
토픽 생성
$ /opt/kafka/bin/kafka-topics.sh --create --topic my-topic --bootstrap-server $(hostname):9092
  1. 토픽에 이벤트 작성
토픽에 이벤트 작성
$ echo '{"time":'$(date +%s)', "id": 1, "msg": "첫번째 이벤트"}' | /opt/kafka/bin/kafka-console-producer.sh --topic my-topic --bootstrap-server $(hostname):9092
$ echo '{"time":'$(date +%s)', "id": 2, "msg": "두번째 이벤트"}' | /opt/kafka/bin/kafka-console-producer.sh --topic my-topic --bootstrap-server $(hostname):9092
$ echo '{"time":'$(date +%s)', "id": 3, "msg": "세번째 이벤트"}' | /opt/kafka/bin/kafka-console-producer.sh --topic my-topic --bootstrap-server $(hostname):9092
  1. 이벤트 확인
이벤트 확인
$ /opt/kafka/bin/kafka-console-consumer.sh --topic my-topic --from-beginning --bootstrap-server $(hostname):9092  
{"time":1692604787, "id": 1, "msg": "첫번째 이벤트"}
{"time":1692604792, "id": 2, "msg": "두번째 이벤트"}
{"time":1692604796, "id": 3, "msg": "세번째 이벤트"}

Druid

아파치 드루이드(Apache Druid)는 Hadoop Eco 클러스터의 타입이 Dataflow일 때 제공되는 대규모 데이터에 대한 빠른 분할 분석을 위해 설계된 실시간 분석 데이터베이스 입니다. 드루이드는 다양한 종류의 데이터소스를 지원하여 데이터 파이프라인 구축에 적합합니다.

클러스터 상세 페이지에서 드루이드 퀵 링크를 통하여 라우터에서 제공하는 UI에 접속합니다.
Hadoop Eco 클러스터 타입별 드루이드 UI 접속 포트는 다음과 같습니다.

클러스터 타입별 드루이드 UI 접속 포트

클러스터 가용성접속 포트
표준(Single)마스터 1번 노드의 3008 포트
HA마스터 3번 노드의 3008 포트

드루이드 UI 둘러보기

  • Ingestion 작업 목록 이미지

  • 데이터소스 목록 이미지

  • 쿼리 이미지

카프카에서 데이터 불러오기

  1. 드루이드 UI에서 Load data 탭 하위의 Streaming을 선택합니다. 연결가능한 데이터소스에서 Apache Kafka를 선택합니다. 이미지

  2. Bootstrap servers<hostname>:<port>의 형태로 연결하고자하는 카프카의 호스트와 포트 정보를 입력합니다. Topic 칸에 불러오기를 원하는 토픽의 이름을 입력합니다. 이미지

  3. 토픽 선택 이후 페이지에서는 불러오기를 원하는 데이터의 형상을 적절히 선택하고 아래와 같은 스펙을 마지막 페이지에서 확인하고 ingestion을 submit 합니다. 이미지

  4. Ingestion 페이지에서 생성한 슈퍼비전의 상태를 확인합니다. Actions 칸의 돋보기 아이콘을 클릭하면 로그와 페이로드 등의 상세 정보를 확인할 수 있습니다. 이미지

Superset

Apache Superset은 Hadoop Eco 클러스터의 타입이 Dataflow일 때 제공되는 데이터 시각화 및 탐색 플랫폼 입니다. Superset은 다양한 데이터소스(MySQL, SQLite, Hive, Druid, ...)와 연동이 가능하며, 쿼리, 그래프 작성, 대시보드 등 다양한 분석 도구를 제공하고 있습니다.

클러스터 상세 페이지에서 Superset 링크를 통하여 라우터에서 제공하는 UI에 접속합니다.
Hadoop Eco 클러스터 타입별 Superset UI 접속 포트는 다음과 같습니다.

클러스터 타입별 슈퍼셋 UI 접속 포트

클러스터 가용성접속 포트
표준(Single)마스터 1번 노드의 4000 포트
HA마스터 3번 노드의 4000 포트

Superset UI 둘러보기

  • 대시보드 리스트 이미지

  • 대시보드: 대시보드를 작성하여 저장하고 이를 이미지로 저장하거나 공유할 수 있는 링크를 얻을 수 있습니다. 이미지

  • 차트: 연결된 데이터베이스에서 등록된 물리 데이터셋 혹은 쿼리를 통해 저장된 가상 데이터셋을 이용하여 차트를 생성하고 저장 할 수 있습니다. 이미지

  • 쿼리 랩: 연결된 데이터베이스의 데이터에 대해 쿼리를 실행하여 결과를 확인할 수 있습니다. 이미지

  • 데이터: 연결된 데이터베이스와 생성한 데이터셋, 저장한 쿼리, 실행되었던 쿼리의 목록을 관리할 수 있습니다. 이미지

Superset 명령어 실행

Superset에서 제공하는 명령어는 터미널에서 아래와 같은 순서로 실행할 수 있습니다.

Superset 명령어
# 환경 변수 설정
$ export $(cat /opt/superset/.env)

# Superset 커맨드 실행 예시 $ /opt/superset/superset-venv/bin/superset --help
Loaded your LOCAL configuration at [/opt/superset/superset_config.py]
Usage: superset [OPTIONS] COMMAND [ARGS]...

This is a management script for the Superset application.

Options:
--version Show the flask version
--help Show this message and exit.

Commands:
compute-thumbnails Compute thumbnails
db Perform database migrations.
export-dashboards Export dashboards to ZIP file
export-datasources Export datasources to ZIP file
fab FAB flask group commands
import-dashboards Import dashboards from ZIP file
import-datasources Import datasources from ZIP file
import-directory Imports configs from a given directory
init Inits the Superset application
load-examples Loads a set of Slices and Dashboards and a...
load-test-users Loads admin, alpha, and gamma user for...
re-encrypt-secrets
routes Show the routes for the app.
run Run a development server.
set-database-uri Updates a database connection URI
shell Run a shell in the app context.
superset This is a management script for the Superset...
sync-tags Rebuilds special tags (owner, type, favorited...
update-api-docs Regenerate the openapi.json file in docs
update-datasources-cache Refresh sqllab datasources cache
version Prints the current version number

Apache Flink는 Apache Software Foundation에서 개발한 오픈 소스, 통합 스트림 처리 및 일괄 처리 프레임워크입니다. Flink를 Yarn 세션 모드로 실행하는 방법은 다음과 같습니다.

Flink를 세션 모드로 실행할 때 옵션을 이용해서 Flink가 사용할 수 있는 리소스를 조절할 수 있습니다.

실행 옵션설명
-jm잡 매니저 메모리 사이즈
-tm태스크 매니저 메모리 사이즈
-sCPU 코어 개수
-n태스크 매니저 개수
-nm애플리케이션 이름
-d백그라운드 모드
Flink 실행
yarn-session.sh \
-jm 2048 \
-tm 2048 \
-s 2 \
-n 3 \
-nm yarn-session-jobs

Flink를 실행하면 Yarn의 노드에서 Flink가 실행되고 WebUI가 실행되어 해당 위치로 접속할 수 있습니다.

Flink 인터페이스
2022-07-07 23:15:33,775 INFO  org.apache.flink.shaded.curator4.org.apache.curator.framework.state.ConnectionStateManager [] - State change: CONNECTED
2022-07-07 23:15:33,800 INFO org.apache.flink.runtime.leaderretrieval.DefaultLeaderRetrievalService [] - Starting DefaultLeaderRetrievalService with ZookeeperLeaderRetrievalDriver{connectionInformationPath='/leader/rest_server/connection_info'}.
JobManager Web Interface: http://hadoopwrk-logan-표준(Single)-2:8082

이미지 Flink Web 화면

Flink on Yarn Session을 실행한 후 사용자 작업을 실행하고, 웹사이트에서 확인할 수 있습니다.

이미지 Flink 작업 실행

Flink 작업 실행
$ flink run /opt/flink/examples/batch/WordCount.jar
Executing WordCount example with default input data set.
Use --input to specify file input.
Printing result to stdout. Use --output to specify output path.
Job has been submitted with JobID 43aee6d7d947b1ce848e01c094801ab4
Program execution finished
Job with JobID 43aee6d7d947b1ce848e01c094801ab4 has finished.
Job Runtime: 7983 ms
Accumulator Results:
- 4e3b3f0ae1b13d861a25c3798bc15c04 (java.util.ArrayList) [170 elements]


(a,5)
(action,1)
(after,1)
(against,1)

Kakao HBase Tools

HBase Tools는 Kakao에서 개발한 오픈 소스입니다. 카카오클라우드 콘솔에서 Hadoop Eco 메뉴를 선택합니다. 클러스터 목록에서 삭제할 클러스터의 [더 보기] 아이콘 > 클러스터 삭제를 선택합니다. 클러스터 삭제 팝업창에서 삭제할 클러스터를 확인한 후, 영구 삭제를 입력하고 [삭제] 버튼을 클릭합니다.

안내

자세한 설명은 Kakao Tech 블로그를 참고하시기 바랍니다.

구분설명
hbase-manager Module리전 배치 관리, 스플릿, 머지, 메이저 컴팩션 제공
- Region Assignment Management
- Advanced Split
- Advanced Merge
- Advanced Major Compaction
hbase-table-stat Module성능 모니터링
- Table Metrics Monitoring
hbase-snapshot ModuleHBase에 저장된 데이터를 백업 및 복구
- Table Snapshot Management

Kakao HBase Tools 실행하기

Zookeeper 호스트 정보를 전달하여 HBase 정보를 가져옵니다.

Kakao HBase Tools 실행
# hbase-manager
java -jar /opt/hbase/lib/tools/hbase-manager-1.2-1.5.7.jar <command> <zookeeper host name> <table name>

# hbase-snapshot
java -jar /opt/hbase/lib/tools/hbase-snapshot-1.2-1.5.7.jar <zookeeper host name> <table name>

# hbase-table-stat
java -jar /opt/hbase/lib/tools/hbase-table-stat-1.2-1.5.7.jar <zookeeper host name> <table name>

hbase-manager

HBase 관리를 위한 Admin Tool입니다.

이미지 hbase-manager

hbase-table-stat

테이블의 현재 사용 상태를 확인하기 위한 Tool입니다.

이미지 hbase-table-stat

hbase-snapshot

테이블 데이터 스냅샷 생성을 위한 Tool입니다.

이미지 hbase-snapshot