본문 바로가기

220315화 - 카프카 도커로 설치 airflow elt 작업 (db데이터 etl, 크롤데이터 etl 등등.. batch 작업용)+pipeline쪽으로 카프카를 통해서 여러가지 타입의 로그를 수집해서 s3에 넣는 작업을 하고 있다. 개인 프로젝트에서 빅데이터의 트래픽을 처리하는 게 쉽진 않겠지만. 일단 집 서버의 한도에 맞춰서 모니터링해보는 걸로.. 어차피 AWS는 쓸 줄 모르는 게 아니고, 서버에서 클라우드로 옮겨가면 설정 빼고는 스케일아웃도 알아서 해줘 오히려 짐이 줄어드는 건데 굳이 aws만 고집해서 실습할 필요가 있을까? kafka + zookeeper + akhq (kafka UI툴. 뭐라 읽나요?)도커로 설치했다.카프카+주키퍼는 docker compose를 이용해 띄우고akhq는 따로 도커로 띄우고, 도커의 카프카 주키퍼 네트워..
220308화 - Go 언어 다른 언어도 슬슬 써봐야지. 뭐든 레이더에서 거르면 안 되는군... 할 게 많아서 현재로서 중요도는 좀 떨어지곘지만.. 해야하는 게 많으니 프로젝트를 (목표를) 작게 잡아서 여러 개를 만들고 필요할 때마다 불러내서 덧붙이고 이래야 할 듯. 크고 복잡한(?) 걸 한번에 오랫동안 만드는 것보다는 작게 만든 다음 필요할 때 계속 업데이트 가능하게 만드는 게 맞는 것 같다. 기술 트렌드 파악할 수 있는 대표적인 사이트를 좀 알면 좋겠는데. 사실 주변에 사람이 있다면 같이 공유하는 게 제일 좋긴할거 같다. 혼자 하는 건 물론 할 수 있지만 시간이 더 걸리는 듯. 스터디를 찾아야 하나 만들어야 하나; 참조 → 개인공부를 위해 밑의 주소의 내용을 많이 참조했으며 밑의 원문을 읽으시는 것을 추천. 물어보는 사람이 많아..
220305금 - elasticbeanstalk 사용해서 api 띄우기 당신은 돈을 내기 위해 태어난 사람 ~(...) EBS도 돈이 나가는구먼. 로드밸런서.. 거 kinesis도 메세지 몇 개 던지지도 않았는데 저렇게 나왔다. 쩝..서울 리전이어서 더 비싼 것도 있는 듯하고. 이래저래 서버 띄울 일이 생겨서 aws의 elasticbeanstalk를 써보게 되었다. 어디서는 lambda로 띄우는 법도 있던데 aws 문서를 대충 보니 사이트 패키지를 람다와 연결된 ec에 설치하는 것 같다. EBS도 완전 관리형이라 한데 최소한의 설정방법은 알고 해야 안 헤맨다. nginx 502에러가 진짜 복병이었다....이 에러는 nginx 설정을 잘못해서 날 수도 있고, app에서 나는 에러때문에 생길 수도 있다. 에러엔 역시 콘솔로 접속해서 로그를 봐야 함; EB 브라우저에서 로그를 보..
220227일 - Kinesis 로 stream data 처리해보기 AWS가 확실히 문서나 피드백 수집이나 활용이나..훨씬 사용자 친화적이다. 파이프라인 만드는 것도 쉽다. 유튜브에서 활용사례 등 자료 찾기도 좋다. 괜히 1등하는게 아니다. 최근에 인터뷰 준비를 하면서 클라우드 서비스로 데이터 레이크 - 데이터 웨어하우스 를 구축하는 부분을 많이 조사했다. 조사하면서 AWS가 상당히 데이터플랫폼 구축에 친화적인 듯 하여 한번 호다닥 만들어 보기로 했다. 조사하면서 오 이런 것도 됨?하거나 해보면 좋은 것들은 다 다뤄볼 예정. 데이터는 크게 신경쓰지 않고 더미로 던질 것이다. kinesis로 받은 데이터를 s3나 RDS에 집어넣기 RDS의 트랜잭션 로그를 가져와서 실시간으로 s3에 집어넣기 간단한 데이터 레이크 → 웨어하우스 플랫폼 구축해보기 등등.. 개인적으로 클라우드 ..
220226토 - 기본 ELT pipeline 완료 spotify api에서 artist, track 정보를 이용해서 관련 테이블 내용을 보충한 다음 저장하려 했지만 spotify db는 NoSQL로 유사데이터들이 다량으로 검색되어서 이 부분은 제외하고 elt 작업을 진행했다. get_rawdata에서 raw data를 가져와서 적절히 정제한 다음 artist, user, track, user_history DB테이블에 집어넣는 작업이다. 각 테이블의 키 참조 조건을 고려하다보니 단순히 get_data → transform → store에서 먼저 저장해야 하는 테이블의 순서가 생기면서 밑과 같은 구조가 나왔다. 여기에서 spotify 데이터를 어떻게 처리할지 결정한 다음 album, track, artist 데이터를 업데이트하는 작업을 추가할 수 있겠다...
220225금 - NoSQL 데이터를 SQL에 넣는다는 건 다른 일들로 인해 작업이 끊겼다. spotify에서 가져온 artist, music 데이터를 사용해서 정형데이터를 보충해주려고 하는데. 문제는 역시 스쳐 지나가지 않는다. dataframe에 spotify 데이터를 넣어주는 작업만 하면 elt 파이프라인 70%는 끝나는데.. NoSQL 데이터를 SQL에 넣으려할 때 생기는 참사(?) 질의를 하면 유사한 문서들이 다량으로 발견된다.예를 들어, artist: Lesuire, track:Nobody 로 검색하면무려 item이 4개나 검색된다. item 내용이 길어서 track 이름 만 뽑아보면 ['Nobody (feat. Gold Link)', 'Nobody (feat. Gold Link)', 'Nobody (feat. Gold Link)', 'Nobody']..
220225금 - airflow bashoperator에서 쉘스크립트 실행 시 주의점 밑의 코드처럼 bash_command 파라미터에서 쉘파일 실행 문자열을 넣을 때 sh 뒤에 space를 넣어줘야 한다. 그렇지 않으면 jinja template을 적용하려고 해서 에러가 난다. t2 = BashOperator( task_id="bash_example", # This fails with 'Jinja template not found' error # bash_command="/home/batcher/test.sh", # This works (has a space after) bash_command="/home/batcher/test.sh ", dag=dag, )
220219일 - python 가상환경 보통 app을 가상환경(virtualenv)에서 돌리는 일이 많아서 env구조를 어느정도는 알아야겠구나 생각이 들어서 정리한다. 보통 가상환경은 virtualenv로 생성한다. 패키지 로딩은 파이썬이 하니 단순하게 생각하면 가상환경 세팅의 핵심?은 어떤 경로의 파이썬을 쓸지 정해주는 거라 보면 될거같다. airflow에서도 bash_operator나 python_operator를 이용해 뭔가를 할 때 알아두면 유용하다. (가상환경 폴더의 이름은 env) → env의 python이 실행되면: (env 안의 python을 사용하겠다) → site모듈이 sys.prefix, sys.exec_prefix를 설정하여 (pyenv.cfg 위치 사용) → site-packages 경로만들고 sys.path에 추가 (..