본문으로 건너뛰기

클러스터 생성

클러스터란 Virtual Machine을 이용하여 프로비저닝된 노드들의 집합입니다.
Hadoop Eco 서비스에서 클러스터를 생성하는 방법은 다음과 같습니다.

안내

클러스터 생성 시 약 20~25분 정도가 소요됩니다.

Step 1. 클러스터 설정하기

Hadoop 클러스터 생성을 위한 기본 정보를 설정합니다.

  1. 카카오클라우드 콘솔 > Analytics > Hadoop Eco 메뉴로 이동합니다.

  2. Cluster 메뉴에서 우측 상단에 위치한 [클러스터 만들기] 버튼을 클릭합니다.

  3. 1단계: 클러스터 설정에서 정보를 입력하고 [다음] 버튼을 클릭합니다.

    항목구분설명
    클러스터 이름예시: my-cluster-01
    - 같은 프로젝트 내에서 중복된 클러스터 이름은 사용 불가
    - 클러스터 이름 기반으로 VM 생성
    - 마스터 노드: HadoopMST-{클러스터 이름}-{번호} 형식으로 생성
    - 워커 노드: HadoopWRK-{클러스터 이름}-{번호} 형식으로 생성
    클러스터 구성클러스터 버전클러스터 버전 선택
    클러스터 타입- 클러스터 버전에 따라 클러스터 타입 선택
    - 자세한 설명은 클러스터 버전 및 타입 참고
    클러스터 가용성클러스터의 운영 안정성을 위해 가용성 타입으로 표준과 고가용성 타입을 제공
    - 표준(Single, 마스터 노드 인스턴스 1개): 리소스 매니저, 네임 노드가 1개 실행됨
      ㄴ 단일 마스터 노드를 생성, 소규모 작업에 적합
    - 고가용성 (HA, 마스터 노드 인스턴스 3개): 리소스 매니저, 네임 노드가 HA 모드로 실행됨
       ㄴ 3개의 마스터 노드를 생성, 재부팅 등이 발생해도 중단없는 작업 가능
    관리자 설정관리자 아이디관리자 아이디를 입력
    관리자 비밀번호관리자 비밀번호를 입력
    - 비밀번호 재설정 방법에 대한 자세한 설명은 Hue 비밀번호 재설정 참고
    관리자 비밀번호 확인관리자 비밀번호와 동일하게 입력
    VPC 설정VPC와 Subnet을 선택
    - [새로고침] 아이콘을 클릭해 네트워크 정보를 가져옴
    - 관리 페이지를 클릭해 VPC > Network로 이동
    - 외부에서 접근 가능한 공인 IP는 인스턴스 생성 후 [공인 IP 연결] 메뉴에서 할당
    시큐리티 그룹새로운 시큐리티 그룹을 생성: 시큐리티 그룹 이름을 입력하여 새로 생성
      - Hadoop Eco를 위한 인바운드/아웃바운드 정책을 자동으로 설정
    기존에 생성된 시큐리티 그룹을 선택: 인바운드/아웃바운드 정책을 확인
      - [새로고침] 아이콘을 클릭해 네트워크 정보를 새로 가져옴
      - 자세한 설명은 보안 그룹 참고

시큐리티 그룹 설정

Hadoop Eco 서비스에서 클러스터를 설치하기 위해 컴포넌트가 사용하는 포트를 시큐리티 그룹에 설정해야 합니다. 컴포넌트 구성을 위해 특정 포트는 반드시 오픈해야 합니다. 적용된 정책 리스트에서 인스턴스에 적용될 정책을 미리 확인할 수 있습니다.

  • 시큐리티 그룹 자동 생성 시, 시큐리티 그룹 이름의 기본값은 생성 날짜, 클러스터 버전, 타입에 따라 자동으로 지정됩니다.
  • 시큐리티 그룹 이름 예시: {cluster_name}-HDE-{version}-{type}
  • 인스턴스를 생성할 때는 1개의 시큐리티 그룹만 설정할 수 있으며 추가적인 시큐리티 그룹 설정은 생성 이후 가능합니다.

클러스터 생성 시 시큐리티 그룹을 자동으로 생성합니다. 자동 생성된 시큐리티 그룹에서 설정되는 포트 정보는 다음과 같습니다.

프로토콜패킷 출발지포트 번호정책 설명
ALL   VPC subnet CIDRALL      hadoop eco internal

클러스터 버전 및 타입

