Apache livy
Apache livy는 Spark 작업을 관리하고 상호작용하기 위한 REST 인터페이스를 제공하는 오픈소스 서비스임.
Livy는 Apache Spark와 외부 애플리케이션 간의 통신을 간소화하며, Spark 클러스터를 관리할 수 있는 고수준의 API를 제공함.
이를 통해 애플리케이션은 Spark와 보다 쉽게 통합할 수 있으며, 특히 웹 기반의 인터페이스나 애플리케이션에서 유용하게 사용됨.
Apache livy의 주요 기능
1. REST API 기반의 Spark 세션 관리
Livy는 사용자가 REST API를 통해 Spark 세션을 생성하고 관리할 수 있도록 도와줌.
Spark 세션을 생성하면 Livy는 이 세션을 백그라운드에서 관리하며, 다양한 프로그래밍 언어(Java, Scala, Python, R)를 사용한 Spark 작업을 실행할 수 있음.
2. 멀티 언어 지원
Livy는 Python, Scala, R 등 Spark에서 사용할 수 있는 다양한 언어를 지원함.
사용자는 해당 언어로 코드를 작성해 Spark 작업을 제출하고 결과를 받을 수 있음.
3. 비동기 작업 제출
Livy는 작업을 비동기적으로 제출할 수 있게 함.
이는 사용자가 Spark 작업을 제출한 후 작업이 완료될 때까지 기다릴 필요 없이, 작업을 제출한 후 필요에 따라 결과를 폴링하거나 알림을 받을 수 있게 함.
4. 세션 상태 모니터링
Livy는 Spark 세션 및 작업의 상태를 모니터링하는 기능을 제공함.
사용자는 API를 통해 현재 세션 상태나 작업 상태를 조회하고, 이를 기반으로 다음 작업을 계획할 수 있음.
5. 작업 배포의 간소화
Livy를 사용하면, 사용자는 복잡한 클라이언트 설정이나 환경 구성을 피하고 REST API 호출만으로 작업을 제출할 수 있음.
이는 특히 분산된 시스템에서 매우 유용함.
웹 애플리케이션에서 직접 Spark 작업을 실행하려면 일반적으로 클라이언트 쪽에서 복잡한 Spark 환경 설정이 필요하지만, Livy는 이러한 복잡성을 숨겨줌.
6. 클러스터와 상호작용
Livy는 YARN, Kubernetes와 같은 다양한 클러스터 관리 도구와 연동이 가능하며, 이를 통해 분산된 Spark 클러스터 환경에서도 안정적으로 동작할 수 있음.
클러스터 상에서 자원을 할당하고 Spark 작업을 효율적으로 분산 처리할 수 있게 도와줌.
7. 자동 재시작
Livy는 작업이나 세션이 실패할 경우 자동으로 재시작하는 기능을 지원함.
이는 장기 실행 작업이나 불안정한 환경에서 유용하게 사용될 수 있음.
Apache livy 아키텍처
Livy는 크게 두 가지 주요 컴포넌트로 나눌 수 있음.
1. Livy Server
Livy 서버는 Spark 작업을 관리하는 백엔드로, REST API 요청을 처리함.
Livy 서버는 작업 제출, 세션 생성, 세션 종료 등의 모든 상호작용을 처리하고, Spark 클러스터에 직접 명령을 전달함.
Livy 서버는 클라이언트와 클러스터 간의 중재자 역할을 수행함.
2. Livy Client
클라이언트는 Livy 서버와 상호작용하는 애플리케이션 또는 사용자임.
클라이언트는 REST API를 통해 Spark 세션을 생성하고 작업을 제출하며, 작업 상태를 모니터링하거나 결과를 받을 수 있음.
Apache livy 사용 시나리오
1. 웹 기반 인터페이스와 Spark 통합
Livy는 웹 애플리케이션과 Spark의 통합에 유리함.
웹 애플리케이션에서 사용자 요청에 따라 Spark 작업을 실행하고, 실시간으로 결과를 받을 수 있음.
Spark의 복잡한 설정을 웹 애플리케이션에 노출하지 않고 간단히 REST API 호출을 통해 Spark 작업을 관리할 수 있음.
2. 대규모 데이터 처리
Livy는 YARN 또는 Kubernetes 클러스터 상에서 분산 환경에서 실행할 때 유리함.
클러스터 자원 관리와 작업 분배를 Livy를 통해 쉽게 할 수 있어, 데이터 과학자들이 대규모 데이터 세트로 작업할 때 매우 유용함
3. 노트북 기반 데이터 분석
Livy는 Jupyter와 같은 노트북 기반 분석 도구와도 연동할 수 있음.
데이터 과학자는 Spark 클러스터 상에서 직접적으로 대화형 분석을 수행할 수 있음.
Livy는 여러 사용자가 동시에 Spark 클러스터를 사용할 수 있게 하며, 사용자 간의 세션을 분리하여 관리할 수 있음.
Apache livy 장점과 단점
장점
1. REST API를 통한 간편한 통합
애플리케이션과 Spark 간의 통합이 간소화되어 Spark 환경을 복잡하게 설정하지 않고도 작업을 제출할 수 있음.
2. 멀티 언어 지원
다양한 프로그래밍 언어를 지원하여 사용자 환경에 맞게 작업을 실행할 수 있음.
3. 비동기 처리
작업을 비동기적으로 제출하고, 폴링을 통해 결과를 확인할 수 있어 애플리케이션 개발에 유연성을 제공함.
4. 세션 관리
세션 상태를 관리하고 모니터링하는 기능을 제공하여 Spark 작업의 실행 상태를 실시간으로 확인할 수 있음.
단점
1. 추가적인 레이어
Livy는 Spark와 직접 상호작용하는 것이 아니라 중간에 위치하기 때문에 성능에 일부 오버헤드가 발생할 수 있음.
2. 제한적인 성능
Livy가 제공하는 API는 Spark의 모든 기능을 지원하지 않으며, 복잡한 작업의 경우 직접 Spark API를 사용하는 것이 더 유리할 수 있음.
3. 성숙도
Apache Livy는 여전히 상대적으로 성숙도가 낮은 프로젝트로, 일부 안정성 문제나 버그가 있을 수 있음.
Apache livy 결론
Apache Livy는 Spark와 외부 시스템 간의 상호작용을 간소화하는 데 매우 유용한 도구임.
웹 애플리케이션, 데이터 분석 도구, 그리고 분산 환경에서 Spark 작업을 관리하고 실행하는 데 적합하며, REST API를 통한 간편한 통합과 다중 언어 지원, 세션 관리 기능을 제공하여 Spark 사용의 복잡성을 크게 줄여줌.
'Data Engineering > Zeppelin' 카테고리의 다른 글
[Zeppelin] 웹소켓 (2) | 2024.10.27 |
---|---|
[Zeppelin] Zeppelin에서 Flink를 사용하는 방법 (1) | 2024.10.17 |
[Zeppelin] 제플린 실행 프로세스 (0) | 2024.10.11 |
[Zeppelin] 분산 시스템 (4) | 2024.10.11 |
[Zeppelin] Helium (1) | 2024.10.02 |