'2015/08'에 해당되는 글 1

  1. 2015.08.14 Schema Registry

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

티스토리 툴바