# 1d = 86400000ms
$ ./bin/kafka-topics.sh --zookeeper <Zookeeper ip address> --alter --topic \
<Topic name> --config retention.ms=86400000

# 변경되었는지 확인 retention.ms=86400000면 성공
$ ./bin/kafka-topics.sh  --describe --zookeeper <Zookeeper ip address> --topic <Topic name>

 

 

참고



https://knight76.tistory.com/entry/kafka%EC%97%90%EC%84%9C-retentionms-%EC%88%98%EC%A0%95%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

 

kafka에서 retention.ms 수정하는 방법

kafka에서 retention.ms 수정하는 방법은 다음 예처럼 간단한다. $ ./bin/kafka-topics.sh --create --zookeeper zkserver -replication-factor 1 --partitions 1 --topic samuel.test $ ./bin/kafka-topics.sh -..

knight76.tistory.com

 

https://github.com/occidere/TIL/issues/13

 

카프카 데이터 보관주기 설정 · Issue #13 · occidere/TIL

카프카 데이터 보관주기 설정 기본 개념 메시지 보관 기간 설정은 개별 메시지가 아닌 log segment 파일을 대상으로 처리된다. 이를 바탕으로 메시지가 카프카 브로커에 생성될 때, 해당 파티션의 l

github.com

 

'Database > Kafka' 카테고리의 다른 글

Kafka QuickStart  (0) 2020.07.30
centOS 8에 Kafka 설치  (0) 2020.07.28
[MacOS] Cloudkarafka와 python를 연동해서 메세지 전송하기  (0) 2020.07.25
[MacOS] Cloudkarafka로 kafka 맛보기  (1) 2020.07.24
$ wget http://mirror.navercorp.com/apache/kafka/2.4.0/kafka_2.12-2.4.0.tgz
$ tar -xzf kafka_2.12-2.4.0.tgz
$ cd kafka_2.12-2.4.0


# kafka 폴더 안에서 zookeeper 실행
$ bin/zookeeper-server-start.sh config/zookeeper.properties

# kafka 실행
$ bin/kafka-server-start.sh config/server.properties


# create topic
$ bin/kafka-topics.sh --create --bootstrap-server localhost:9092 \
--replication-factor 1 --partitions 1 --topic <topic name>

# topic 리스트 확인
$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092

 

 

참고


https://kafka.apache.org/quickstart

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

https://soyoung-new-challenge.tistory.com/61

 

[Kafka] 카프카 튜토리얼_Quick Start

카프카를 처음 접했을 때 빠르게 시작할 수 있는 튜토리얼 입니다:) "공식문서를 바탕으로 작성 된 카프카 Quickstart" Kafka 다운로드 # Kafka 2.4.0 버전 다운로드 : https://www.apache.org/dyn/closer.cgi?pa..

soyoung-new-challenge.tistory.com

https://sejoung.github.io/2018/09/2018-09-11-kafka_quickstart/#7%EB%8B%A8%EA%B3%84-Use-Kafka-Connect-to-import-export-data

 

카프카 Quickstart | 폭간의 기술블로그

카프카 Quickstart 이 튜토리얼은 당신이 기존의 Kafka 또는 ZooKeeper 데이터가 없다고 가정합니다. Kafka 콘솔 스크립트는 Unix 기반 및 Windows 플랫폼에서 서로 다르므로 Windows 플랫폼에서는 bin/대신 bin\w

sejoung.github.io

https://12bme.tistory.com/521

 

[Kafka] 카프카 스트림즈 (1) - 카프카 훑어보기

카프카 스트림즈의 구성요소를 다루어 기본적인 "추출/변환/적재"부터 레코드 조인을 통한 복잡한 상태 변환까지 스트리밍 애플리케이션의 다양한 문제를 해결할 수 있게 된다. 대량의 데이터��

12bme.tistory.com

 

Java 설치


$ sudo dnf install java-11-openjdk wget vim

 

 

Kafka 다운로드


$ wget http://www-us.apache.org/dist/kafka/2.4.0/kafka_2.13-2.4.0.tgz
$ tar xzf kafka_2.13-2.4.0.tgz
$ mv kafka_2.13-2.4.0 /usr/local/kafka