클러스터 버전클러스터 타입옵션
Hadoop Eco 1.0.1
(Trino, Dataflow 타입 미지원)
Core HadoopCore Hadoop (Hadoop 2.10.1 HDFS, YARN, Spark 2.4.6)
- Hadoop과 연동해 사용할 수 있는 분석 엔진 Apache Spark, Hive를 함께 설치
HBaseHBase (Hadoop 2.10.1, HBase 1.4.13)
- Hadoop 기반 분산 데이터베이스인 Apache HBase를 함께 설치
Hadoop Eco 1.1.2Core HadoopCore Hadoop (Hadoop 2.10.2 HDFS, YARN, Spark 2.4.8)
HBaseHBase (Hadoop 2.10.2, HDFS, YARN, HBase 1.7.1)
TrinoTrino (Hadoop 2.10.2, HDFS, YARN, Trino 377)
DataflowDataflow (Hadoop 2.10.2, HDFS, YARN, Kafka 3.4.0, Druid 25.0.0, Superset 2.1.1)
Hadoop Eco 2.0.1Core HadoopCore Hadoop (Hadoop 3.3.4 HDFS, YARN, Spark 3.2.2)
HBaseHBase (Hadoop 3.3.4 HDFS, YARN, HBase 2.4.13)
TrinoTrino (Hadoop 3.3.4, HDFS, YARN, Trino 393)
DataflowDataflow (Hadoop 3.3.4, HDFS, YARN, Kafka 3.4.0, Druid 25.0.0, Superset 2.1.1)
안내

Hadoop Eco 1.0.0, 1.1.0, 1.1.1, 2.0.0 버전은 지원하지 않습니다.

Step 2. 인스턴스 설정하기

마스터 및 워커 인스턴스, 스토리지, 네트워크를 설정합니다.

2단계: 인스턴스 설정에서 정보를 입력하고 [다음] 버튼을 클릭합니다.

  • 클러스터 생성 이후, 인스턴스와 디스크 볼륨 설정값은 변경할 수 없습니다.
  • 마스터/워커 인스턴스 및 디스크 볼륨 추가는 추후 지원 예정입니다.
항목구분설명
마스터 노드 설정마스터 노드 인스턴스 개수클러스터 가용성에 따라 개수 고정
- 표준(Single) 타입: 1개
- HA 타입: 3개
마스터 노드 인스턴스 유형지원하는 인스턴스 유형 중 선택
- 선택한 인스턴스 유형에 따라 호스트 컴퓨터의 하드웨어 구성
디스크 볼륨 타입 / 크기- 볼륨 타입: 현재 SSD 타입만 지원(이외의 타입은 추후 지원 예정)
- 볼륨 크기: 50 ~ 5,120GB
워커 노드 설정워커 노드 인스턴스 개수목적에 따라 개수를 선택할 수 있으며, 전체 개수는 프로젝트의 쿼터에 따라 결정
워커 노드 인스턴스 유형지원하는 인스턴스 유형 중 선택
- 선택한 인스턴스 유형에 따라 호스트 컴퓨터의 하드웨어 구성
디스크 볼륨 타입 / 크기볼륨 타입: 현재 SSD 타입만 지원(이외의 타입은 추후 지원 예정)
- 볼륨 크기: 50 ~ 5,120GB
총 YARN 사용량YARN Core'워커 노드 수 x 노드당 vCPU 수'의 결괏값
YARN Memory'워커 노드 수 x 각 노드의 메모리 크기 x YARN에 지정된 비율(0.8)'의 결괏값
키 페어인스턴스에 적용할 키 페어 선택
- 카카오클라우드의 기존에 생성 및 추가된 키 페어 중 선택하거나 신규 키 페어를 생성해 할당
- 신규 키 페어 생성은 신규 키 페어 생성 참고
- [새로고침] 아이콘을 클릭해 키 페어 정보를 새로 가져옴
* 관리 페이지를 클릭해 Virtual Machine > Key Pair로 이동
사용자 스크립트 (선택)인스턴스 시작 시, 사용자 데이터를 실행하여 초기 환경 구성을 자동으로 실행하는 스크립트

신규 키 페어 생성

클러스터 만들기에서 키 페어를 생성하는 방법은 다음과 같습니다.

  1. 신규 키 페어 생성을 선택하고, 키 페어 이름을 입력합니다.

  2. [키 페어 생성 및 다운로드] 버튼을 클릭합니다.

  3. 입력한 키 페어 이름으로 .pem 확장자의 프라이빗 키 키 파일이 다운로드됩니다.

안내

다운로드한 프라이빗 키 파일은 안전하게 보관하시기 바랍니다.

Step 3. 상세 설정 (선택)

1. 서비스 연동 설정하기(선택)

