본문 바로가기
SingleStoreDB/엔지니어링

SingleStore, Apache Kafka 연동 실습 - Quickstart

by 에이플랫폼 [Team SingleStore Korea] 2019. 7. 24.

Kafka Pipelines Quickstart

Prerequisites

​이 실습을 완료하려면 환경이 다음 전제 조건을 충족해야합니다.

운영 체제 : Mac OS X 또는 Linux

Docker : 버전 1.12 이상. Mac OS X을 사용하는 경우. 이 지침은 Docker for Mac 용으로 작성되었습니다. Docker Toolbox도 호환되지만 지침은 제공되지 않습니다.

파트 1 : Docker에서 Kafka 클러스터 실행

Docker 허브 에서는 Kafka에 대한 다양한 Docker 이미지를 사용할 수 있지만 테스트 목적으로는 가장 좋은 방법 중 하나가 memsql/kafka가 있습니다. 이 이미지는 Kafka와 Zookeeper가 모두 사전 설정되어 제공되므로 편리합니다.

터미널 창에서 다음 명령을 실행하십시오.

 

docker run --name kafka memsql/kafka

 

이 명령 SingleStore/kafka은 Docker 허브에서 Docker 이미지를 자동으로 다운로드하고, 이미지를 사용하여 새 컨테이너를 만들고, 컨테이너에 사용자에게 친숙한 이름 ( kafka)을 할당하고 , 마지막으로 컨테이너를 시작합니다.

컨테이너가 초기화 될 때 터미널에 출력되는 여러 행을 볼 수 있습니다. 가장 관련있는 행은 컨테이너가 성공적으로 시작된 경우에만 나타나는 마지막 두 행입니다.

INFO success: zookeeper entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
INFO success: kafka entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

파트 2 : 카프카에게 메시지 보내기

다음 단계에서는 새로운 Docker 컨테이너에 연결하여 Kafka와 상호 작용을 시작합니다. 새 터미널 창에서 다음 명령을 실행합니다.

docker exec -it kafka /bin/bash

이 docker exec명령을 사용하면 현재 실행중인 컨테이너에서 명령을 실행할 수 있습니다. 명령이 성공적이면 bash 프롬프트가 나타납니다.

root@780b09721ea1:/#

Kafka는 새로운 토픽을 만들고 메시지를 게시하기 쉽게 만드는 몇 가지 헬퍼 스크립트를 제공합니다. 스크립트 폴더로 이동합니다.

cd /opt/kafka*/bin

the /opt/kafka*/bin폴더에서 다음 명령을 실행하십시오.

./kafka-topics.sh --topic test --zookeeper 127.1:2181 --create --partitions 8 --replication-factor 1

이 명령은 kafka-topics.sh스크립트를 사용하여 이름이 지정된 새 주제를 작성 및 구성합니다 test. 이제 주제가 생겼으므로 주제에 메시지를 보내는 데 사용할 수있는 제작자를 만들 수 있습니다.

./kafka-console-producer.sh --topic test --broker-list 127.0.0.1:9092

이 명령은 kafka-console-producer.sh스크립트를 사용하여 test주제 와 연관된 생산자를 작성하고 구성합니다 . 스크립트를 사용하면 주제에 Kafka 메시지로 생성되는 임의의 텍스트를 표준 입력에 입력 할 수 있습니다. 몇 가지 메시지를 입력하여 사용해보십시오.

the quick brown fox jumped over the lazy dog

나중에 더 많은 메시지를 작성할 수 있도록이 터미널 창을 열어 두십시오.

이 시점에서 Kafka 클러스터에는 test몇 가지 메시지가 포함 된 항목 이 있습니다. Kafka에 메시지를 입력하기위한 것과 Kafka 컨테이너 자체에 대한 두 개의 터미널 창이 열려 있어야합니다. Part 3에서는 이러한 메시지를 수집하기 위해 SingleStore에 파이프라인을 작성한다.

파트 3 : SingleStore에서 카프카 파이프라인 만들기

이제 Kafka에는 주제와 메시지가 포함되어 있으므로 SingleStore를 사용하여 새 파이프라인을 만들고 메시지를 수집 할 수 있습니다. 이 빠른 시작에서는 Docker를 사용하므로 memsql\quickstart Docker 컨테이너를 사용하여 SingleStore를 실행할 수 있습니다 .

새 터미널 창에서 다음 명령을 실행합니다.

docker run --name memsql -p 3306:3306 -p 9000:9000 memsql/quickstart

이 명령 memsql/quickstart은 Docker 허브에서 Docker 이미지를 자동으로 다운로드하고, 이미지를 사용하여 새 컨테이너를 만들고, 컨테이너에 사용자에게 친숙한 이름 ( memsql)을 할당하고 , 마지막으로 컨테이너를 시작합니다.

컨테이너가 초기화되고 SingleStore가 시작될 때 터미널에 출력되는 여러 행을 볼 수 있습니다. 초기화 프로세스가 완료되면 새 터미널 창을 열고 다음 명령을 실행하십시오.

docker exec -it memsql memsql

Part 2에서는이 명령을 사용하여 Kafka 컨테이너 내의 bash 쉘에 액세스했다. 이번에는 새로운 컨테이너 내부의 SingleStore 인터프리터에 액세스 할 때 사용할 것이다. SingleStore(MemSQL) 프롬프트에서 다음 명령문을 실행하십시오.

