( 참고 : “FastCampus, 데이터 엔지니어링 올인원” )
[ Data Engineering ]
Scheduling
1. Crontab
데이터는 지속적으로 변화하고 있다. 이것을 우리가 매일 같은 시간에 컴퓨터를 키고 할 수 없기 때문에, 이를 잘 자동화해야한다. 즉, 우리가 작성한 코드를 일정한 스케줄을 가지고 run이 되도록해야한다. 이러한 스케쥴링(scheduling)을 도와주는 것이 Crontab이다!
Example
2. EC2 서버 상에서 Crontab 사용하기
**(1) EC2 : 가상 서버 **
( 우리가 가진 노트북의 전원은 켜져 있지 않은 이상 돌아가고 있지 않는다. 서비스가 24시간 늘 잘 작동하도록 가상 서버인 EC2를 서버를 사용한다. )
(2) Lambda : 특정 event가 발생할 경우 compute
- 관리/스케줄링이 편리함!
EC2
- public DNS : 주소
.pem파일이 있는 주소로 이동하기!
- 위에서 알아낸 public DNS 복붙!
예전에, top tracks랑 audio features를 파켓화하여 저장했었다. ( xxx.py )
이 ( xxx.py )를 매일 일정한 시간에 자동으로 돌리고 싶으면, 이를 방금 생성한 EC2서버 위에 올려놓는다.
- 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을 하는지 알아보았다 :)