Computer Science/Backend(11)
-
[Kafka] 카프카 실행, 토픽 생성, 메시지 테스트
Flafka(Flume + Kafka)를 구성하기 위한 카프카 테스트 (mac 기준) KAFKA 실행 Flume에서 데이터를 보내기 위해 알맞은 kafka 토픽을 생성해야 된다. zookeeper가 kafka의 노드를 관리하기 때문에 zookeeper부터 실행시켜보자. cf) 주키퍼랑 카프카는 모두 homebrew로 설치했고, HOME PATH 설정을 마쳤다. property 경로는 아래를 참고하면 된다. # zookeeper config PATH $KAFKA_HOME/conf/zookeeper.properties # kafka config PATH $KAFKA_HOME/conf/server.properties KAFKA_HOME 같은 경우는 본인이 카프카를 설치한 경로로 bash에 저장해주자. mac같..
2020.05.24 -
Spring Boot 의존성 설정 (spring-boot-starter, spring-boot-starter-parent)
(Maven 기준) 파이썬에 pip이 있다면 자바 스프링에는 maven, gradle같은 빌드 툴이 있다. 스프링은 빌드 툴로 부터 어플리케이션에 필요한 라이브러리를 다운로드 받아 사용한다. 자바 라이브러리간의 관계를 의존성이라고 부르는 것 같다. 스프링의 의존성은 버전 영향을 많이 받는다. 스프링 부트 의존성(spring boot dependencies)은 org.springframework.boot라는 groupId를 사용한다. 전형적으로 메이븐 pom 파일이 spring-boot-starter-parent 프로젝트로부터 상속받고, 하나 혹은 두 개 이상의 Starters를 선언한다. 또한, 스프링 부트는 실행가능한 jar를 만들기 위해 선택적으로 Maven plugin을 제공한다. 개발 분야에 따라..
2020.05.21 -
Flume OG, NG, Property
Apache Flume 심화 지난 글에서 Apache Flume(이하 플룸)에 대한 기본 개념을 살펴봤다. 업무에서 쓰다보니 깊어지는 내용들이 있어서 좀 더 정리해보려고 한다. Flume OG / Flume NG OG = Old Generation / NG = Next Generation의 약자다. Flume OG의 몇 가지 이슈와 한계를 해결하기 위해 몇 가지 코어 클래스와 시스템이 리팩토링 되었다. Flume OG Flume OG는 Agent Node, Collector Node, Master Node로 나뉘어 있다. Agent가 모은 로그 데이터를 Collector로 보내고, Collector가 어떤 저장소로 데이터를 전송할지 정해준다. 그리고 이런 데이터 플로우를 컨트롤 해주는 게 Master의 ..
2020.04.14 -
Elastic Search, Log Stash, Kibana (ELK Stack) 기초
Elastic Search, Log Stash, Kibana 기초 드디어 ELK 형제를 우리 집에 데리고 왔다. 이 삼형제는 (순서대로)데이터를 저장하고, 데이터를 필터링 및 변환 해주고, 다양하게 시각화 해 주는 녀석들이다. 모두 오픈소스다. 요즘 개발자들은 오픈소스를 적재적소에 활용할 줄 아는 능력이 정말 중요해졌다. 보통 ELK라고 해서 Elastic Search -> Log Stash -> Kibana 순서대로 설명하지만, 나는 L -> E -> K 순서로 설명해보겠다. 데이터 흐름 순서가 그렇기 때문이다. 수집 로그들이 log stash를 거쳐 ES에 저장 되고, 그것을 기반으로 Kibana에서 보여주는 방식이다. Log Stash 다양한 소스에서 데이터를 동시에 수집해 변환하고, 저장소로 전달..
2020.04.05 -
Apache Flume 기본 개념 정리
Apache Flume (아파치 플룸) 기본 개념 정리 오늘 소개 할 Apache Flume(이하 플룸)은 클라우데라에서 처음 개발 돼, 아파치 소프트웨어 재단으로 이관 됐다. 로그데이터를 깔끔하게 수집하는 데 이만한 게 없으며, 많은 기업들에서 실제 서비스 로그데이터 관리를 위해 사용하고 있다. 전체적인 구조를 간단하게 보자면 다음과 같다. 내가 이해한 구조는 위 그림과 같은데 (직접 그림), 서비스 서버에서 수집되는 로그를 Flume Agent가 Flume Collector가 있는 host로 보내는 것이다. Collector에 설정값을 통해 Sink를 정해주는데, sink란 수집 된 로그데이터를 저장해놓을 데이터베이스를 값으로 갖는다. sink는 위에 그려놓은 HDFS, Kafka 이외에도 열 가지가..
2020.04.04