Data/Flink
[Flink] Flink Run
코딩콩
2025. 7. 18. 10:47
Flink Run
flink run은 Flink 애플리케이션을 클러스터에 제출하고 실행하는 통합 스크립트입니다. 모든 클러스터 매니저(Standalone, YARN, Kubernetes)에서 일관된 인터페이스를 제공합니다.
$FLINK_HOME/bin/flink run
기본 문법과 구조
./bin/flink run \
--target <target-type> \
--class <main-class> \
--jobmanager <jobmanager-address> \
--parallelism <parallelism> \
--savepoint <savepoint-path> \
--allowNonRestoredState \
--detached \
<application-jar> \
[application-arguments]
주요 옵션들
필수 옵션
옵션 | 설명 | 예시 |
--target | 실행 대상 | local, yarn-cluster, kubernetes-cluster |
--class | 메인 클래스 | com.example.flink.UserFeatureJob |
<jar-file> | 애플리케이션 JAR 파일 | target/my-app.jar |
클러스터 관련 옵션
옵션 | 설명 | 기본값 | 예시 |
--jobmanager | JobManager 주소 | localhost:8081 | yarn-cluster |
--parallelism | 병렬 처리 수준 | 1 | 4 |
--detached | 백그라운드 실행 | false | --detached |
복구 관련 옵션
옵션 | 설명 | 예시 |
--savepoint | 복구할 세이브포인트 경로 | /tmp/savepoints/savepoint-123 |
--allowNonRestoredState | 복구 불가능한 상태 허용 | --allowNonRestoredState |
리소스 관련 옵션
옵션 | 설명 | 예시 |
--yarncontainer | YARN 컨테이너 수 | --yarncontainer 4 |
--yarnjobManagerMemory | JobManager 메모리 | --yarnjobManagerMemory 1024m |
--yarntaskManagerMemory | TaskManager 메모리 | --yarntaskManagerMemory 2048m |
의존성 관리 옵션
옵션 | 설명 | 예시 |
--classpath | 추가 클래스패스 | --classpath /path/to/deps |
실제 사용 예시
1. 로컬 실행
flink run \
--class com.example.flink.UserFeatureJob \
target/flink-ecommerce-features-1.0-SNAPSHOT.jar
2. YARN 클러스터 실행
flink run \
--target yarn-cluster \
--class com.example.flink.UserFeatureJob \
--parallelism 4 \
--detached \
target/flink-ecommerce-features-1.0-SNAPSHOT.jar
3. 세이브포인트에서 복구
flink run \
--target yarn-cluster \
--savepoint hdfs://namenode:port/savepoints/savepoint-123 \
--allowNonRestoredState \
--class com.example.flink.UserFeatureJob \
target/flink-ecommerce-features-1.0-SNAPSHOT.jar
4. Kubernetes 클러스터 실행
flink run \
--target kubernetes-cluster \
--class com.example.flink.UserFeatureJob \
--parallelism 8 \
--detached \
target/flink-ecommerce-features-1.0-SNAPSHOT.jar
Flink Run 작동 방식
1. flink run을 통해 Flink 애플리케이션을 실행/제출한다.
2. Target에 따라:
- Local: 로컬 미니 클러스터에서 실행
- YARN: YARN 클러스터에 JobManager/TaskManager 할당 요청
- Kubernetes: K8s 클러스터에 Pod 생성 요청
3. JobManager가 생성되고 JobGraph를 분석한다.
4. JobManager가 TaskManager들에게 작업 할당을 요청한다.
5. TaskManager들이 실제 데이터 처리를 수행한다.
6. 결과가 지정된 Sink로 출력된다.
Spark Submit vs Flink Run 비교
구분 | spark submit | flink run |
기본 명령어 | spark-submit | flink run |
클러스터 지정 | --master | --target |
배포 모드 | --deploy-mode | --detached |
병렬 처리 | --executor-cores | --parallelism |
복구 | 없음 | --savepoint |