//root 아닐 경우에는 sudo mv kafka_2.13-2.4.0 /usr/local/kafka

 

 

Unit file Setting


Zookeeper

$ vim /etc/systemd/system/zookeeper.service

 

[Unit]
Description=Apache Zookeeper server
Documentation=http://zookeeper.apache.org
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
ExecStart=/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties
ExecStop=/usr/local/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

 

 

Kafka

$ vim /etc/systemd/system/kafka.service

 

[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service

[Service]
Type=simple
Environment="JAVA_HOME=/usr/lib/jvm/jre-11-openjdk"
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh

[Install]
WantedBy=multi-user.target

 

$ systemctl daemon-reload	//마무리

 

 

Kafka 실행


$ sudo systemctl start zookeeper	//zookeeper 시작
$ sudo systemctl start kafka		//kafka 시작
$ sudo systemctl status kafka		//kafka active 확인

 

오류발생

 

zookeeper 실행 안되는 현상으로 kafka까지 active fail

 

 

아래 명령어로 프로세스 조회

$ journalctl -xe

 

Cloudkarafka


클라우드에서 관리되는 apache kafka 서버로, 카프카의 설정, 실행 및 확장 등을 자동화시킨 서비스를 제공한다.

 

cloud에 대한 자세한 내용은 아래 아파치 카프카의 공식 홈페이지에서 확인할 수 있다.

https://www.cloudkarafka.com/docs/index.html

 

Documentation - CloudKarafka, Apache Kafka Message streaming as a Service

Documentation Getting started CloudKarafka are managed Apache Kafka servers in the cloud. Kafka is a distributed publish-subscribe messaging systems that is designed to be fast, scalable, and durable. It's an open-source message broker written in Scala and

www.cloudkarafka.com

 

 

 

cloudkarafka getting start - python


툴은 Visual Studio를 사용

 

1. 원하는 디렉터리 경로에서 아래 명령어를 입력

git clone https://github.com/CloudKarafka/python-kafka-example.git

 

 

2. visual studio에서 해당 프로젝트 오픈

 

 

3. 환경변수 설정을 위해서 cloudkarafka의 왼쪽 메뉴바의 [Detail] 클릭

Connection details의 Download를 클릭하여 instance 정보가 담긴 txt 파일을 다운로드

txt 파일 내용

 

 

4. 3번의 txt파일의 정보를 가지고, 터미널로 환경변수 설정

~ export CLOUDKARAFKA_BROKERS="rocket-01.srvs.cloudkafka.com:9094,rocket-02.srvs.cloudkafka.com:9094,rocket-03.srvs.cloudkafka.com:9094"
~ export CLOUDKARAFKA_USERNAME="it5v25et"
~ export CLOUDKARAFKA_PASSWORD="xDjmU_mpuzRcoux8pjFkPJAmgutBU0ar"
~ export CLOUDKARAFKA_TOPIC="it5v25et-testTopic"

// TOPIC은 "username-내가정한인스턴스이름"

 

 

5. 환경변수 설정을 끝내고 터미널로 consumer.py 실행

~ python consumer.py

 

 

6. 또 다른 Terminal을 열고 producer.py 실행

~ python producer.py

 

 

7. cloudkarafka에서 producer에서 메시지 적재

 

메시지 적재가 된 것을 Terminal에서 확인할 수 있다.

 

터미널 화면

 

'Database > Kafka' 카테고리의 다른 글

Kafka message(data) 보관주기 설정  (0) 2020.07.30
Kafka QuickStart  (0) 2020.07.30
centOS 8에 Kafka 설치  (0) 2020.07.28
[MacOS] Cloudkarafka로 kafka 맛보기  (1) 2020.07.24

 

Cloudkarafka


귀여운 오리

클라우드에서 관리되는 apache kafka 서버로, 카프카의 설정, 실행 및 확장 등을 자동화시킨 서비스를 제공한다.

 

cloud에 대한 자세한 내용은 아래 아파치 카프카의 공식 홈페이지에서 확인할 수 있다.

https://www.cloudkarafka.com/docs/index.html

 

Documentation - CloudKarafka, Apache Kafka Message streaming as a Service

Documentation Getting started CloudKarafka are managed Apache Kafka servers in the cloud. Kafka is a distributed publish-subscribe messaging systems that is designed to be fast, scalable, and durable. It's an open-source message broker written in Scala and

www.cloudkarafka.com

 

 

 

Cloudkarafka 시작하기


1. 홈페이지에 접속한 뒤 초록색 버튼 클릭 - https://www.cloudkarafka.com/ 

 

 

2. 이 포스팅에서 사용할 것은 이 귀여운 DEVELOPER DUCK! 

[Try a Developer Duck]을 클릭 -> 회원가입 진행 -> 로그인

 

 

3. 로그인하면 아래와 같은 창이 보이고, Name에는 자신이 원하는 Instance 이름을 입력 -> [Select Region] 클릭

(위의 노란색 알림은 무시해도 상관 없음)

 

 

4. data 센터의 위치 선택 -> [review] 클릭

버지니아는 에러나서 EU-WEST-1로 선택

 

 

5. [create instance] 클릭

 

 

6. instance가 생성된 것을 확인 (testinstance)

 

 

7. 방금 만든 인스턴스를 클릭하면 아래와 같이 정보를 확인할 수 있다. 

 

 

 

Consumer & Producer 사용해보기 (message 적재)


이번 포스팅은 producer를 이용해서 메세지를 적재하고, consumer가 소비하는 것을 확인하는 것이 목표!!

 

1. 왼쪽 메뉴바의 [TOPICS]를 클릭하여 토픽에 대한 정보를 입력 -> [create] 클릭

(간단한 테스트만 진행할 것이기 때문에, partitions와 replicas를 모두 1로 정함)

 

 

2. 왼쪽 메뉴바의 [BROWSER] 클릭 -> topic name을 Consumer, Producer에 입력

 

 

 

3. Producer 에 적재하고 싶은 Message를 작성하여 [Produce] 클릭하면 Consumer에서 확인할 수 있다

 

4. [Consume] 클릭하면 메세지를 소비

소비하기 전
소비 후

 

 

 

'Database > Kafka' 카테고리의 다른 글

Kafka message(data) 보관주기 설정  (0) 2020.07.30
Kafka QuickStart  (0) 2020.07.30
centOS 8에 Kafka 설치  (0) 2020.07.28
[MacOS] Cloudkarafka와 python를 연동해서 메세지 전송하기  (0) 2020.07.25

 

1. 먼저, apache-druid 0.19.0 파일을 아래 링크에서 다운로드

https://www.apache.org/dyn/closer.cgi?path=/druid/0.19.0/apache-druid-0.19.0-bin.tar.gz

 

Apache Download Mirrors

Copyright © 2019 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache and the Apache feather logo are trademarks of The Apache Software Foundation.

www.apache.org

 

2. 파일을 다운로드받은 경로에서 terminal에 아래 명령어 입력

tar -xzf apache-druid-0.19.0-bin.tar.gz	//압축해제
cd apache-druid-0.19.0

압축해제 후 폴더로 이동

 

 

3. 퀵스타트 명령어 입력

./bin/start-micro-quickstart

error

명령어를 입력했더니 Druid는 Java8만 지원하니 설치하고 재시도하라는 메세지 출력

-> 괜히 무시했다가 나중에 탈나느니 아예 8로 맞춰주기로.. (방법은 더보기 클릭)

 

더보기

Java8 설치는 여기 -> https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

 

java8 설치가 성공해도 여전히 컴퓨터는 java의 최신버전을 쓰기 때문에 변경을 해줘야 함

 

~ java -version				//현재 자바 버전 확인
~ /usr/libexec/java_home -V		//설치된 자바 버전 모두 확인
~ sudo vi ~/.zshrc			//비밀번호 입력

 

~ source ~/.zshrc	//수정한 파일 적용
~ java -version 	//버전 변경 되었는지 확인
변경 완료 화면

 

정상작동 스크린샷

 

Druid 종료는 control + c 

 

4. 이 주소에 접속했을 때 아래와 같은 화면이 출력되면 성공 

http://localhost:8888/

 

 


 

이 포스팅은 드루이드의 퀵스타트를 보고 따라하며 작성하였습니다.

 

https://druid.apache.org/docs/latest/tutorials/index.html

 

Quickstart · Apache Druid

 

 

 

SUBQUERY(서브쿼리)

대표적으로는 SELECT, FROM, WHERE절에서 사용 가능

이번 포스팅에서는 FROM, WHERE에 대한 서브쿼리를 소개할 예정입니다.

 

 


 

incident_id week date type ...
3001 2 2020-01-05 A  
3002 2 2020-01-05 A  
3003 2 2020-01-06 B  
3004 2 2020-01-07 B  
3005 2 2020-01-07 ...  
3006 2 2020-01-07 ...  

table <crimes>

 

FROM절 서브쿼리

 

FROM절 서브쿼리 작성 예시) 가상의 테이블을 만든다고 생각

 

