본문 바로가기
IT

[Spark With Livy] Livy, Spark (개념, 특징, 장단점, 면접 대비)

by 유나니나노 2024. 4. 1.
반응형

 

Livy

Apache Livy는 Apache Spark 클러스터에서 대화형 Spark 작업을 제출하기 위한 서비스입니다. Livy는 REST 인터페이스를 통해 Spark 작업을 제출하고 관리할 수 있도록 하는 오픈 소스 REST 서비스로, Spark 클러스터와의 통신을 단순화하여 사용자가 Spark 작업을 더 쉽게 제출하고 관리할 수 있도록 돕습니다.

 

 

개념

  • REST API: Livy는 REST API를 통해 사용자가 HTTP 프로토콜을 사용하여 Spark 작업을 제출하고 관리할 수 있게 합니다. 이는 다양한 프로그래밍 언어와 플랫폼에서 쉽게 접근할 수 있게 해 줍니다.
  • 세션 관리: Livy는 Spark 세션을 생성하고 관리할 수 있습니다. 사용자는 이 세션을 통해 반복적인 작업을 수행할 때 Spark 컨텍스트를 재사용할 수 있으므로 초기화 시간을 절약할 수 있습니다.
  • 대화형 및 일괄 처리 작업 지원: Livy는 대화형(인터랙티브) 작업과 일괄 처리 작업 모두를 지원합니다. 대화형 모드에서는 사용자가 즉석에서 코드 조각을 실행하고 결과를 바로 확인할 수 있습니다. 일괄 처리 모드에서는 스크립트 전체를 제출하고 완료될 때까지 기다릴 수 있습니다.

 

특징

  • 언어 독립성: Livy는 Scala, Python, R 등 Spark가 지원하는 여러 언어로 작업을 제출할 수 있습니다.
  • 멀티 사용자 지원: 여러 사용자가 동시에 Spark 클러스터 리소스를 공유하고 사용할 수 있도록 지원합니다.
  • 보안: Kerberos 인증을 통해 보안 연결을 지원합니다.
  • 통합: Apache Zeppelin과 같은 다른 웹 애플리케이션과의 통합을 지원하여, 사용자가 웹 인터페이스를 통해 Spark 작업을 쉽게 제출하고 결과를 확인할 수 있도록 합니다.

Spark

Apache Spark는 대규모 데이터 처리를 위한 오픈 소스 분산 컴퓨팅 시스템입니다. Hadoop MapReduce를 대체할 수 있는 더 빠르고, 범용적인 데이터 처리 엔진으로 널리 사용됩니다. Spark는 메모리 내(인메모리) 계산을 통해 대용량 데이터셋을 처리할 때 높은 성능을 제공합니다. 이는 특히 반복적인 데이터 처리 작업에서 유리하며, 머신러닝, 데이터 마이닝, 실시간 데이터 처리 등 다양한 분야에서 활용됩니다.

 

개념

  • RDD(Resilient Distributed Dataset): Spark의 핵심 개념 중 하나로, 분산된 데이터 컬렉션을 추상화한 것입니다. RDD는 불변성을 가지며, 데이터의 병렬 처리를 가능하게 합니다. 고장 발생 시에도 자동으로 복구할 수 있는 내결함성을 제공합니다.
  • DataFrame: RDD를 기반으로 한 더 고수준의 추상화로, 구조화된 데이터를 다루기 위한 API입니다. 테이블 형태의 데이터를 쉽게 처리할 수 있으며, SQL 쿼리, 컬럼 기반의 데이터 접근 등 다양한 기능을 제공합니다.
  • DataSet: Spark 2.0에서 소개된 개념으로, DataFrame의 타입 안전 버전입니다. Scala와 Java에서 사용할 수 있으며, 효율적인 데이터 처리와 안전한 타입 체크를 지원합니다.

 

특징

  • 속도: 메모리 내 계산을 통해 MapReduce보다 훨씬 빠른 처리 속도를 제공합니다. 디스크 I/O를 최소화하고, 최적화된 엔진을 통해 빠른 데이터 처리가 가능합니다.
  • 다양한 언어 지원: Spark는 Scala, Java, Python, R 등 다양한 프로그래밍 언어를 지원합니다. 이를 통해 더 많은 사용자가 Spark를 사용할 수 있습니다.
  • 다양한 작업 처리: Spark는 배치 처리, 실시간 스트림 처리, 머신러닝, 그래프 처리 등 다양한 종류의 데이터 처리 작업을 지원합니다.
  • 확장성 및 내결함성: Spark는 클러스터 환경에서 실행되며, 수천 개의 노드에서 확장 가능합니다. 데이터의 복제 및 분산 처리를 통해 높은 내결함성을 제공합니다.
  • 통합 생태계: Spark는 Hadoop과 같은 기존 데이터 저장소와의 통합, SQL과 NoSQL 데이터베이스, 다양한 데이터 소스와의 연동 등 폭넓은 통합 생태계를 갖추고 있습니다.

Livy, Spark 활용 장단점

 

