클러스터 생성
클러스터란 Virtual Machine을 이용하여 프로비저닝된 노드들의 집합입니다.
Hadoop Eco 서비스에서 클러스터를 생성하는 방법은 다음과 같습니다.
클러스터 생성 시 약 20~25분 정도가 소요됩니다.
Step 1. 클러스터 설정하기
Hadoop 클러스터 생성을 위한 기본 정보를 설정합니다.
-
카카오클라우드 콘솔 > Analytics > Hadoop Eco 메뉴로 이동합니다.
-
Cluster 메뉴에서 우측 상단에 위치한 [클러스터 만들기] 버튼을 클릭합니다.
-
1단계: 클러스터 설정에서 정보를 입력하고 [다음] 버튼을 클릭합니다.
항목 구분 설명 클러스터 이름 예시: my-cluster-01
- 같은 프로젝트 내에서 중복된 클러스터 이름은 사용 불가
- 클러스터 이름 기반으로 VM 생성
- 마스터 노드:HadoopMST-{클러스터 이름}-{번호}
형식으로 생성
- 워커 노드:HadoopWRK-{클러스터 이름}-{번호}
형식으로 생성클러스터 구성 클러스터 버전 클러스터 버전 선택 클러스터 유형 - 클러스터 버전에 따라 클러스터 유형 선택
- 자세한 설명은 클러스터 버전 및 유형 참고클러스터 가용성 클러스터의 운영 안정성을 위해 가용성 유형으로 표준과 고가용성 유형을 제공
- 표준(Single, 마스터 노드 인스턴스 1개): 리소스 매니저, 네임 노드가 1개 실행됨
ㄴ 단일 마스터 노드를 생성, 소규모 작업에 적합
- 고가용성 (HA, 마스터 노드 인스턴스 3개): 리소스 매니저, 네임 노드가 HA 모드로 실행됨
ㄴ 3개의 마스터 노드를 생성, 재부팅 등이 발생해도 중단없는 작업 가능관리자 설정 관리자 ID 관리자 ID를 입력 관리자 비밀번호 관리자 비밀번호를 입력
- 비밀번호 재설정 방법에 대한 자세한 설명은 Hue 비밀번호 재설정 참고
- Ranger 적용 시 별도 암호 생성 규칙을 준수해야함. 자세한 설명은 레인저(Ranger) 문서 참고관리자 비밀번호 확인 관리자 비밀번호와 동일하게 입력 VPC 설정 VPC와 서브넷을 선택
- [새로고침] 아이콘을 클릭해 네트워크 정보를 가져옴
- 관리 페이지를 클릭해 VPC > Network로 이동
- 외부에서 접근 가능한 퍼블릭 IP는 인스턴스 생성 후 [퍼블릭 IP 연결] 메뉴에서 할당보안 그룹 새로운 보안 그룹을 생성: 보안 그룹 이름을 입력하여 새로 생성
- Hadoop Eco를 위한 인바운드/아웃바운드 규칙을 자동으로 설정
기존에 생성된 보안 그룹을 선택: 인바운드/아웃바운드 규칙을 확인
- [새로고침] 아이콘을 클릭해 네트워크 정보를 새로 가져옴
- 자세한 설명은 보안 그룹 참고
보안 그룹 설정
Hadoop Eco 서비스에서 클러스터를 설치하기 위해 컴포넌트가 사용하는 포트를 보안 그룹에 설정해야 합니다. 컴포넌트 구성을 위해 특정 포트는 반드시 오픈해야 합니다. 적용된 정책 리스트에서 인스턴스에 적용될 정책을 미리 확인할 수 있습니다.
- 보안 그룹 자동 생성 시, 보안 그룹 이름의 기본값은 생성 날짜, 클러스터 버전, 유형에 따라 자동으로 지정됩니다.
- 보안 그룹 이름 예시:
{cluster_name}-HDE-{version}-{type}
- 인스턴스를 생성할 때는 1개의 보안 그룹만 설정할 수 있으며 추가적인 보안 그룹 설정은 생성 이후 가능합니다.
- 인바운드 규칙
- 아웃바운드 규칙
클러스터 생성 시 보안 그룹을 자동으로 생성합니다. 자동 생성된 보안 그룹에서 설정되는 포트 정보는 다음과 같습니다.
프로토콜 | 패킷 출발지 | 포트 번호 | 정책 설명 |
---|---|---|---|
ALL | VPC subnet CIDR | ALL | hadoop eco internal |
아웃바운드는 '전체 허용'으로 설정합니다.
클러스터 버전 및 유형
클러스터 버전 | 클러스터 유형 | 옵션 |
---|---|---|
Hadoop Eco 1.0.1 (Trino, Dataflow 유형 미지원) | Core Hadoop | Core Hadoop (Hadoop 2.10.1 HDFS, YARN, Spark 2.4.6) - Hadoop과 연동해 사용할 수 있는 분석 엔진 Apache Spark, Hive를 함께 설치 |
HBase | HBase (Hadoop 2.10.1, HBase 1.4.13) - Hadoop 기반 분산 데이터베이스인 Apache HBase를 함께 설치 | |
Hadoop Eco 1.1.2 | Core Hadoop | Core Hadoop (Hadoop 2.10.2 HDFS, YARN, Spark 2.4.8) |
HBase | HBase (Hadoop 2.10.2, HDFS, YARN, HBase 1.7.1) | |
Trino | Trino (Hadoop 2.10.2, HDFS, YARN, Trino 377) | |
Dataflow | Dataflow (Hadoop 2.10.2, HDFS, YARN, Kafka 3.4.0, Druid 25.0.0, Superset 2.1.1) | |
Hadoop Eco 2.0.1 | Core Hadoop | Core Hadoop (Hadoop 3.3.4 HDFS, YARN, Spark 3.2.2) |
HBase | HBase (Hadoop 3.3.4 HDFS, YARN, HBase 2.4.13) | |
Trino | Trino (Hadoop 3.3.4, HDFS, YARN, Trino 393) | |
Dataflow | Dataflow (Hadoop 3.3.4, HDFS, YARN, Kafka 3.4.0, Druid 25.0.0, Superset 2.1.1) | |
Hadoop Eco 2.1.0 | Core Hadoop | Core Hadoop (Hadoop 3.3.6 HDFS, YARN, Spark 3.5.2) |
HBase | HBase (Hadoop 3.3.6 HDFS, YARN, HBase 2.6.0) | |
Trino | Trino (Hadoop 3.3.6, HDFS, YARN, Trino 393) | |
Dataflow | Dataflow (Hadoop 3.3.6, HDFS, YARN, Kafka 3.8.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로 이동 | |
사용자 스크립트 (선택) | 인스턴스 시작 시, 사용자 데이터를 실행하여 초기 환경 구성을 자동으로 실행하는 스크립트 |
신규 키 페어 생성
클러스터 만들기에서 키 페어를 생성하는 방법은 다음과 같습니다.
-
신규 키 페어 생성을 선택하고, 키 페어 이름을 입력합니다.
-
[키 페어 생성 및 다운로드] 버튼을 클릭합니다.
-
입력한 키 페어 이름으로
.pem
확장자의 프라이빗 키 키 파일이 다운로드됩니다.
다운로드한 프라이빗 키 파일은 안전하게 보관하시기 바랍니다.
Step 3. 상세 설정 (선택)
1. 서비스 연동 설정하기(선택)
클러스터 서비스 연동에 대한 설정을 적용합니다. 카카오클라우드에서 제공하는 Data Catalog 서비스와 연동을 설정할 수 있습니다.
서비스 연동을 하지 않을 경우 표준(Single) 유형은 마스터 1번 노드에, HA 유형은 마스터 3번 노드에 자체적으로 MySQL을 설치하여 메타스토어로 사용하게 됩니다.
서비스 연동 설정에서 모니터링 에이전트 설치 여부를 선택하고, 서비스 연동을 설정합니다,
항목 | 설명 |
---|---|
모니터링 에이전트 설치 | 모니터링 에이전트 설치 여부를 선택 |
서비스 연동 | 연동하지 않음 / Data Catalog 연동 / 외부 Hive 메타 스토어 연동 중 선택 |
모니터링 에이전트 설치
모니터링 에이전트 설치 시, Hadoop Eco > 클러스터 상세 페이지 > 모니터링 탭에서 Nodes 모니터링을 추가로 확인할 수 있습니다.
- 노드별 CPU 사용량(%)
- 노드별 Memory 사용량(%)
Data Catalog 연동
-
Data Catalog 연동하기 위해 사전에 생성한 Data Catalog를 준비합니다. Catalog 생성에 대한 자세한 설명은 카탈로그 생성을 참고하시기 바랍니다.
-
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"
}
}
]
}
-
Data Catalog와 연동하기 위해 클러스터 만들기 > 3단계: 상세 설정(선택) 에서 Data Catalog 연동을 선택합니다.
- 서비스 연동 항목에서 Data Catalog 연동을 선택합니다.
- Data Catalog 연동 항목에서 하둡 네트워크/서브넷 정보를 확인 후, 원하는 카탈로그를 선택합니다.
외부 Hive 메타 스토어 연동
-
외부 Hive 메타 스토어 연동을 위해 MySQL을 생성합니다. MySQL 생성에 대한 자세한 설명은 MySQL 인스턴스 그룹 생성을 참고하시기 바랍니다.
-
MySQL과 연동하기 위해 클러스터 만들기 > 3단계: 상세 설정(선택) 에서 외부 Hive 메타 스토어 연동을 선택합니다.
- 서비스 연동 항목에서 MySQL이 설치된 인스턴스을 선택합니다.
- 인스턴스 선택 후 해당 MySQL의 데이터베이스 이름, MySQL ID, 비밀번호를 입력합니다.
2. 클러스터 상세 설정(선택)
HDFS 블록 크기, 복제 개수 설정과 클러스터의 구성 설정을 적용할 수 있습니다. HDFS 설정값이 클러스터 구성 설정보다 우선합니다.
항목 | 설명 |
---|---|
HDFS 설정 | HDFS 블록 크기 - hdfs-site.xml의 dfs.blocksize 값 설정 - 1~ 1,024MB 크기로 볼륨 생성(기본값: 128MB) HDFS 복제 개수 - hdfs-site.xml의 dfs.blockreplication 값 설정 - 1 ~ 500개로 복제 개수 설정 - 복제 개수는 워커 노드 인스턴스 개수 이하여야 함 |
클러스터 구성 설정(선택) | 클러스터를 구성한 컴포넌트의 설정을 입력 - Json 파일을 업로드하거나 설정값을 직접 입력 |
클러스터 구성 설정은 키-값 쌍으로 된 json 파일로 설정합니다. configurations
는 리스트 형식이고, classification
에 파일명, properties
에 설정 명을 입력받습니다. 기본 입력 방법은 다음과 같습니다
-- 입력 방법
{
"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/conf | hadoop_env_hadoop_heapsize | 2048 |
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_level | INFO, DRFA, console | ||
hadoop_env_hadoop_security_log_level | INFO, DRFAS | ||
hadoop_env_hadoop_audit_log_level | INFO, RFAAUDIT | ||
mapred-env | /etc/hadoop/conf | mapred_env_hadoop_job_historyserver_heapsize | 2000 |
hive-env | /etc/hive/conf | hive_env_hive_metastore_heapsize | 2048 |
hive_env_hiveserver2_heapsize | 2048 | ||
hive_env_hadoop_client_opts | "-Xmx2048m" | ||
hbase-env | /etc/hbase/conf | hbase_env_hbase_master_heapsize | "-Xmx2048m" |
hbase_env_hbase_regionserver_heapsize | "-Xmx2048m" | ||
spark-defaults | /etc/spark/conf | spark_defaults_spark_driver_memory | 2g |
trino-config | /etc/trino/conf | trino_jvm_config_heap | -Xmx10G |
xml
classification | 생성 위치 | 참조 위치 | 비고 |
---|---|---|---|
core-site | /etc/hadoop/conf | core-default.xml | |
hdfs-site | /etc/hadoop/conf | hdfs-default.xml | |
httpfs-site | /etc/hadoop/conf | ServerSetup.html | |
mapred-site | /etc/hadoop/conf | mapred-default.xml | |
yarn-site | /etc/hadoop/conf | yarn-default.xml | |
capacity-scheduler | /etc/hadoop/conf | CapacityScheduler.html | yarn 스케줄러 설정 |
tez-site | /etc/tez/conf | TezConfiguration.html | |
hive-site | /etc/hive/conf | Hive configuration properties | |
hiveserver2-site | /etc/hive/conf | Setting up hiveserver2 | hiveserver2 전용 설정 |
properties
classification | 생성 위치 | 설명 |
---|---|---|
spark-defaults | /etc/spark/conf | 스파크 설정값을 키[탭]값으로 변환되어 입력합니다. |
user-env
classification | 생성 위치 | 설명 |
---|---|---|
user-env:profile | /etc/profile | 전체 변수 추가 |
user-env:[사용자명] | ~/.bashrc | 사용자의 bashrc 에 환경 변수 추가 |
xml 형식
<configuration>
<property>
<name>yarn.app.mapreduce.am.job.client.port-range</name>
<value>41000-43000</value>
</property>
</configuration>
env 형식
...
export HADOOP_HEAPSIZE="3001"
...
properties 형식
spark.driver.memory 4000M
spark.network.timeout 800
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로 접근하는 경우에는 객체를 읽을 수 있습니다.
-
3단계: 작업 스케줄링 설정에서 작업 종류를 Hive 작업으로 선택합니다.
-
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 작업의 스케줄링을 설정합니다.
-
3단계: 작업 스케줄링 설정에서 작업 종류를 Spark 작업으로 선택합니다.
-
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