클라우드 엔지니어/클라우드 캠프과정

빅데이터 아키텍쳐 (기초 Kafka 기초셋팅)

해아's 2022. 10. 5. 17:40

빅데이터 아키텍쳐(데이터 파이프라인, PUB/SUB 모델, 하둡)

 

데이터 파이프라인

ETL은 추출(Extract), 변환(Transform), 적재(Load)의 줄임

 

Pub/Sub 모델

Publish/Subscribe의 줄임말로 메시지 기반의 미들웨어 시스템을 말합니다

 

하둡

 

 

kafka va rabbitmq

더보기
https://www.confluent.io/blog/event-streaming-platform-1/

1. 카프카
	Kafka는 LinkedIn에서 개발한 분산 스트리밍 플랫폼, 오픈 소스 메시지 브로커
	메시징, 메트릭 수집, 로그 수집, 스트림 처리 등 다양한 용도로 사용 가능
	

  1) 특징
	빠르다
		수 천개의 데이터 소스로 부터 초당 수백 메가바이트의 데이터를 입력 받아도 안정적으로 처리 가능

	확장가능
		메시지를 파티션으로 분리햐여 분산 저장, 처리할 수 있어 클러스터로 구성하여 확장 가능

	안정적이다
		클러스터에 파티션 복제하여 장애 내구성을 가짐

  2) 구조
	발행/구독(Pub/Sub) 모델
		Kafka는 발행-구독(Pub/Sub)모델을 기반으로 동작

		발행-구독 모델은 발행자(Producer)가 메시지를 특정 수신자에게 직접 보내는 방식이 아니라 

		주제(topic)에 맞게 브로커에게 전달하면 구독자(Consumer)가 브로커에 요청해서 가져가는 방식

		발행자는 메시지를 topic으로 카테고리화
		구독자는 topic에 맞는 메시지를 브로커에게 요청
		발행자와 구독자는 서로 알지 못함




  3) 용어
	Topic, Partiton
	Producer, Consumer
	Broker, Zookeepr
	Consumer Group
	Replication

  4) Topic-Partition
	Topic
		메시지는 topic으로 분류
		topic은 발행자가 스트림을 발행하는 단위
		스트림의 발행과 구독은 topic단위로 처리

	Partition
		하나의 topic은 여러 개의 파티션으로 저장할 수 있음
		1개의 토픽은 여러 개의 파티션으로 저장되고, 하나의 파티션은 여러개의 로그로 기록
		1:N = Topic:Partition, 1:N = Partition:Log
		하나의 토픽을 여러 파티션으로 나누면 메세지 분산 처리로 처리량을 높일 수 있고, 분산 저장을 통해 오류가 발생할 때 데이터를 복구할 수 있음
		파티션의 크기는 운영 중에 동적으로 줄일 수 없기 때문에 파티션 개수를 설정할 때 주의해야 함

  5) Producer, Consumer
	발행자(Producer)
		메세지를 생산하는 주체
		메세지를 만들고 브로커(Broker)에게 토픽(Topic)으로 분류된 메시지를 전달
		메시지는 배치 형태로 전달
		발행자는 구독자의 존재를 알지 못함

	구독자(Consumer)
		소비자로 메세지를 소비하는 주체
		발행자의 존재를 알지 못함
		원하는 토픽을 구독하여 스스로 조절해가면서 소비할 수 있음
		원하는 토픽의 각 파티션에 존재하는 오프셋의 위치를 기억하고 관리하여 데이터의 중복을 관리
		오프셋 관리를 통해 발행자, 구독자에 장애가 발생해도 마지막으로 읽었던 위치에서 부터 다시 구독 가능
		fail-over에 대한 신뢰가 존재

  6) 브로커(Kafka Cluster)
	클러스터로 구성된 메시지 큐
	메시지는 클러스터에 파티션 단위로 나누어 관리/복제 됨
	파일 시스템에 메시지를 저장하므로 유실이 없고 복구 가능
	하드디스크의 순차적 읽기 기능을 이용하여 속도를 유지
	구독자가 메시지를 가져가도 바로 삭제하지 않음
	기본 설정은 7일간 저장하고 삭제



2. 카프카 설치
  1) jdk 설치

  2) 설치
	wget https://dlcdn.apache.org/kafka/3.1.0/kafka_2.13-3.1.0.tgz
	tar -xzvf kafka_2.13-3.1.0.tgz
	mv kafka_2.13-3.1.0 /opt/kafka

  3) 실행 확인
    (0) 호스트 이름 설정
	각 컴퓨터
	/etc/hostname
		브로커는 broker
		프로듀서는 producer
		컨슈머는 consumer

	모든 컴퓨터
	/etc/hosts
		[브로커 IP] broker
		[프로듀서 IP] producer
		[컨슈머 IP] consumer
	
    (1) broker
	/opt/kafka/bin/zookeeper-server-start.sh config/zookeeper.properties
	/opt/kafka/bin/kafka-server-start.sh config/server.properties
	/opt/kafka/bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server [broker IP]:9092
	/opt/kafka/bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server [broker IP]:9092

    (2) producer
	/opt/kafka/bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server [broker IP]:9092
	아무거나 입력

    (3) consumer
	/opt/kafka/bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server [broker IP]:9092
	프로듀서가 입력한 내용이 받아와진다.


kafka : 모든 자료를 받아서 중간에서 처리해주는 브로커 같은 개념

메세지보내는쪽 > 브로커(kafka) > 메세지를 받는쪽

 

 

카프카 테스트 페이지 설치하기 centos8

2. 카프카 설치
  systemctl stop firewalld #방화벽끄기
  apt install - y wget
  1) jdk 설치
yum -y install java-1.8.0-openjdk-devel.x86_64
  2) 설치

  
	wget https://dlcdn.apache.org/kafka/3.1.2/kafka_2.13-3.1.2.tgz
	tar -xzvf kafka_2.13-3.1.2.tgz
	mv kafka_2.13-3.1.2 /opt/kafka

  3) 실행 확인
    (0) 호스트 이름 설정
	각 컴퓨터
	/etc/hostname
		브로커는 broker
		프로듀서는 producer
		컨슈머는 consumer

	모든 컴퓨터
	/etc/hosts
		[브로커 IP] broker
		[프로듀서 IP] producer
		[컨슈머 IP] consumer
	
    (1) broker
    브로커 세션 두개로 키고 각각 실행
    /opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
    /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties

    이건 안해도됨
	/opt/kafka/bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server [broker IP]:9092
	/opt/kafka/bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server [broker IP]:9092

    (2) producer
	/opt/kafka/bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server [broker IP]:9092
	아무거나 입력

    (3) consumer
	/opt/kafka/bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server [broker IP]:9092
	프로듀서가 입력한 내용이 받아와진다.

728x90
반응형