728x90
반응형

분류 전체보기 165

카프카 - (5) 컨슈머

카프카 프로듀서 카프카 브로커를 서버, 파티션을 저장소라고 가정하면, 카프카 컨슈머는 카프카로부터 데이터를 제공받아 소비하는 클라이언트에 해당한다. 메시지 소비 지난 포스팅에서 생성한 토픽 kafka-test에 메시지를 소비해보자. 메시지를 소비하는 것 역시 bin 디렉토리의 스크립트 중 하나를 활용한다. --from-beginning 옵션을 주면 처리 토픽에서 보관중인 첫 오프셋의 데이터부터 모두 받아오게 된다. bin/kafka-console-consumer.sh --bootstrap-server johnny:9092 \ --topic kafka-test \ --from-beginning value1 value2 value1 value2 위의 예제에서는 value값만 가져온다. 따라서 "print.k..

카프카 - (4) 프로듀서

카프카 프로듀서 카프카 브로커를 서버, 파티션을 저장소라고 가정하면, 카프카 프로듀서는 카프카에게 데이터를 제공하는 클라이언트에 해당한다. 메시지 전송 지난 포스팅에서 생성한 토픽 kafka-test에 메시지를 전송해보자. 메시지를 전송하는 것 역시 bin 디렉토리의 스크립트 중 하나를 활용한다. bin/kafka-console-producer.sh --bootstrap-server johnny:9092 -- topic kafka-test --property "parse.key=true" --property "key.seperator=";" > key1;value1 > key2;value2 parse.key 프로퍼티는 전송할 메시지에 키를 추가하는 옵션이다. key.seperator 프로퍼티는 전송할 메..

카프카 - (3) 토픽

카프카 토픽 생성 먼저 지난번 포스팅에서 사용한 네트워크를 통한 통신으로 토픽을 생성해본다. 로컬 기기의 kafka_2.12-2.5.0 디렉토리에서 다음 커맨드를 실행해 준다. * 지난 포스팅에서 카프카가 설치된 서버를 /etc/hosts에 johnny로 등록해준 것을 기억하자. bin/kafka-topics.sh --create --bootstrap-server johnny:9092 --topic kafka-test 토픽 생성이 성공적으로 되었다면 다음과 같은 메시지를 출력할 것이다. Created topic kafka-test. 토픽 생성 규칙 카프카 토픽은 영어 대소문자와 숫자, 그리고 대쉬(-), 언더스코더(_), 마침표(.) 로 조합할 수 있다. 한가지 특별한 규칙이 있다면, 언더스코어(_)와 ..

카프카 - (2) 설치

카프카 설치 카프카는 자바기반의 언어로 작성되었기 때문에 구동하기 위해서는 자바가 필요하다. 따라서 자바를 설치해 주어야 한다. 해당 포스팅에서는 자바 1.8이 사용되었고, 리눅스 환경에서 실행 되었다. 카프카를 설치하는 서버는 virtualbox와 같은 vm이나 aws와 같은 클라우드 가상환경을 사용하는 것을 추천한다. 자바 설치가 완료되면 카프카를 설치한다. wget https://archive.apache.org/dist/kafka/2.5.0/kafka_2.12-2.5.0.tgz 설치가 완료되면 tar 파일의 압축을 풀어준다. tar xvf kafka_2.12-2.5.0.tgz 다음은 카프카가 사용할 Heap의 사이즈를 정해주어야 한다. home 디렉토리의 .bashrc 파일에 다음 한줄을 넣어주어..

카프카 - (1) 개념

카프카란? 카프카는 파편화된 데이터 수집 및 분배 작업을 위해 링크드인에서 고안된 분산 큐(queue) 시스템이다. 상용 서비스를 개발하다 보면 서비스에서 생겨나는 여러 다른 데이터를 여러 다른 시스템으로 전송하게 된다. 이러한 데이터들을 단일화된 시스템으로 처리하지 않는다면 시스템이 커질수록 관리가 어려워진다. 카프카는 이러한 문제를 하나의 확장 가능한 시스템에서 처리하기 위한 시스템이다. 빅데이터 시스템 하둡과 같은 빅데이터 시스템은 주로 두가지의 코어한 개념을 지닌다. 바로 고가용성(High Availability)과 장애허용성(Fault Tolerance) 이다. 빅데이터 시스템을 공부할 때에는 이 두가지 개념을 항상 기억하고 학습하면 도움이 된다. 고가용성 (High Availability) 고..

멀티암드밴딧 - (2-1) 하계: KL발산

