( 참고 : “FastCampus, 데이터 엔지니어링 올인원” )

[ Data Engineering ]

Scheduling

1. Crontab

데이터는 지속적으로 변화하고 있다. 이것을 우리가 매일 같은 시간에 컴퓨터를 키고 할 수 없기 때문에, 이를 잘 자동화해야한다. 즉, 우리가 작성한 코드를 일정한 스케줄을 가지고 run이 되도록해야한다. 이러한 스케쥴링(scheduling)을 도와주는 것이 Crontab이다!

figure2


Example

figure2


2. EC2 서버 상에서 Crontab 사용하기

**(1) EC2 : 가상 서버 **

( 우리가 가진 노트북의 전원은 켜져 있지 않은 이상 돌아가고 있지 않는다. 서비스가 24시간 늘 잘 작동하도록 가상 서버인 EC2를 서버를 사용한다. )


(2) Lambda : 특정 event가 발생할 경우 compute

  • 관리/스케줄링이 편리함!


EC2

figure2

figure2

figure2

figure2

figure2

figure2

  • public DNS : 주소


.pem파일이 있는 주소로 이동하기!

figure2

  • 위에서 알아낸 public DNS 복붙!


예전에, top tracks랑 audio features를 파켓화하여 저장했었다. ( xxx.py )

이 ( xxx.py )를 매일 일정한 시간에 자동으로 돌리고 싶으면, 이를 방금 생성한 EC2서버 위에 올려놓는다.

figure2

  • scp : server에 copy한다
  • 위 코드를 시행하면, EC2 서버에 해당 python 파일이 저장된다.

  • 하지만 바로 코드 시행이 안된다!

    • python 설치 : sudo yum install python36

    • pip 설치 : sudo python3 get-pip.py

      ( pip3 install --upgrade pip )

    • 패키지들 설치 :

      • pip3 install boto3 --user
      • pip3 install requests --user
      • pip3 install pymysql --user
      • ….

Crontab 설치하기

  • sudo yum install crontab
  • sudo service crond start
  • crontab
  • service crond start
  • chkconfig crond on
  • crontab -e ( 종료 방법 : :q )

Python 위치 찾기

  • which python3 : xxx/xxx/xxx

  • crontab -e

  • i 클릭하면 INSET할 수 있는 창으로 변경 ( 입력 완료 후 ESC )

    • */5 1,2,3 * * * /xxx/xxx/xxx/python3 /home/ec2-user/spotify.py

      ( 매일 01:00, 01:12, 01:24, … 03:48 마다 코드 자동 실행 )

    • *30 18 * * * /xxx/xxx/xxx/python3 /home/ec2-user/spotify.py

      ( 매일 오후 6시 30분마다 코드 자동 실행 )

    • 다 작성하고 나면, :wq! 누르면 끝!

  • crontab -l을 하면, 방금 생성한 crontab 확인 가능!

  • if 생성한 crontab을 없애고 싶다면? “# 붙이기”

    • # *30 18 * * * /xxx/xxx/xxx/python3 /home/ec2-user/spotify.py

지금까지 EC2상에서 어떻게 crontab을 사용하여 scheduling을 하는지 알아보았다 :)