본문 바로가기
반응형

전체 글318

[Kafka] #4 - 아파치 카프카 프로듀서(Apache Kafka Producer Partitioner) 파티셔너 카프카 프로듀서에서 생각해봐야 할 프로퍼티 중 하나로 파티셔너(Partitioner)다. 파티셔너는 카프카 프로듀서로 메시지를 전송 할 때 토픽의 어떤 파티션으로 전송해야 할지를 결정해주는 클래스다. 카프카의 생성자에 넘겨주는 인자 중 하나인 Properties 객체에 "partitioner.class"라는 이름의 프로퍼티로 설정하면 된다. 별도로 설정하지 않으면 kafka.producer.DefaultPartitioner 클래스가 할당된다. 아파치 카프카 프로듀서의 파티셔너(Partitioner)파티셔너로 사용할 수 있는 클래스는 org.apache.kafka.client.producer.Partitioner 인터페이스를 구현해야 한다. Partitioner 인터페이스는 다음과 같다. public in.. 2019. 1. 9.
scoop 설치하기 - 커맨드라인 윈도우 프로그램 설치 소프트웨어 (Command-line installer for Windows) 개발을 하다보면 이런저런 소프트웨어를 설치해야할 때가 있다. 우분투 같은 리눅스에서는 apt-get install 을 사용하고, 맥에서는 brew install 같은 명령을 수행하면 쉽게 로컬 머신에 소프트웨어 패키지를 설치할 수 있다. 반면 윈도우의 경우에는 홈페이지에 들어가서 설치 EXE 파일을 다운로드하여 설치를 진행했다. Next 버튼을 눌러가며 설정을 진행하는 과정이 여간 귀찮은 것이 아니었다. 그러다가 윈도우에서 Gradle 을 설치해야할 일이 생겨서 찾아보다가 Scoop 이라는 소프트웨어를 알게되었다. Scoop은 brew, apt-get 같이 명령하나로 쉽게 소프트웨어를 설치할 수 있게 기능을 제공해준다. scoop.sh 홈페이지 홈페이지 이름도 "유닉스"스럽다. Scoop의 간단한 데모 .. 2019. 1. 8.
[Kafka] #3 - 아파치 카프카 프로듀서 (Apache Kafka Producer) 실행과 간단한 설정 예제(Configuration Example) 카프카에 대한 간단한 개념과 카프카 서버 구동 방법에 대해서 간략하게 알아봤다. [Kafka] #1 - 아파치 카프카(Apache Kafka)란 무엇인가? [Kafka] #2 - 아파치 카프카(Apache Kafka) 설치 및 실행, Quickstart 이전 글에서는 콘솔에서 메시지를 전송하고 읽을 수 있는 콘솔 프로듀서와 콘솔 컨슈머를 사용해봤다. 이제 자바(Java)를 이용해서 카프카에 메시지를 전송할 수 있는 프로듀서를 구현해 볼 차례다. 카프카는 자바를 위한 프로듀서 클라이언트 라이브러리를 지원한다. 카프카 라이브러리를 사용하기 위한 메이븐(Maven) Dependency는 다음과 같다. org.apache.kafka kafka-clients 2.0.0 메이븐 pom.xml 파일에 추가하고 관련 .. 2019. 1. 7.
데이터 엔지니어(Data Engineer)와 데이터 사이언티스트(Data Scientist), 데이터 분석가(Data Analyst) 차이점 '데이터(Data)'를 흔히 21세기 석유라고 말한다. 전 세계 산업을 움직이고 있는 '석유(Petroleum)'처럼 데이터가 산업에 지대한 영향을 미친다는 의미다. 데이터를 잘 다룰 수 있는 데이터 파이프라인을 구축하여 데이터에 기반한 의사결정 (Data-driven dicision making)을 할 수 있는 시스템 구축 할 수 있는지 여부가 기업의 경쟁력을 좌우하게 되었다. 이와 함께 등장한 그럴싸한 단어가 '빅데이터(Big Data)'이다. 무지막지하게 쌓이고 있는 데이터를 분석하여 좀 더 과학적이고, 통계에 기반한 의사결정을 해서 기업이 올바른 방향으로 나아갈 수 있게 도와주는 것이다. 이런 데이터 처리, 분석 기술은 필수가 되었다. 기업에서 데이터를 다루는 직종도 다양해지고 있다. 그 중에서 .. 2019. 1. 5.
[Java(자바)] synchronized keyword 와 final 필드(field) 멀티 스레드 프로그램에서 여러 쓰레드(Thread)가 동시에 하나의 자원에 접근할 수 있다. 여러 쓰레드가 동시에 공유 자원에 대한 수정을 할 경우 동시성 문제가 발생할 수 있다. 자바(Java)에서는 다행히 synchronized 라는 키워드를 제공하여 별도의 라이브러리를 사용하지 않고도 손쉽게 멀티 쓰레드 환경에서의 동시성 제어를 구현할 수 있다. synchronized 키워드를 사용할 때 변수를 명시하여 해당 변수에 접근하는 쓰레드를 줄 세울 수 있다. 예를 들어 다음과 같은 코드를 보면, synchronized 키워드와 함께 레퍼런스(Reference;참조) 변수를 넘겨줬다. 두 개의 쓰레드가 같은 코드를 수행할 때, 이 레퍼런스 변수를 기준으로 줄서게 된다. 이 코드를 실행하면 다음과 같은 결과.. 2019. 1. 4.
[MySQL] 오라클(Oracle) Merge into 구문 따라하기 - 중복키 (Duplicate key) 처리 Primary Key 혹은 Unique Index가 생성되어 있는 테이블 데이터를 Insert 할 때, "Error Code: 1062. Duplicate entry '??' for key PRIMARY" 같은 에러를 자주 보게 된다. 테이블에 테이터를 Insert 하려는데 동일한 Key를 갖는 Row가 이미 테이블에 존재하는 경우 만나게 되는 에러다. 테이블에 데이터가 없으면 insert 하고 있으면 update 하는 동작이 필요한 경우가 있다. 이 때, select를 해보고 insert, update를 판단하는 동작으로 애플리케이션을 작성할 수도 있다. 최고의 시나리오는 다음과 같을 것이다. 하지만 select 이후 중복된 키의 존재 유무를 판단하고, insert 혹은 update를 수행하면 phan.. 2019. 1. 3.
[Java(자바)] final 키워드와 클래스(Class), 메소드(Method), 멤버변수 인텔리J (IntelliJ)를 이용해서 프로젝트를 진행하는데 'Code Inspection'을 수행하다가 'Declaration can have final modifier' 메시지를 보게되었다. Java에서 final 키워드는 어떤 의미를 가지고 있으며 어떻게 사용하는게 좋을지 찾아보았다. Java의 final 키워드자바에서 final 키워드에 대한 정의는 다음과 같다. (링크 : 위키피디아) In he Java programming language, the final keyword is used in several contexts to define an entity that can only be assigned once final 키워드를 사용할 수 있는 대상에는 '클래스(Class)', '메소드(Me.. 2018. 12. 24.
[Kafka] #2 - 아파치 카프카(Apache Kafka) 설치 및 실행, Quickstart 아파치 카프카의 웹 페이지를 보면 카프카를 처음 접하는 사람들도 쉽게 써볼 수 있는 "퀵 스타트(Quick Start)" 항목이 있다. 다운로드부터 간단한 실행까지 쉽게 따라할 수 있는 예제들이 정리되어 있다. 1. 다운로드카프카 다운로드 페이지에서 카프카 릴리즈 패키지를 다운로드 할 수 있다. 참고로 카프카 아카이브에서 이전 버전을 포함한 다양한 버전의 카프카 릴리즈 패키지를 내려받을 수 있다. 적당한 패키지를 다운로드하고 압축을 풀어준다. 12$ tar -xzf kafka_2.11-2.1.0.tgz$ cd kafka_2.11-2.1.0​cs 2. 서버 시작압축을 풀어내면 카프카를 위한 다양한 바이너리들과 설정 파일들이 들어있다. 카프카는 주키퍼를 사용해 내부 클러스터 멤버십 관리를 한다. 따라서 카프.. 2018. 12. 19.
[Kafka] #1 - 아파치 카프카(Apache Kafka)란 무엇인가? 데이터 파이프라인(Data Pipeline)을 구축할 때 가장 많이 고려되는 시스템 중 하나가 '카프카(Kafka)' 일 것이다. 아파치 카프카(Apache Kafka)는 링크드인(LinkedIn)에서 처음 개발된 분산 메시징 시스템이다. 2011년 오픈소스로 공개되었으며 이후 2012년 10월 아파치 인큐베이터를 종료했다. 현재 링크드인에서 카프카를 개발하던 제이 크렙스(Jay Kreps)를 비롯한 일부 엔지니어들이 'Confluent'라는 회사를 설립하여 카프카와 관련된 일을 하고 있다. 카프카라는 이름은 유명한 작가인 '프란츠 카프카(Franz Kafka)'에서 따왔다. (참조 : Quora) I thought that since Kafka was a system optimized for writi.. 2018. 12. 18.
반응형