SELECT daily_stats.week
		,AVG(daily_stats.incidents_daily)
FROM (
	SELECT week
    		,date
	        ,COUNT(incident_id) AS incidents_daily
	FROM crimes
    	GROUP BY week, date
    ) daily_stats
GROUP BY daily_stats.week

AVG() 사용할 때, NULL 카운트가 안 되는 점을 고려해서 SQL문을 작성해야 함

 

 

 

WHERE절 서브쿼리

 

서브쿼리의 결과가 딱 하나일 경우 (주로 MIN, MAX 사용)

SELECT *
FROM crimes
WHERE date = (SELECT MIN(date) FROM crimes)

 

서브쿼리의 결과가 여러 개인 경우

SELECT *
FROM crimes
WHERE date IN (SELECT DISTINCT date
		FROM crimes
                ORDER BY date DESC
                LIMIT 5
                )

 

 

 


 

HACKER RANK

 

Top Earners - https://www.hackerrank.com/challenges/earnings-of-employees/problem?h_r=internal-search

문제 풀이는 더보기 클릭

더보기

문제 ) salary * months 의 결과값 중에 가장 큰 값을 몇 명이 받고 있는지 조회해라

 

1) WHERE절 서브쿼리에서 WHERE = 를 사용한 풀이

-- salary * months = earnings 값이 제일 큰 사람

