해당 내용은 Datacamp의 Data engineering track을 정리했습니다.
Data Processing in Shell의 chapter 4에 대한 내용입니다.
해당 포스팅에는 아래의 내용을 포함하고 있습니다.
- command-line에서 파이썬 실행하기
- pip로 패키지 설치하기
- job scheduler: cron
1. Python on the command line
데이터 처리는 command-line에서 하는 것이 생산적이지만 예측 모델링과 같은 복잡한 작업은 Python에서 진행하는것이 더 쉽습니다. 이번 강의에서는 command-line에서 Python을 실행하여 두 개의 장점을 모두 활용할 수 있는 방법을 소개합니다. Python은 MacOS나 Linux에는 이미 설치가 되어 제공되지만 Windows의 경우 별도 설치를 진행해야 합니다. Python과 인터렉티브하게 사용하는 가장 일반적인 방법은 jupyter notebook을 활용하는 것입니다. 좀 더 효율적인 방법으로는 command-line에서 Python을 실행하는 것입니다.
하나의 컴퓨터에는 여러 개의 파이썬이 존재할 수 있습니다. 이런 경우에는 which 명령어를 사용해서 어디 경로에 있는 파이썬을 사용할 수 있는 지 알 수 있습니다.
기본적으로 python을 command-line에서 활용하기 위해서는 command-line에 python이라고 치면 됩니다. 그러면 파이썬의 버전과 함께 실행된 것을 확인할 수 있습니다. python이 실행된 동안에는 python 구문만 사용할 수 있습니다. 파이썬 세션을 종료하고 싶을 때에는 exit()를 통해 종료할 수 있습니다. interactive session을 사용하는 것은 쉽지만 재사용성에는 도움이 되지 않습니다.
동일한 파이썬 명령을 여러 번 실행하기 위해서는 파이썬 스크립트(.py)에 코드를 저장하고 해당 스크립트를 호출하여 사용하는 것이 좋습니다.
python hello.py
주의해야 할 것은 해당 py 파일이 현재 경로에 있는 지를 확인해야 합니다.
2. Python package installation with pip
파이썬에는 Built-in functions과 math, os와 같은 라이브러리가 기본적으로 설치되어 있습니다. scikit-learn과 같은 라이브러리는 기본적으로 깔려있지 않습니다. 그래서 설치하기 위해 command-line에 pip 명령어를 사용해야 합니다. pip를 사용할 때에는 Python 버전과 호환이 되어야 합니다. pip를 사용할 때 warning 메세지로 업그레이드 해야한다고 나올 수 있습니다. 그럴 땐, pip install --upgrade pip로 업그레이드를 할 수 있습니다.
pip로 패키지를 설치하기 전에는 항상 어떤 라이브러리가 설치가 되어 있는지 확인하는 것이 중요합니다. 그럴 땐, pip list 명령을 통해서 확인할 수 있습니다.
pip를 통해서 설치할 때에는 pip install 패키지이름 으로 설치할 수 있습니다. 또한 호환성의 문제로 이전의 버전이 필요하다면 패키지 이름==원하는 버전을 넣어주시면 됩니다. 다양한 패키지는 --upgrade 옵션을 통해서 최신 버전으로 업데이트할 수 있습니다. 여러 가지의 패키지를 동시에 설치할 때에는 다양한 패키지를 공백을 통해서 구분해주면 됩니다.
마지막으로 requirements.txt를 통해서도 패키지를 설치할 수 있습니다. 한 줄에 한 개씩 패키지를 포함해서 txt파일로 만들고 pip install -r requirements.txt를 통해 txt 파일 내부의 모든 패키지를 설치합니다.
3. Data job automation with cron
앞에서 배운 모든 과정을 자동화하여 설정하는 방법에 대해서 배웁니다. 이 때 필요한 것이 스케쥴러입니다. 스케쥴러는 사전에 결정된 순서에 따라 Python 모델과 같은 작업을 실행하고 데이터 파이프라인을 자동화할 수 있습니다. 대표적으로 Airflow, Luigi, Rundeck이 있습니다. 이번 강의에서는 간단하고 무료로 활용할 수 있는 cron을 소개합니다. cron은 Unix계열 OS에 설치된 시간 기반 작업 스케쥴러입니다. MacOS나 Linux 시스템에는 존재하지만 Windows에는 존재하지 않습니다. Windows 사용자의 경우에는 Cygwin을 설치하여 cron을 사용할 수 있습니다. cron은 시스템 유지 관리 작업, bash 스크립트, 파이썬 파일까지 다양한 작업을 자동화하는 데 사용할 수 있습니다.
작업을 예약하기 위해서는 모든 작업, 작업 실행 시기 및 일정과 관련된 지침을 기록할 파일인 crontab이 필요합니다.
# 현재 cron을 통해 예약된 모든 작업 표시
crontab -l
작업을 예약하기 위해서 다양한 방법을 사용할 수 있습니다. 텍스트 에디터(nano, vim)를 활용해서 crontab을 수정합니다. 또는 echo 명령어를 통해 command-line에서 추가할 수 있습니다.
# 작업 추가하기
echo "* * * * * python create_model.py" | crontab
cron에서 예약할 수 있는 가장 작은 단위는 1분입니다. 매분마다 실행하는 작업이 가장 빈번하게 발생할 수 있는 작업이 됩니다. 위에서 명령어를 보면, *이 5개가 존재하는 데 각 위치는 아래의 규칙에 따라 지정할 수 있습니다.