'kafka'에 해당되는 글 3

  1. 2015.10.13 Kafka Monitoring Tool - Burrow
  2. 2015.10.13 Kafka monitoring
  3. 2015.08.14 Schema Registry

Kafka Monitoring Tool - Burrow

https://github.com/linkedin/Burrow

위키 대로 따라 하기


Build and Install

1. GO 를 먼저 설치 해야 한다.

https://golang.org/doc/install 여기 Guide 대로 GO 설치

2. https://github.com/linkedin/Burrow/releases 에서 release 된 code 를 다운 로드 한다. (Burrow-0.1.0.tar.gz)

3. tar xzvf Burrow-xx.tar.gz > Burrow-0.1.0

4. GOPATH 설정

$ mkdir burrow-test

$ export GOPATH=/xxxx/burrow-text

$ cd $GOPATH/src/github.com/linkedin (디렉토리가 없다면, mkdir로 생성)

5. Burrow 디렉토리를 $GOPATH/src/github.com/linkedin/burrow 로 이동

$ cd $GOPATH/src/github.com/linkedin/burrow/

6. install

$ gmp install

$ go install

$ cd $GOPATH


Running Burrow

1. config 파일 만들기

$ mkdir $GOPATH/config

cp src/github.com/linkedin/burrow/config/burrow.cfg config/

cp src/github.com/linkedin/burrow/config/logging.cfg config/

2. burrow.cfg에서 zookeeper, broker 등을 적절히 수정. 필요하면 logging.cfg 수정

3. run

$GOPATH/bin/burrow --config path/to/burrow.cfg


Request to HTTP EndPoint

EndPoint list : https://github.com/linkedin/Burrow/wiki/HTTP-Endpoint

브라우저나 curl 등으로 조회.


1. Healthcheck

http://sembp:8000/burrow/admin

>>> GOOD


2. List Cluster

http://sembp:8000/v2/kafka

>>> {"error":false,"message":"cluster list returned","clusters":["seoeun-local"]}


3. Kafka Cluster Detail (위 리스트에서 나온 cluster 이름으로 조회)

http://sembp:8000/v2/kafka/seoeun-local

>>> {"error":false,"message":"cluster detail returned","cluster":{"zookeepers":["sembp:2181"],"zookeeper_port":2181,"zookeeper_path":"/kafka-cluster","brokers":["sembp:9092"],"broker_port":9092,"offsets_topic":"__consumer_offsets"}}


4. Cluster Topic Detail

http://sembp:8000/v2/kafka/seoeun-local/topic/employee

>>> {"error":false,"message":"broker topic offsets returned","offsets":[426822,35820,35820,1188253,35824,35827,419396,415688,801394,796091]}



burrow.cfg


신고

'개발' 카테고리의 다른 글

Kafka Monitoring Tool - Burrow  (0) 2015.10.13
Kafka monitoring  (0) 2015.10.13
Schema Registry  (0) 2015.08.14
Yarn scheduler 가 application을 실행하지 않을 때  (0) 2015.02.16
hive debug with cli  (0) 2014.11.08
파일 안 문자열 치환  (0) 2014.10.22
TRACKBACK 0 COMMENT 0

Kafka monitoring


1. kafka-manager

https://github.com/yahoo/kafka-manager

Yahoo에서 만들었는데, 설치해 보면 별 기능이 없다. 

일단 offset을 볼 수 없으니 답답하다. 


2. kafka-web-console

https://github.com/claudemamo/kafka-web-console

topic, offset, lag 를 UI 로 제공한다. 

그런데, git 에 보면 retired 한다고, kafka-manager 같은 거 고려해 보라고 한다. 왜? 이게 더 좋은데. 개발자가 더 이상 개발 안 한다니 할 수 없지만.


3. Burrow

https://github.com/linkedin/Burrow

Linkedin에서 GO 로 만들었다.

topic, offset, lag 제공.

현재는 HTTP EndPoint로 json 으로 데이터를 받을 수 있고, UI는 제공하지 않는다.