클러스터 서비스 연동에 대한 설정을 적용합니다.카카오클라우드에서 제공하는 Data Catalog 서비스와 연동을 설정할 수 있습니다.

안내

서비스 연동을 하지 않을 경우 표준(Single) 타입은 마스터 1번 노드에, HA 타입은 마스터 3번 노드에 자체적으로 MySQL을 설치하여 메타스토어로 사용하게 됩니다.

서비스 연동 설정에서 모니터링 에이전트 설치 여부를 선택하고, 서비스 연동을 설정합니다,

항목설명
모니터링 에이전트 설치모니터링 에이전트 설치 여부를 선택
서비스 연동연동하지 않음 / Data Catalog 연동 / 외부 Hive 메타 스토어 연동 중 선택

모니터링 에이전트 설치

모니터링 에이전트 설치 시, Hadoop Eco > 클러스터 상세 페이지 > 모니터링 탭에서 Nodes 모니터링을 추가로 확인할 수 있습니다.

  • 노드별 CPU 사용량(%)
  • 노드별 Memory 사용량(%)

Data Catalog 연동

  1. Data Catalog 연동하기 위해 사전에 생성한 Data Catalog를 준비합니다. Catalog 생성에 대한 자세한 설명은 카탈로그 생성을 참고하시기 바랍니다.

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

  • Object Storage 연동에 대한 자세한 설명은 Object Storage 연동을 참고하시기 바랍니다.

    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",
    }
    }
    ]
    }
  1. Data Catalog와 연동하기 위해 클러스터 만들기 > 3단계: 상세 설정(선택) 에서 Data Catalog 연동을 선택합니다.

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

외부 Hive 메타 스토어 연동

  1. 외부 Hive 메타 스토어 연동을 위해 MySQL을 생성합니다. MySQL 생성에 대한 자세한 설명은 MySQL 인스턴스 그룹 생성을 참고하시기 바랍니다.

  2. MySQL과 연동하기 위해 클러스터 만들기 > 3단계: 상세 설정(선택) 에서 외부 Hive 메타 스토어 연동을 선택합니다.

    1. 서비스 연동 항목에서 MySQL이 설치된 인스턴스을 선택합니다.
    2. 인스턴스 선택 후 해당 MySQL의 데이터베이스 이름, MySQL ID, 비밀번호를 입력합니다.

2. 클러스터 상세 설정(선택)

HDFS 블록 크기, 복제 개수 설정과 클러스터의 구성 설정을 적용할 수 있습니다 HDFS 설정값이 클러스터 구성 설정보다 우선합니다.

항목설명
HDFS 설정HDFS 블록 크기
- hdfs-site.xmldfs.blocksize 값 설정
- 1~ 1,024MB 크기로 볼륨 생성(기본값: 128MB)

HDFS 복제 개수
- hdfs-site.xmldfs.blockreplication 값 설정
- 1 ~ 500개로 복제 개수 설정
- 복제 개수는 워커 노드 인스턴스 개수 이하여야 함
클러스터 구성 설정(선택)클러스터를 구성한 컴포넌트의 설정을 입력
- Json 파일을 업로드하거나 설정값을 직접 입력
클러스터 구성 설정

클러스터 구성 설정은 키-값 쌍으로 된 json 파일로 설정합니다. configurations는 리스트 형식이고, classification에 파일명, properties에 설정 명을 입력받습니다. 기본 입력 방법은 다음과 같습니다

Json 파일 설정
-- 입력 방법
{
"configurations":
[
{
"classification": "설정 파일 명",
"properties": {
"설정 명": "설정값"
}
}
]
}

-- 예제
{
"configurations":
[
{
"classification": "core-site",
"properties": {
"dfs.blocksize": "67108864"
}
}
]
}

설정 파일 명에 따라 env, xml, properties 형식으로 구분할 수 있습니다.

형식설명
env입력된 키의 값은 설정 파일에 변환되어 들어가며, 해당 키는 변경되지 않고 정해진 이름의 값을 변경해야 합니다.
xml입력된 키, 값 쌍이 XML 엘리먼트로 변환되어 들어가며, 키는 <name>으로, 값은 <value>로 만들어져 입력됩니다.
properties입력된 키, 값 쌍이 키의 이름에 따라 정해진 형태로 변환되어 들어가게 됩니다.
user-env<사용자명> 으로 생성하여 사용자 환경 변수를 추가합니다.

사용자가 입력한 classification에 따라 설정 파일이 생성되는 위치에 사용자의 설정이 추가되어 입력됩니다.

env

