목록Data Engineering (20)
isPowerfulBlog
데이터 엔지니어 인턴으로 입사해 데이터 파이프라인 작업을 하다보니 어떻게 작업을 효과적으로 할 수 있을 지에 대한 고민을 많이 하게 되는 것 같다.아래는 데이터 파이프라인을 개선해 나가면서 큐를 도입했던 이유를 작성헀다. —동기 -> 비동기 맨 처음, 동기 작업으로 코드를 짠다. 하나의 input에 대해서 기대한 output이 잘 나오는가? 그것을 가장 먼저 생각했다.일련의 단위 작업들을 순차적으로 처리하는 것을 가만히 보고 있자니 느리다! 라는 생각이 들었다. 그래서 작업 속도를 개선하고자 이제 앞 작업의 완료 여부와 상관 없이 다른 작업을 병렬적으로 수행할 수 있도록 비동기 작업으로 전환하게 되었다.비동기 호출을 여러번 하면 병렬적으로 작업이 진행되기 때문에 가지고 있는 컴퓨팅 자원을 더 적극적으로 ..
MapReduce 방식으로 문서 요약 태스크를 진행하면, LLM에 많은 쿼리를 날려야 한다.그리고 그 쿼리들을 날리는 시간이 너무 오래 걸려서 문제가 됐다. 찾아보니 invoke 말고 비동기로 invoke를 실행할 수 있는 ainvoke가 있다. 여러개의 query들을 실행해야하는 상황에서, 비동기로 invoke를 실행하면 병렬로 처리할 수 있게 된다. invokedef summary(self, split_docs): ... output = map_reduce_chain.invoke(split_docs) return output임의의 문서를 요약하는 함수이다. 안에는 chunk들을 요약하는 chain이 구성되어있다.이 chain을 invoke로 실행하면, 이렇게 순차적으로 infe..
s3에서는 버킷 내 파일 고유의 url을 제공한다. 허용된 시간 동안 그 url을 이용해서 파일에 접근할 수 있다. loader = PyPDFLoader("http://s3_url/어쩌구저쩌구겁나긴긴긴긴url입니다") 그래서 이 url을 이용해서 langchain에서 제공하는 다양한 PDFLoader를 사용할 계획이었으나... OSError: [Errno 36] File name too long 이런 에러가 났다! 그럴만두 한게 s3에서 제공하는 url이 진짜 길긴 하다. 근데 langchain에서 제공하는 PDFLoader는 web link나 file path만 input으로 넣어줄 수 있다. 그래서 되게 난감했다. pdf 파싱을 해야하는데, 랭체인에서는 PDFLoader로 파싱 기능을 제공하기 때문이..
카프카의 분산처리 기능을 이용하려면 노드가 여러개여야한다. 노드 한 개로 kafka 통신해보기는 성공을 했으니 이제 브로커를 3개로 늘려봐야겠다. 이런 그림을 원한다!! docker compose 수정 # kafka-cluster/docker-compose.yaml version: "2" services: zookeeper: ... broker-1: image: confluentinc/cp-kafka:7.3.0 container_name: broker-1 depends_on: - zookeeper ports: - 9092:9092 environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_LISTENERS..
kafka cluster를 실행하면 compose의 broker에 접속해 직접 producer와 consumer를 통신해볼 수 있었다. 근데 나는 producer코드를 짜고 consumer코드를 짜서 각각 도커 컨테이너를 띄우고 카프카 컨테이너로 통신하고 싶었다. 이런 그림을 원한다! 그래서 아래 세 개를 network로 묶어주기로 했다. Producer 컨테이너 Consumer 컨테이너 Kafka Cluster Compose 컨테이너 docker compose에서 network 설정 # kafka-cluster/docker-compose.yaml version: "2" services: zookeeper: ... broker: ... networks: default: name: my-network se..
도커이미지를 이용해서 간편하게 단일 브로커 Kafka 클러스터를 구성해보기 이미지 출처: https://www.tutorialspoint.com/apache_kafka/apache_kafka_cluster_architecture.htm 카프카를 운영하기 위해서 kafka cluster zookeeper: kafka cluster 관리 가 필요하다 Requirements Docker Hub에 있는 confluentinc의 zookeeper, broker 이미지를 사용한다. REPOSITORY TAG IMAGE ID CREATED SIZE confluentinc/cp-kafka 7.3.0 b526943eeea4 5 months ago 828MB confluentinc/cp-zookeeper 7.3.0 b3e..
ETL이란? 추출(Extract), 변환(Transform), 로드(Load) 여러 시스템의 데이터를 데이터 웨어하우스에 결합하는 과정 데이터 파이프라인을 구성하여 원시 데이터를 정리 및 구성하여 스토리지, 데이터 분석, 기계 학습 등의 용도로 준비하는 일련의 과정들 ETL 작동 방식 source 데이터 베이스에서 관련 데이터 추출 분석에 더 적합한 형식으로 데이터 변환 데이터를 대상 데이터베이스에 로드 ETL의 장점 스토리지 비용 절감 보안 ETL의 단점 유연성이 낮음 대용량 데이터일수록 Transform이 시간이 걸려 실시간에 어려움 지속 가능성 낮음.. 유지보수 어려 초기 비용이 높음 ELT란? 추출(Extract), 로드(Load), 변환(Transform)으로 ETL과 순서가 다름 비구조화된 데..
postgresql 설치하면 기본적으로 postgres라는 사용자가 생성된다. postgresql 접속 root에서 postgres 사용자로 postgresql db 접속 root@ psql -U postgres postgres=# DB 접속 정보 확인 postgres=# \conninfo > You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432". db,user, socket, port 정보 확인 postgresql 나가기 postgres=# \q User User 생성 postgres=# CREATE USER [USER_NAME] [OPTION]; [OPTIO..