목록Data Engineering (29)
코딜기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Wo9dh/btsHnwKCEix/zfP34kQcOB0CsRO2kK1p90/img.png)
EC2에 python3 세팅하기1. 우선 python 세팅을 할 EC2 인스턴스를 생성한 후 SSH로 접속을 해줍니다.2. 접속 후 apt를 업데이트하고 build-essential을 설치합니다.sudo apt updatesudo apt install build-essential -y3. 설치가 완료되었다면 python을 설치해 줍니다. -> 필요에 따라 python 버전을 변경해 줍니다.sudo apt install python3.8 -y4. 설치를 하고 python 버전을 확인하면 방금 설치한 python 버전과 다르게 나타납니다. -> 설치한 python 버전으로 나오면 아래 과정은 생략해도 됩니다.5. python 명령어를 치면 방금 설치한 python을 가리키도록 설정을 해줘야 합..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/btTkMj/btsHnJivEAV/oQTI7KQ8GcBwJ3a94tdRq1/img.png)
MySQL 원격 접속1. 먼저 mac 터미널에서 MySQL을 사용하기 위해 아래 코드로 MySQL를 설치해 줍니다. -> homebrew를 설치하지 않았다면 homebrew의 설치가 우선적으로 필요합니다.brew updatebrew install mysql2. 설치가 완료되었다면 아래 명령어를 통해 MySQL에 원격 접속을 할 수 있습니다. -> 엔드포인트 주소는 RDS 데이터베이스 대시보드에서 확인할 수 있습니다.mysql -u [마스터 사용자 이름] -h [엔드포인트 주소] -P 3306 -p※ 만약 접속 명령어가 실행되지 않는다면 인스턴스의 보안 그룹 설정이 문제일 수도 있습니다. -> 이 게시물을 통해 포트 설정이 되었는지 확인해 주세요. -> 위 게시물은 EC2 인스..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/oAbz5/btsHm1jTHiE/mQtvHSxLVCmdLTu6JMDT7K/img.png)
Redis 원격 접속1. 먼저 mac 터미널에서 redis-cli를 사용하기 위해 아래 코드로 redis를 설치해 줍니다. -> homebrew를 설치하지 않았다면 homebrew의 설치가 우선적으로 필요합니다.brew updatebrew install redis2. 설치가 완료되었다면 아래 명령어를 통해 redis에 원격 접속을 할 수 있습니다.redis-cli -h [퍼블릭 IPv4 DNS]3. 설정한 접근 패스워드가 있다면 아래 명령어를 통해 패스워드 인증까지 마친 상태로 접속할 수 있습니다.redis-cli -h [퍼블릭 IPv4 DNS] --pass [접속 패스워드]※ 만약 접속 명령어가 실행되지 않는다면 인스턴스의 보안 그룹 설정이 문제일 수도 있습니다. -> 이 게시물을 통해 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cqnTFi/btsHpae8hwQ/S8HGb1kksJWVhlvxSZeK41/img.png)
보안 그룹이란?인스턴스 사용 시 설정해야 하는 값 중에 하나입니다.AWS는 설정해 놓은 포트를 통해서만 원격접속이 가능하기 때문에 인스턴스에서 필요한 포트를 개방해줘야 합니다.인스턴스를 생성할 때 지정한 보안그룹의 포트는 보통 기본값으로 설정되어 있기 때문에 추가적인 포트 개방 설정이 필요합니다.포트 설정은 AWS EC2 대시보드에서도 설정이 가능합니다.1. 설정하고자 하는 인스턴스의 정보창에서 보안 - 보안그룹을 클릭합니다.2. 보안그룹의 인바운드 규칙에서 "인바운드 규칙 편집"을 선택해 줍니다.3. 보안 그룹 규칙을 하나 추가한 후 필요에 맞게 설정을 하고 규칙 저장을 눌러줍니다. -> 이 게시물에서는 예시로 Redis에서 사용하는 포트인 6379 포트로 만들어줬습니다.4. 아래와 같이 새로운..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nYqKT/btsHj1JoI1V/KkYsgUKdIkeYmyypEseKM1/img.png)
RDS(Relational Database Service)란?AWS의 관계형 데이터베이스 서비스입니다. AWS는 DB 인프라 및 업데이트들을 관리해 주고, DB의 설치, 운영, 관리 등의 서비스들을 지원해 줍니다.현재 RDS는 MySQL, Oracle, PostgreSQL, MariaDB, Microsoft SQL Server, Aurora DB를 제공하고 있습니다.※ RDS를 사용하기 위해 AWS에 가입을 하고, Free Tier 설정까지 마쳐야 합니다.※ 모든 게시물은 AWS의 Free Tier 기준으로 진행할 예정입니다.RDS로 MySQL DB 생성하기1. AWS 홈페이지에 로그인을 한 후 검색창에 RDS를 검색해서 RDS 대시보드로 이동해 줍니다.2. 리전을 한국의 서울로 바꿔주고, DB 인스턴스..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bXv3Qd/btsHis1PdR1/v0JvVzc3j5hIlSHNED3BsK/img.png)
접근 Password 설정지난 게시물에서 원격 액세스를 위해 모든 어드레스로부터 접근을 허용하는 설정을 했습니다. 모든 어드레스로부터 접근을 허용하게 되면 외부에서 위험한 접근이 발생할 수 있습니다.따라서 접근 Password를 설정하여 보안성을 높일 필요가 있습니다.접근 Password 설정하고 확인하기1. 아래 명령어를 통해 conf 파일 vi 편집기를 열어줍니다.sudo vi /etc/redis/redis.conf2. .conf 파일에서 [requirepass] 부분을 찾아서 패스워드를 설정해 줍니다. -> 처음에는 주석처리가 되어 있기 때문에 주석을 제거한 후 패스워드를 설정해 줍니다. -> 패스워드는 큰따옴표로 감싸서 설정해주셔야 합니다.3. 바뀐 수정내용을 저장한 후 Redis ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b1GqYM/btsHh74G2MS/E2eZAJlEjuMllUuvTG51ZK/img.png)
Redis 원격 액세스 설정기본적으로 Redis는 원격 연결을 허용하지 않기 때문에 Redis를 실행하는 로컬에서만 Redis 서버에 연결할 수 있습니다.원격 호스트에서 Redis 서버에 연결하기 위해 redis.conf 파일을 수정해야 합니다.1. 아래 명령어를 통해 conf 파일 vi 편집기를 열어줍니다.sudo vi /etc/redis/redis.conf2. .conf 파일에서 [bind 127.0.0.1 ::1] 부분을 [bind * -::*]로 수정해 줍니다. -> [bind * -::*]의 의미는 모든 어드레스로부터 접근을 허용한다는 설정입니다. -> 원격 호스트에서 Redis 서버에 연결하기 위한 설정입니다.3. .conf 파일에서 [protected-mode] 부분을..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cGVAyD/btsHiGewJxz/OcYaznZVeIKC5yl9fhYNR1/img.png)
EC2 Redis 인스턴스 만들기1. 먼저 ubuntu 환경의 기본 설정 인스턴스를 생성합니다.2. 인스턴스 생성이 완료되면 SSH를 통해 Redis 인스턴스에 접속을 합니다.3. 접속이 완료되었다면 아래 명령어들을 통해 Redis 설치에 필요한 기본 패키지를 다운받아 줍니다.sudo apt updatesudo apt install build-essential -ysudo apt install lsb-release4. 설치에 필요한 기본 패키지 다운이 완료되었다면 아래의 명령어들을 통해 Redis를 설치해 줍니다.curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.g..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/YjoRa/btsHe5FIr44/zY9Rxo4g92wLYHpkYTslJ0/img.png)
Celery Executor란?Celery를 이용해서 작업을 worker에게 분배하고, 작업 결과를 관리하는 방식의 Executor입니다.Celery Executor ComponentsBasic ComponentWorkers - 할당된 task를 실행Scheduler - 실행해야 할 task를 Queue에 추가Web server - DAG와 task의 상태를 확인하고, 메타데이터 관리, 시각화, admin 명령을 할 수 있는 HTTP serverDatabase - DAG, tasks, Variable, Connection 등 메타데이터를 저장하는 저장소Celery - 스케줄링하는 Queue의 사용방식Celery Component Broker - 실행해야 할 command를 저장 (Queue)Result ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ybqMZ/btsHe294mQ7/Ik4k940o0j3Jxtq2vpyqsk/img.png)
Airflow 기본 아키텍처Scheduler스케줄 된 워크 플로우를 트리거하고, Executor에게 task를 실행하도록 요청하는 역할을 합니다.기본적으로 1분에 한 번씩 모든 DAG들의 정보를 업데이트하고, 상태정보를 확인합니다.Scheduler는 모든 task와 DAG를 모니터링하고 각각의 task들을 조건에 맞게 트리거합니다.Executortask의 실행을 관리합니다.실제 task의 실행은 Scheduler 내부에서 수행할 수도 있고, 외부의 worker에게 실행을 맡길 수도 있습니다.Executor의 종류Local Executor : 로컬에서 프로세스를 실행시켜 task를 실행하는 방식Sequential Executor : Local Executor와 비슷하지만 로컬에서 한 번에 하나씩만 동작하는..