SELECT months * salary AS earnings
	, count(employee_id)
FROM Employee
WHERE months * salary = (SELECT MAX(months * salary) FROM employee)
GROUP BY earnings

 

2) HAVING절 서브쿼리를 사용한 풀이

SELECT months * salary AS earnings
	,COUNT(*)
FROM Employee
GROUP BY earnings
HAVING earnings = (SELECT MAX(months * salary) FROM Employee)

 

 

LEETCODE

 

184. Department Highest Salary - https://leetcode.com/problems/department-highest-salary/

문제 풀이는 더보기 클릭

더보기
SELECT d.name AS department
    , e.name AS employee
    , e.salary
FROM employee AS e
    INNER JOIN (SELECT departmentid
			, MAX(salary) AS max_salary
                FROM employee
                GROUP BY departmentid
                ) AS dh ON e.departmentid = dh.departmentid
                	AND e.salary = dh.max_salary
    INNER JOIN department AS d ON d.id = e.departmentid

 

해설은 차후 업로드

 

 


 

< 기초 SQL 시리즈 >

 

2020/07/14 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 기초 SQL - 1부

2020/07/14 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 기초 SQL - 2부

2020/07/14 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 기초 SQL - 3부 完

 

< 중급 SQL 시리즈 >

 

2020/07/15 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 1부

2020/07/15 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 2부

2020/07/16 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 3부

2020/07/16 - [Database/SQL] - [백문이불여일타] 데이터 분석을 위한 중급 SQL - 4부 完

 

 

 

이 포스팅은 해당 강좌를 수강하며 작성하였습니다.

https://www.inflearn.com/course/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%84%EC%84%9D-%EA%B3%A0%EA%B8%89-SQL/dashboard

 

[백문이불여일타] 데이터 분석을 위한 고급 SQL - 인프런

SQL 고급 이론을 배우고, 실습 문제를 함께 풀어봅니다. 중급이상 데이터 분석 데이터베이스 데이터베이스 SQL 데이터 분석 온라인 강의 실무에 필요한 연산을 효율적으로 처리하기 위한 SQL의 고�

www.inflearn.com

 

+ Recent posts