Luigi는 배치 작업의 복잡한 파이프라인을 구축하는 데 도움이 되는 Python(3.7, 3.8, 3.9, 3.10, 3.11, 3.12 테스트됨) 패키지입니다. 종속성 해결, 워크플로 관리, 시각화, 오류 처리, 명령줄 통합 등을 처리합니다.
pip install luigi
실행하여 PyPI에서 최신 안정 버전을 설치하세요. 최신 릴리스에 대한 문서는 readthedocs에서 호스팅됩니다.
TOML 기반 구성 지원으로 Luigi를 설치하려면 pip install luigi[toml]
실행하세요.
최첨단 코드의 경우 pip install git+https://github.com/spotify/luigi.git
. Bleeding Edge 문서도 제공됩니다.
Luigi의 목적은 일반적으로 장기 실행 배치 프로세스와 관련된 모든 배관을 해결하는 것입니다. 많은 작업을 연결하고 자동화하려고 하면 실패가 발생 합니다 . 이러한 작업은 무엇이든 될 수 있지만 일반적으로 Hadoop 작업, 데이터베이스 간 데이터 덤프, 기계 학습 알고리즘 실행 등과 같은 장기 실행 작업입니다.
Hive, Pig 또는 Cascading과 같이 데이터 처리의 하위 수준 측면에 초점을 맞춘 다른 소프트웨어 패키지가 있습니다. Luigi는 이를 대체하는 프레임워크가 아닙니다. 대신 각 작업이 Hive 쿼리, Java의 Hadoop 작업, Scala 또는 Python의 Spark 작업, Python 코드 조각, 데이터베이스에서 테이블 덤프 등이 될 수 있는 많은 작업을 함께 연결하는 데 도움이 됩니다. 수천 개의 작업으로 구성되고 완료하는 데 며칠 또는 몇 주가 걸리는 장기 실행 파이프라인을 쉽게 구축할 수 있습니다. Luigi는 작업 자체와 해당 종속성에 집중할 수 있도록 많은 작업 흐름 관리를 처리합니다.
원하는 거의 모든 작업을 구축할 수 있지만 Luigi에는 사용하는 몇 가지 일반적인 작업 템플릿이 포함된 도구 상자 도 함께 제공됩니다. 여기에는 Hadoop뿐만 아니라 Hive 및 Pig 작업에서 Python mapreduce 작업을 실행하기 위한 지원이 포함됩니다. 또한 HDFS에 대한 파일 시스템 추상화와 모든 파일 시스템 작업이 원자적임을 보장하는 로컬 파일이 함께 제공됩니다. 이는 부분 데이터가 포함된 상태에서 데이터 파이프라인이 충돌하지 않는다는 것을 의미하므로 중요합니다.
Luigi 서버에는 웹 인터페이스도 함께 제공되므로 모든 작업을 검색하고 필터링할 수 있습니다.
Luigi가 수행하는 작업에 대한 아이디어를 제공하기 위해 이것은 우리가 프로덕션에서 실행 중인 작업의 스크린샷입니다. Luigi의 시각화 도구를 사용하여 작업 흐름의 종속성 그래프에 대한 멋진 시각적 개요를 얻습니다. 각 노드는 실행해야 하는 작업을 나타냅니다. 녹색 작업은 이미 완료되었지만 노란색 작업은 아직 실행되지 않았습니다. 이러한 작업의 대부분은 Hadoop 작업이지만 로컬에서 실행되고 데이터 파일을 구축하는 작업도 있습니다.
개념적으로 Luigi는 특정 작업이 있고 이러한 작업이 차례로 다른 작업에 종속될 수 있는 GNU Make와 유사합니다. Oozie 및 Azkaban과도 몇 가지 유사점이 있습니다. 한 가지 주요 차이점은 Luigi가 Hadoop용으로 특별히 제작된 것이 아니라 다른 종류의 작업으로 쉽게 확장할 수 있다는 것입니다.
Luigi의 모든 것은 Python으로 되어 있습니다. XML 구성이나 유사한 외부 데이터 파일 대신 Python 내에 종속성 그래프가 지정됩니다. 이를 통해 종속성은 날짜 대수 또는 동일한 작업의 다른 버전에 대한 재귀 참조를 포함할 수 있는 작업의 복잡한 종속성 그래프를 쉽게 구축할 수 있습니다. 그러나 워크플로는 Pig 스크립트 실행 또는 scp'ing 파일 실행과 같이 Python에 없는 작업을 트리거할 수 있습니다.
우리는 Spotify 내부적으로 Luigi를 사용하여 복잡한 종속성 그래프로 구성된 수천 개의 작업을 매일 실행합니다. 이러한 작업의 대부분은 Hadoop 작업입니다. Luigi는 추천, 상위 목록, A/B 테스트 분석, 외부 보고서, 내부 대시보드 등을 포함한 모든 종류의 기능을 지원하는 인프라를 제공합니다.
Luigi는 오픈 소스이고 등록 장벽이 없기 때문에 정확한 Luigi 사용자 수는 알 수 없습니다. 그러나 고유한 기여자의 수를 기준으로 보면 수백 개의 기업이 이를 사용할 것으로 예상됩니다. 일부 사용자는 Luigi에 대한 블로그 게시물을 작성하거나 프레젠테이션을 열었습니다.
더 많은 회사에서 Luigi를 사용하고 있지만 아직 이에 대해 글을 쓸 기회가 없었습니다.
여기에 귀사를 추가하게 되어 매우 기쁩니다. GitHub에 PR을 보내세요.
Luigi는 주로 Erik Bernhardsson과 Elias Freider가 Spotify에서 제작했습니다. 2012년 말 오픈 소스 이후 많은 사람들이 기여해 왔습니다. Arash Rouhani는 2015년부터 2019년까지 수석 관리자였으며 현재 Spotify의 데이터 팀이 Luigi를 관리하고 있습니다.