CREATE DATABASE quickstart_kafka; USE quickstart_kafka; CREATE TABLE messages (id text);

이 문장들은 Kafka 파이프라인에 사용될 새로운 테이블과 데이터베이스를 생성합니다. 그러나 파이프라인 자체를 만들기 전에 Docker 내부에있는 Kafka 클러스터의 IP 주소가 필요합니다. 새 창에서 다음 명령을 실행하십시오.

docker inspect -f '{{ .NetworkSettings.IPAddress }}' kafka

이 명령은와 같은 Kafka 컨테이너의 IP 주소를 출력합니다 172.17.0.2. 그것을 복사하고 SingleStore 터미널 창으로 돌아갑니다. 이제 Docker에서 Kafka와 SingleStore가 모두 실행되므로 첫 번째 파이프라인을 만들 수 있습니다. 다음 명령문을 실행하여 <kafka-container-ip>사용자 자신의 명령문으로 바꿉니다 .

 

CREATE PIPELINE `quickstart_kafka` AS LOAD DATA KAFKA '<kafka-container-ip>/test' INTO TABLE `messages`;

이 명령은 새로운 Kafka 파이프라인을 작성 quickstart_kafka하여 test주제 에서 메시지를 읽고 이를 messages테이블에 씁니다 . 명령문이 성공적이면 파이프라인을 테스트 할 수 있습니다. 파이프라인을 생성 한 후에 파이프라인을 시작할 수는 있지만, 작은 데이터 세트를 사용하여 파이프라인을 테스트하는 것이 가장 좋습니다.

TEST PIPELINE quickstart_kafka LIMIT 1;

이 테스트가 성공적이었고 오류가없는 경우 데이터를 처리 할 준비가되었습니다. 다음 명령은 하나의 일괄 처리를 실행하고 데이터를 SingelStore테이블에 커밋합니다 messages.

START PIPELINE quickstart_kafka FOREGROUND LIMIT 1 BATCHES;

messages테이블에 데이터가 예상대로 존재하는지 확인하려면 다음 문을 실행하십시오. 성공한 경우, 비어 있지 않은 결과 세트가 표시되어야합니다.

SELECT * FROM messages; +--------------+ | id | +--------------+ | the quick | | brown fox | | jumped over | | the lazy dog | +--------------+

이제 파이프라인을 백그라운드 프로세스로 시작할 준비가되었습니다. SingleStore는 새로운 메시지가 Kafka에 삽입 될 때 자동으로 메시지를 수집합니다.

 

START PIPELINE quickstart_kafka;

이제 파이프라인이 가동되어 카프카 (Kafka) 주제에 대해 몇 가지 메시지를 보내십시오. 메시지를 작성한 Part 2의 터미널 창으로 돌아가십시오. 다음 줄을 입력하고 Enter 키를 누릅니다.

Lorem ipsum dolor sit amet

SingleStore 터미널 창에서 SELECT * FROM messages;명령문을 다시 실행 하십시오. 이제 다음과 같은 출력이 표시됩니다.

 

SELECT * FROM messages; +----------------+ | id | +----------------+ | lorem ipsum | | dolor sit amet | | the quick | | brown fox | | jumped over | | the lazy dog | +----------------+

이제 파이프라인이 실행 중이므로 PIPELINES_BATCHES_SUMMARY테이블을 쿼리하여 언제든지 상태와 기록을 확인할 수 있습니다 .

SELECT * FROM information_schema.PIPELINES_BATCHES_SUMMARY;

이 시스템 뷰는 파이프라인이 실행 된 모든 최신 배치와 성능 및 볼륨 메트릭을 한 눈에 볼 수 있습니다. 이 정보는 생산 파이프라인 시스템을 모니터링하고 이해하는 데 매우 중요합니다.

Quickstart 요약

이 Kafka 빠른 시작에서 Kafka 용 및 SingleStore용 Docker 컨테이너 두 개를 만들었습니다. Kafka 주제에 여러 개의 메시지를 보낸 다음 SingleStore에 Kafka 파이프라인을 만들어 메시지를 수집합니다. 이 빠른 시작은 Kafka 파이프라인의 가장 기본적인 기능을 보여 주었지만 실제 시나리오와 동일한 개념을 적용 할 수 있습니다.

이제 Docker에서 SingleStore 및 Kafka를 사용하는 것에 익숙해졌으므로 MemSQL Pipelines Twitter 데모를 사용해 볼 수도 있습니다 . 이 데모는 라이브 Twitter 데이터를 SingleStore에 도입하고 사용자 추세와 정서를 분석하는 쿼리를 수행하는 방법을 보여줍니다.

참고사이트:

 

- SingleStore 공식 문서

https://docs.singlestore.com/v7.1/guides/use-memsql/load-data/kafka/kafka-pipeline-quickstart/#part-2-sending-messages-to-kafka

 

Kafka Pipelines Quickstart

To create and interact with a Kafka pipeline quickly, follow the instructions in this section. There are three parts to this Quickstart: Part 1: Running a Kafka Cluster in Docker Part 2: Sending Messages to Kafka Part 3: Creating a Kafka Pipeline in Single

docs.singlestore.com

 

- Apache Kafka 공식문서 - 카프카의 핵심 개념과 원리

http://kafka.apache.org/documentation.html

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

※ www.a-platform.biz | info@a-platform.biz