메인 콘텐츠로 건너뛰기

개요

이 문서에서는 Kafka 토픽의 데이터를 ClickHouse 테이블로 전송하는 과정을 안내합니다. Wikimedia의 여러 속성에서 발생한 변경 사항을 나타내는 이벤트 스트림을 제공하는 Wiki 최근 변경 피드를 사용합니다. 단계는 다음과 같습니다:
  1. Ubuntu에서 Kafka 설정하기
  2. 데이터 스트림을 Kakfa 토픽으로 수집하기
  3. 토픽을 구독하는 ClickHouse 테이블 만들기
  4. Ubuntu ec2 인스턴스를 생성한 후 SSH로 접속하세요:
  1. 다음 지침을 참고하여 Kafka를 설치합니다(https://www.linode.com/docs/guides/how-to-install-apache-kafka-on-ubuntu/):
  1. ZooKeeper를 시작하세요:
  1. 새 터미널을 열고 Kafka를 실행하세요:
  1. 세 번째 콘솔을 열고 wikimedia라는 이름의 토픽을 생성하세요:
  1. 다음과 같이 성공적으로 생성되었는지 확인할 수 있습니다:

2. Wikimedia 스트림을 Kafka에 수집하기

  1. 먼저 몇 가지 유틸리티가 필요합니다:
  1. 영리한 curl 명령을 사용해 최신 Wikimedia 이벤트를 가져와 JSON 데이터를 파싱한 뒤, 이를 Kafka 토픽으로 전송합니다:
  1. 토픽을 “describe”하여 확인할 수 있습니다:
  1. 이벤트를 몇 건 소비해 모든 것이 정상적으로 작동하는지 확인해 보겠습니다:
  1. 이전 명령을 중지하려면 Ctrl+c를 누르십시오.

3. 데이터를 ClickHouse에 수집하기

  1. 수집되는 데이터는 다음과 같습니다:
  1. Kafka 테이블 엔진을 사용해 Kafka 토픽에서 데이터를 가져와야 합니다:
  1. 어떤 이유인지 Kafka 테이블 엔진이 공용 ec2 URL을 비공개 DNS 이름으로 바꾸는 것 같아서, 로컬 /etc/hosts 파일에 해당 항목을 추가해야 했습니다:
  1. Kafka 테이블에서도 읽을 수 있으며, 이를 위해서는 설정만 활성화하면 됩니다:
행은 wikiQueue 테이블에 정의된 컬럼에 따라 알맞게 파싱된 상태로 반환되어야 합니다:
  1. 수신되는 이러한 이벤트를 저장하려면 MergeTree 테이블이 필요합니다:
  1. Kafka 테이블에 삽입이 발생하면 실행되어 데이터를 rawEvents 테이블로 보내는 materialized view를 정의해보겠습니다:
  1. 거의 즉시 rawEvents에 데이터가 들어오기 시작하는 것을 확인할 수 있습니다:
  1. 행 몇 개를 살펴보겠습니다:
  1. 어떤 종류의 이벤트가 들어오고 있는지 살펴보겠습니다:
현재 materialized view에 연결되는 또 다른 materialized view를 정의하겠습니다. 분 단위의 일부 집계 통계를 추적합니다:
  1. 결과를 보려면 -Merge 함수가 필요합니다:
마지막 수정일 2026년 6월 12일