classification생성 위치설정샘플 값
hadoop-env/etc/hadoop/confhadoop_env_hadoop_heapsize2048
hadoop_env_hadoop_namenode_heapsize"-Xmx2048m"
hadoop_env_hadoop_jobtracker_heapsize"-Xmx1024m"
hadoop_env_hadoop_tasktracker_heapsize"-Xmx1024m"
hadoop_env_hadoop_shared_hadoop_namenode_heapsize"-Xmx1024m"
hadoop_env_hadoop_datanode_heapsize"-Xmx1024m"
hadoop_env_hadoop_zkfc_opts"-Xmx1024m"
hadoop_env_hadoop_log_levelINFO, DRFA, console
hadoop_env_hadoop_security_log_levelINFO, DRFAS
hadoop_env_hadoop_audit_log_levelINFO, RFAAUDIT
mapred-env/etc/hadoop/confmapred_env_hadoop_job_historyserver_heapsize2000
hive-env/etc/hive/confhive_env_hive_metastore_heapsize2048
hive_env_hiveserver2_heapsize2048
hive_env_hadoop_client_opts"-Xmx2048m"
hbase-env /etc/hbase/confhbase_env_hbase_master_heapsize"-Xmx2048m"
hbase_env_hbase_regionserver_heapsize"-Xmx2048m"
spark-defaults/etc/spark/confspark_defaults_spark_driver_memory2g
trino-config/etc/trino/conftrino_jvm_config_heap-Xmx10G

xml

classification생성 위치참조 위치비고
core-site/etc/hadoop/confcore-default.xml
hdfs-site/etc/hadoop/confhdfs-default.xml
httpfs-site/etc/hadoop/confServerSetup.html
mapred-site/etc/hadoop/confmapred-default.xml
yarn-site/etc/hadoop/confyarn-default.xml
capacity-scheduler/etc/hadoop/confCapacityScheduler.htmlyarn 스케줄러 설정
tez-site/etc/tez/confTezConfiguration.html
hive-site/etc/hive/confHive configuration properties
hiveserver2-site/etc/hive/confSetting up hiveserver2hiveserver2 전용 설정

properties

classification생성 위치설명
spark-defaults/etc/spark/conf스파크 설정값을 키[탭]값으로 변환되어 입력합니다.

user-env

classification생성 위치설명
user-env:profile/etc/profile전체 변수 추가
user-env:[사용자명]~/.bashrc사용자의 bashrc 에 환경 변수 추가
xml 형식
xml 형식
<configuration>

<property>
<name>yarn.app.mapreduce.am.job.client.port-range</name>
<value>41000-43000</value>
</property>

</configuration>
env 형식
env 형식
...
export HADOOP_HEAPSIZE="3001"
...
properties 형식
properties 형식
spark.driver.memory              4000M
spark.network.timeout 800
user-env 형식
user-env 형식
{
"configurations": [
{
"classification": "user-env:profile",
"properties": {
"env": "FOO=profile\nVAR=profile\nexport U=profile"
}
},
{
"classification": "user-env:ubuntu",
"properties": {
"env": "FOO=foo\nVAR=var\nexport U=N"
}
}
]
}

샘플 예제

샘플 예제
{
"configurations":
[
{
"classification": "mapred-site", -- xml 형식
"properties":
{
"yarn.app.mapreduce.am.job.client.port-range": "41000-43000"
}
},
{
"classification": "hadoop-env", -- env 형식
"properties":
{
"hadoop_env_hadoop_heapsize": 3001,
"hadoop_env_hadoop_namenode_heapsize": "-Xmx3002m",
}
},
{
"classification": "spark-defaults", -- properties 형식
"properties":
{
"spark.driver.memory": "4000M",
"spark.network.timeout": "800s"
}
},
{
"classification": "user-env:profile", -- user-env 형식
"properties":
{
"env": "FOO=profile\nVAR=profile\nexport U=profile"
}
},
{
"classification": "user-env:ubuntu",
"properties":
{
"env": "FOO=foo\nVAR=var\nexport U=N"
}
}
]
}

3. 작업 스케줄링 설정(선택)

Step. 1 클러스터 설정하기에서 클러스터 타입을 Core Hadoop으로 선택한 경우, 작업 스케줄링 설정을 진행합니다.
작업 스케줄링 설정 시 Hive 작업 / Spark 작업 / 설정 안함 중 작업 종류를 선택합니다. Hive 작업 / Spark 작업을 선택한 경우 작업의 스케줄링을 설정할 수 있으며, 설정 안함을 선택한 경우에는 작업 스케줄링 설정을 진행하지 않습니다.

  • 작업 스케줄링 설정 시 [새로고침] 아이콘을 클릭해 Object Storage 버킷 정보 가져옴
  • 관리 페이지를 클릭해 Object Storage 서비스로 이동