UI를 제공하지 않는 게 단점이지만, 반대로 생각하면 product 에 특수화된 monitoring metric과 함께 UI를 custom 하게 만들 수 있기 때문에 장점이 될 수 도 있다.

설치 방법은 git의 wiki를 참조하거나 http://seoeun25.tistory.com/550 참조.


4. KafkaOffsetMonitor

https://github.com/quantifind/KafkaOffsetMonitor

topic, offset, lag 를 UI로 제공


개인적으로는 kafka-web-console이 가장 맘에 들지만 더 개발 안한다니 뭔가 좀 찜찜하다.

그래서, Burrow나 KafkaOffsetMonitor를 사용할 예정인데, 쓰다 보면 뭔가 좀 더 필요한 게 있어서 마음이 바뀔 듯 하다.


 




신고

'개발' 카테고리의 다른 글

Kafka Monitoring Tool - Burrow  (0) 2015.10.13
Kafka monitoring  (0) 2015.10.13
Schema Registry  (0) 2015.08.14
Yarn scheduler 가 application을 실행하지 않을 때  (0) 2015.02.16
hive debug with cli  (0) 2014.11.08
파일 안 문자열 치환  (0) 2014.10.22
TRACKBACK 0 COMMENT 0

Schema Registry

Camus는 Kafka에 있는 message를 HDFS로 로딩해 주는 기능을 한다.

다음과 같이 MR을 실행하면 된다.

$ hadoop jar camus-example-<version>-shaded.jar com.linkedin.camus.etl.kafka.CamusJob -P camus.properties


Camus에서 avro format을 사용한다면 Schema Registry가 필요하다.

Schema Registry는  schema를 등록하고 조회하는 기능을 제공한다. 

Camus 코드에서 SchemaRegistry<S> 인터페이스를 보면 다음과 같다.

https://github.com/linkedin/camus/blob/master/camus-api/src/main/java/com/linkedin/camus/schemaregistry/SchemaRegistry.java


SchemaRegistry 구현체는 여러개 있지만 AvroRestSchemaRegistry 가 관리면에서 사용하기가 좋다. 이 구현체는 외부에 있는 RestFul Service를 통해서 schema를 관리 하는 것이다. 따라서 외부에 web server가 구동되어 있어야 하는데, camus의 코드를 보면 avro-repo-bundle-1.7.4-SNAPSHOT.jar 가 schema restfule service를 담당한다. 그런데 이 avro-repo-bundle-XXX.jar는 공개되어 있는 것이 아니고, jar만 lib폴더에 포함되어 있어서 web service를 띄울 수가 없다. 내가 방법을 잘 몰라서 못 띄웠을 수 도 있다. 아무튼 그래서 간단하게 schema restful service를 구현 하였다. 이 Repo 서비스는 server module과 client module로 구성되어 있고, server를 띄우고, camus의 SchemaRegistry 구현체에서는 client를 통해서 schema를 참조 한다. Schema RestFul Service는 confluent.io 에서도 제공하고, 이들 제품이 훌륭하다고 믿지만, confluent.io product를 사용하려면 이들의 kafka, camus 를 함께 사용해야 하기 때문에 linkedin의 kafka와 camus에 바로 붙여서 사용하기에는 무리가 있다.  

코드는 이곳에 : https://github.com/seoeun25/schema-registry


사용 방법

자세한 내용은 git의 README를 참조한다.

1. RepoServer 띄우기

build 해서 생성된 tar를 untar한 후  bin/repo.sh start 한다.

2. schema 등록하기

RepoClient를 통해서 하거나, REST로 등록한다.

3. Camus에서 schema 참조

camus.properties 파일에 다음과 같이 설정한다. url은 RepoServer를 start한 서버의 url이다.




신고

'개발' 카테고리의 다른 글

Kafka Monitoring Tool - Burrow  (0) 2015.10.13
Kafka monitoring  (0) 2015.10.13
Schema Registry  (0) 2015.08.14
Yarn scheduler 가 application을 실행하지 않을 때  (0) 2015.02.16
hive debug with cli  (0) 2014.11.08
파일 안 문자열 치환  (0) 2014.10.22
TRACKBACK 0 COMMENT 0