KafkaConsumer 파라미터 Topic 이름을 KafkaConsumer의 첫번째 인자로 지정 혹은 나중에 별도로 subscribe를 호출해서 지정 파라미터 의미 기본 값 설명 bootstrap_servers 메세지를 보낼 때 사용할 브로커 리스트 (host:port) localhost:9092 client_id Kafka Consumer 이름 'kafka-python-{version}' 지정 안 하면, 알아서 지정됨 group_id Kafka Consumer Group 이름 consumer 수 상관없이 꼭 설정해줘야 함 key_deserializer, value_deserializer 메세지의 키와 값의 deserialize 방법 지정 (함수) serialize 했더 것을 다시 deserialize..
Kafka란? 실시간 데이터를 처리하기 위해 설계된 오픈소스 분산 스트리밍 플랫폼 데이터 재생이 가능한 분산 커밋 로그 (Distributed Commit Log) 한번 기록되면 영구적임 Scalability와 Fault Tolerance를 제공하는 Publish-Subscription 메시징 시스템 Producer-Consumer (Publish-Subscription) High Throughput과 Low Latency 실시간 데이터 처리에 맞게 구현됨 분산 아키텍처를 따르기 때문에 Scale out 이란 형태로 스케일 가능 서버 추가를 통해 Scalability 작성 (서버=Broker) 정해진 보유기한 (default=일주일) 동안만 메시지를 저장 Eventual Consistency 100대 서..
Spark 데이터 시스템 아키텍처 데이터 병렬처리가 가능하려면? 1. 데이터가 먼저 분산되어야 함 하둡 맵의 데이터 처리 단위는 디스크에 있는 데이터 블록 (128MB) hdfs-site.xml에 있는 dfs.block.size 프로퍼티가 결정 Spark에서는 이를 파티션이라고 부름. 파티션의 기본 크기도 128MB spark.sql.files.maxPartitionBytes: HDFS등에 있는 파일을 읽어올 때만 적용됨 2. 나눠진 데이터를 각각 따로 동시 처리 맵리듀스에서 N개의 데이터 블록으로 구성된 파일 처리시 N개의 Map 태스크가 실행 Spark에서는 파티션 단위로 메모리로 로드되어 Executor가 배정됨 처리 데이터를 나누기 -> 파티셔닝 -> 병렬처리 적절한 파티션의 수 = Executo..
데이터 처리의 일반적인 단계 데이터 수집 (Data Collection) 데이터 저장 (Data Storage) 데이터 처리 (Data Processing) 이 과정에서 서비스 효율을 높이거나 의사결정을 더 과학적으로 하게 됨 데이터 처리의 고도화 처음에는 배치로 시작 처리할 수 있는 데이터의 양이 중요 (얼마나 큰 데이터를 한꺼번에 처리할 수 있는가) 서비스가 고도화되면서 실시간 처리 요구가 생기기 시작 Realtime 처리 vs Semi Realtime 처리 동일 데이터 소비가 필요한 케이스 증가: 다수의 데이터 소비자 등장 처리량(Throughput) vs 지연시간(Latency) 처리량(Throughput): 주어진 단위 시간 동안 처리할 수 있는 데이터의 양 클수록 처리할 수 있는 데이터의 양이..
${POSTGRES_HOST}는 Docker Compose 파일에서 환경 변수를 참조하기 위한 구문입니다. ${POSTGRES_HOST}는 해당 환경 변수의 값을 가져와서 사용하라는 의미입니다. Docker Compose 파일에서 ${POSTGRES_HOST}를 사용하면 실제로는 환경 변수 POSTGRES_HOST의 값으로 치환됩니다. 이렇게 함으로써 동적으로 값을 설정할 수 있습니다. 따라서, ${POSTGRES_HOST}는 POSTGRES_HOST 환경 변수의 값을 참조하는데 사용됩니다. 환경 변수를 사용하여 컨테이너 간에 동적인 설정을 제공할 수 있습니다. Docker Compose 파일에서 변수를 사용하면 파일의 다른 위치에서 해당 변수를 설정하고, 필요에 따라 값을 변경하거나 환경에 따라 다른 ..
container orchestration 서버의 상태를 관리하기 위한 노력 중앙제어 (master-node) 클러스터 단위로 추상화해서 관리 master server를 이용하여 관리자가 master server에 명령하면 master가 클러스터에 명령함 상태 관리 ex. 컨테이너가 3개였으면 좋겠어 -> 하나가 죽으면 새로운 하나를 생성 배포 관리 여유로운 서버를 찾거나 생성하여 스케줄링을 할 수 있음 배포 버전관리 각 컨테이너들의 버전을 중앙에서 관리할 수 있음 서비스 등록 및 조회 볼륨 스토리지 kubernetes (k8s) 컨테이너 기반 서비스 배포/스케일/관리 자동화를 해주는 오픈소스 프레임워크 구글에서 사용하던 Borg 서비스를 오픈소스화함 클라우드 on-prem 모두에서 잘 동작 모든 컨테이..