Hive 작업 스케줄링 설정

Hive 작업의 스케줄링을 설정합니다.

안내

Hive 옵션에서 버킷 선택 시, 스토리지 객체 관리자스토리지 객체 생성자는 객체 업로드는 가능하나 Object Storage 버킷의 접근 권한이 없어 콘솔에서 객체를 확인할 수 없습니다. 단, Object Storage API로 접근하는 경우에는 객체를 읽을 수 있습니다.

  1. 3단계: 작업 스케줄링 설정에서 작업 종류Hive 작업으로 선택합니다.

  2. Hive 작업의 스케줄링 정보를 입력합니다.

    구분설명
    작업 종류Hive 작업: 클러스터 생성 후 Hive 작업 실행
    실행 파일실행 파일 유형
    - 파일: Object Storage 버킷을 선택 후 실행할 파일 등록, 확장자가 .hql인 파일만 등록 가능
    - 텍스트: Hive 쿼리를 작성하여 작업에 전달
    Hive 옵션작업에 전달할 옵션값 작성(Hive 옵션 참고)
    - 파일: Object Storage 버킷을 선택 후 Hive 옵션 파일 등록
    - 텍스트: Hive 옵션 값을 작성하여 작업에 전달
    작업 종료 동작작업 종료 시 동작 선택
    - 실패 시 대기: 작업이 성공했을때만 클러스터를 종료함
    - 항상 대기: 작업 실패, 완료와 관계없이 클러스터를 종료하지 않음
    - 항상 종료: 작업 실패, 완료 시 클러스터 종료
    스케줄링 로그 파일 저장스케줄링 로그 파일 저장 선택
    - 저장하지 않음: 스케줄링 로그를 저장하지 않음
    - Object Storage에 저장: 원하는 버킷에 스케줄링 로고 파일 저장
    * 선택한 버킷명/log/ 경로에 yyyy-mm-dd.log 형식의 로그 파일 적재

Hive 옵션

Hive 옵션은 Hive 작업 실행시 사용할 hive configuration property 를 의미합니다.
아래와 같이 작성할 수 있으며, hive configuration property에 대한 자세한 내용은 공식 문서를 참고하시기 바랍니다.

--hiveconf hive.tez.container.size=2048 --hiveconf hive.tez.java.opts=-Xmx1600m

Spark 작업 스케줄링 설정

Spark 작업의 스케줄링을 설정합니다.

  1. 3단계: 작업 스케줄링 설정에서 작업 종류Spark 작업으로 선택합니다.

  2. Spark 작업의 스케줄링 정보를 입력합니다.

    구분설명
    작업 종류Spark 작업: 클러스터 생성 후 Spark 작업 실행
    실행 파일Object Storage 버킷을 선택 후 실행할 파일 등록
    - 확장자가 .jar인 파일만 등록 가능
    Spark-옵션 (선택)작업에 전달할 옵션값 작성
    - Spark 옵션 참고
    인수(선택)실행하는 .jar 파일에 전달할 인수값 작성
    - 파일: Object Storage 버킷을 선택 후 인수 파일 등록
    - 텍스트: 인수를 작성하여 작업에 전달
    배포 모드Spark를 실행할 모드 설정
    - {클라이언트 / 클러스터} 중 선택
    작업 종료 동작작업 종료 시 동작 선택
    - 실패 시 대기: 작업이 성공했을때만 클러스터를 종료함
    - 항상 대기: 작업 실패, 완료와 관계없이 클러스터를 종료하지 않음
    - 항상 종료: 작업 실패, 완료 시 클러스터 종료
    스케줄링 로그 파일 저장스케줄링 로그 파일 저장 선택
    - 저장하지 않음: 스케줄링 로그를 저장하지 않음
    - Object Storage에 저장: 원하는 버킷에 스케줄링 로고 파일 저장
    * 선택한 버킷명/log/ 경로에 yyyy-mm-dd.log 형식의 로그 파일 적재

Spark 옵션

Spark 옵션은 Spark 작업 파일을 spark-submit으로 실행할때 전달할 설정값을 의미합니다.
아래와 같이 작성할 수 있으며, 설정값에 대한 자세한 내용은 공식 문서를 참고하시기 바랍니다.

안내

단, --deploy-mode 구문을 포함할 경우 오류가 발생할 수 있습니다. deploy-mode는 화면에서 선택가능하니 화면의 기능을 이용해주세요.

--class org.apache.spark.examples.SparkPi --master yarn