확률적 밴딧 이 증명은 정보이론(Information Theory)의 중요한 기법인 KL발산을 활용한다. 이번 섹션은 우리의 목적을 충족하기 위해서 KL발산에 대한 간단한 소개를 제공한다. 이 내용은 보통 정보이론의 개론에서 다룬다. 유한적인 샘플 공간 $\Omega$, $\Omega$에 대한 두개의 확률분포 $p$와 $q$를 고려해 보자. 그렇다면, 쿨백-라이블러 발산 혹은 KL발산은 다음과 같이 정의 된다: $KL(p, q) = \sum_{x \in \Omega} p(x) ln \frac{p(x)}{q(x)} = \mathbb{p} [ln \frac{p(x)}{q(x)}]$. 이는 두가지 분포의 거리를 표기하는 방법이다. 이 속성은 양수이며, $p=q$일때 0이고, $p$와 $q$가 가깝다면 작아지는..

카테고리 없음 2021.04.08

멀티암드밴딧 - (2) 하계 (Lower Bounds)

하계 (Lower Bounds) 이번 챕터는 밴딧 알고리즘이 할 수 없는 일들에 대해서 다룬다. 우리는 지난 챕터에서 다룬 후회값 비율이 가능한 최적이라는 것을 내포하는 두가지의 근본적인 결과를 보여준다. 우리는 다른 어떠한 밴딧 알고리즘도 더 좋은 후회값을 얻지 못하는, 즉 모든 밴딧 알고리즘들에 적용 가능한 하계(lower bound)에 대해 관심이 있다. 우리는 이번 챕터를 전반적으로 $\Omega(\sqrt{KT})$ 하계를 증명하는데 사용한다. 그리고 우리는 종속적인 하계 $\Omega(log T)$를 정의하고 이것에 대해 다룬다. 이러한 하계값들은 어떠한 상계값이 얻을 수 있는 최적의 값인지에 대한 감각을 심어준다. $\Omega(\sqrt{KT})$의 하계는 다음과 같이 명시한다: Theor..

멀티암드밴딧 - (1-5) 확률적 밴딧: 참고 문헌 및 용어 정리

확률적 밴딧 1.5 참고 문헌 및 용어 정리 이번 챕터는 멀티암드밴딧에 폭넓게 유용한 몇가지 기법들을 소개한다. 이는 네가지 알고리즘 기법 (탐색-우선, 입실론-그리디, 연속적 제거, UCB기반 슬롯 선택), 분석을 위한 완전이벤트 기법, 그리고 수식 (1.12)에 설명한 UCB 트릭이다. 연속적 제거는 Even-Dar et al. (2002)에서, $UCB1$는 Auer et al. (2002a)에서 소개되었다. 탐색-우선과 입실론-그리디는 매우 긴 시간 동안 알려져 왔고, 이들은 최초의 언급자에 대한 부분은 명확하지 않다. 최초의 $UCB1$ 버전은 다음과 같은 신뢰 반경을 가졌다. $r_t(a) = \sqrt{\alpha \cdot \frac{ln(t)}{n_t(a)}}$ (1.14) $\alpha..

멀티암드밴딧 - (1-4) 확률적 밴딧: 초기정보를 가진 밴딧

확률적 밴딧 1.4 초기 정보를 가진 밴딧 문제에 대한 정보가 알고리즘에게 먼저 알려질 수 있고, 이는 알고리즘의 성능을 개선하기 위해 사용될 수 있다. 이러한 "초기 정보"는 평균 보상 벡터 $\mu$에 큰 도움을 준다. 초기 정보를 부여하기 위한 두가지 일반적인 방법이 있다: $\mu$에게 "얌전함"(well-behaved)을 강요하는 것, 그리고 베이지안(Bayesian) 사전 확률을 부여하는 것이다. 중요한 후회 범위를 가지는 어떤 모델들은 슬롯의 숫자에 영향을 받지 않고, 따라서 무수히 많은 슬롯을 수용할 수 있다. $\mu$에 얌전함을 강요하는 것 정석적인 모델은 다음과 같다. 슬롯은 $\mathbb{R}^d$ 내의 포인트들과 일치한다. 우리는 $\mu$를 각 슬롯을 알맞는 평균 보상에 연결하..

멀티암드밴딧 - (1-3) 확률적 밴딧: 적응적 탐색

확률적 밴딧 1.3 적응적 탐색 탐색-우선 기법과 입실론-그리디 기법 모두 탐색 스케쥴이 관측된 보상의 기록과는 관계 없다는 큰 결점이 존재한다. 하지만 탐색시에는 관측된 보상에 적응적으로 대응하는 것이 보통은 더 좋은 결과를 낸다. 비공식적으로, 우리는 "적응적"과 "비적응적" 탐색으로 분리한다. 이번 챕터에서 우리는 적응적 탐색을 구현하고 더 나은 에이전트를 얻기 위한 두가지 알고리즘을 소개한다. $K = 2$의 경우부터 시작해보자. 한가지 자연스로운 아이디어는 둘 중 하나의 슬롯이 다른 슬롯보다 더 월등하다는 것을 찾을때 까지 하나씩 번갈아하며 선택하는 방법이다. 하지만 우리는 어떻게 하나의 슬롯이 다른 슬롯보다 월등하다는 것을 정확하게 정의할 수 있을까? 1.3.1 완전이벤트와 신뢰범위 이전에 다..

728x90
반응형