장점

  • 간편한 작업 제출과 관리: Livy를 사용하면 REST API를 통해 Spark 작업을 쉽게 제출하고 관리할 수 있습니다. 이는 다양한 프로그래밍 언어와 플랫폼에서 Spark 작업을 수행할 수 있게 해 주며, 작업 제출 프로세스를 간소화합니다.
  • 대화형 작업과 일괄 처리의 지원: Livy를 통해 대화형 작업과 일괄 처리 작업을 모두 지원함으로써, 사용자는 필요에 따라 실시간으로 코드를 실행하거나 배치 작업을 제출할 수 있습니다. 이는 더 유연한 데이터 처리 방법을 제공합니다.
  • 멀티 사용자 환경 지원: Livy는 여러 사용자가 동시에 Spark 클러스터에 접근하여 작업을 수행할 수 있도록 지원합니다. 이는 리소스를 효율적으로 활용하고, 팀 내에서의 협업을 용이하게 합니다.
  • 세션 관리 기능: Livy는 Spark 세션을 관리하는 기능을 제공하여, Spark 컨텍스트의 재사용을 가능하게 합니다. 이는 초기화 시간을 절약하고, 전반적인 작업 수행 시간을 단축시킬 수 있습니다.

단점

  • 추가적인 관리 필요성: Livy 서버를 운영하기 위해서는 별도의 관리가 필요합니다. 이는 시스템의 복잡성을 증가시키며, 관리자에게 추가적인 부담을 줄 수 있습니다.
  • 오버헤드 발생 가능성: REST API를 통한 작업 제출은 편리하지만, 네트워크 통신과 Livy 서버 자체의 오버헤드로 인해 성능 지연이 발생할 수 있습니다. 이는 매우 민감한 시간 제약을 가진 작업에서는 문제가 될 수 있습니다.
  • 보안 고려사항: Livy를 통해 Spark 작업을 원격으로 제출하고 관리할 때는 보안 설정과 인증 메커니즘에 주의해야 합니다. 잘못된 구성은 보안 취약점으로 이어질 수 있습니다.
  • 환경 설정과 튜닝: Livy와 Spark를 함께 사용하기 위해서는 두 시스템 간의 호환성을 확보하고 최적의 성능을 위한 환경 설정과 튜닝이 필요합니다. 이 과정은 시간이 소요될 수 있으며, 특히 대규모 클러스터에서는 더욱 복잡할 수 있습니다.

 

면접 대비

  • Livy와 Spark를 사용하는 이점에 대해 설명해 주세요.
    • Livy와 Spark를 함께 사용하면 원격 또는 대화형 방식으로 Spark 작업을 제출하고 모니터링할 수 있습니다. 이는 사용자가 별도의 Spark 클러스터에 접근하여 대규모 데이터 처리를 수행할 수 있도록 합니다. 또한, Livy를 통해 RESTful API를 사용하여 다양한 언어로 Spark 작업을 제출할 수 있어서, 다양한 개발 환경에서의 유연한 활용이 가능합니다.
  • Livy와 Spark를 사용할 때 발생할 수 있는 주요 문제 및 해결책에 대해 설명해 주세요.
    • Livy와 Spark를 사용하는 동안 가장 흔한 문제는 클러스터의 자원 관리와 성능 최적화입니다. 이를 해결하기 위해선 Livy 인스턴스와 Spark 클러스터의 구성을 최적화하고, 사용 패턴에 따라 적절한 자원 할당 및 조정을 수행해야 합니다. 또한 작업의 모니터링과 디버깅을 위해 로깅 및 모니터링 도구를 적절히 활용하는 것이 중요합니다.
  • Livy와 Spark를 사용하여 처리한 데이터의 양과 유형에 대해 설명해 주세요.
    • 제가 참여한 프로젝트에서는 Livy와 Spark를 사용하여 대규모의 구조화된 데이터를 처리했습니다. Iceberg를 활용하여 데이터를 처리하였으며, Spark를 활용하여 사용자 조작 테이블을 생성하는 과정을 처리했습니다.
  • Livy와 Spark를 통해 얻은 경험 중에서 가장 큰 교훈은 무엇인가요?
    • Livy와 Spark를 사용하면 대용량 데이터를 효과적으로 처리하고 분석할 수 있는 강력한 도구를 얻을 수 있지만, 성능 최적화와 자원 관리가 매우 중요하다는 것을 배웠습니다. 또한 Livy를 통해 RESTful API를 사용하여 Spark 작업을 제출하고 모니터링하는 경험은 다양한 개발 환경에서 유용하게 활용될 수 있음을 깨달았습니다.

 

오늘은 Spark와 Livy를 알아보았습니다.

관련해서 ElasticSearch도 함께 보시면 좋습니다!

2024.03.25 - [IT] - [엘라스틱서치] ElasticSearch란? (개념, 장단점, 면접 질문)

 

[엘라스틱서치] ElasticSearch란? (개념, 장단점, 면접 질문)

ElasticSearchElasticsearch는 Apache Lucene 기반의 오픈소스, 분산, RESTful 검색 엔진입니다. 대량의 데이터를 신속하고 거의 실시간에 가까운 속도로 저장, 검색, 분석할 수 있도록 설계되었습니다. Elasticse

yuna-ninano.tistory.com

반응형