본문 바로가기

OpenSource(Bigdata&distribution&Network)/kafka

KafKa Cluster ~ HelloWorld

RabbitMQ vs KafKa를 테스트한 자료가 외국블로그에 소개가 되는글을 우연히 본후 

이 두가지를 동시에 사용하면서 메세지 전송을 위한 작업을 진행해보고자 한다.


그래서 우선 요거부터 기본설치를 한다.


카프카 프로젝트 : http://kafka.apache.org

설치 버전 : 0.9.0.1


* 구성형태


사실 이건 설치고자시고 할것도 없더라.

그냥 바로 사용해되 된다. ㅎㅎ... 우선 나같은 경우는 zookeeper 가 있는 상태이고 사용중이기때문에 (hbase에서) 

그냥 바로 이용한다.


카프카에서는 Topic 이라고 하는가본데 이 Topic 을 등록하고 그 Topic 을 통해서 메세지를 주고받는것인가보더라.


내가 구성한 형태는 아래와 같다.


* 카프카를 주키퍼가 있는 서버에 같이 설치를 했으니 그림은 아래와 같은형태이며 

  주키퍼가 이 카프카들의 통신을 해주는 녀석이 되는것이다.


  아래 은색의 원통이 주키퍼가 되며 

  검은색서버같은게 노드가 되겠다 ㅡ_ㅡ;;; ( 저렇게 링형으로 통신하는거 아님 ;;;;; 그냥 저들끼리 연결대있다 라고 표시만 한거임 )


  실제로는 난 5대만 설치해서 사용한다. 

  (hadoop 과 hbase의 마스터 노드가 1번인지라 1번은 안힘들게하려구 ㅋ )

  

  
















* 설정 


config 디렉토리에 server.properties 을 복사해서 설정파일을 카프카를 설치할 노드수만큼 복사해서 이름을 바꾼다.


참고로난 아래와 같다. 

아래 콘솔 스크린샷을 보면 server1.properties ~ server5.properties5 까지가 보일껀데 

저게 각 5대의 노드에 설정할 설정파일이다. 

server.properties 를 복사해서 설정파일을 저렇게 만들고 각파일을 각노드에 맞게 돌어갈수있게 수정하고 각서버에 복사함.




server.properties  ( 1~5번까지 ) ~ 설정변경한 부분


아래 내용은 2번서버다. ( broker.id는 1,2,3,4,5 각 파일별로 )

port 도 9093 ~ 9097까지 다르게 

host.name은 당연히 각 서버명 

zookeeper.connect 는 주키퍼 연결서버에 맞게. ㅋ 주었다.


broker.id=1 

port=9093

host.name=os2.local

zookeeper.connect=os2.local:2181,os3.local:2181,os4.local:2181,os5.local:2181,os6.local:2181




* 터미널상에서 실행한 명령


Topic 만들기 

[hadoop@os2 config]$ ./kafka-topics.sh --create --zookeeper os2.local:2181 --partitions 20 --replication-factor 5 --topic test2  


각서버 스타트~ 

1번 /apps/kafka/bin/kafka-server-start.sh /apps/kafka/config/server1.properties

2번 /apps/kafka/bin/kafka-server-start.sh /apps/kafka/config/server2.properties

3번 /apps/kafka/bin/kafka-server-start.sh /apps/kafka/config/server3.properties

4번 /apps/kafka/bin/kafka-server-start.sh /apps/kafka/config/server4.properties

5번 /apps/kafka/bin/kafka-server-start.sh /apps/kafka/config/server5.properties



------------------------------------------------------------------------------------------------------------------------------------------


그리고나서 Producer가 될곳 아무데나 프로세스를 띄우고. ( 난 첫번째 서버에서 띄움 )

[hadoop@os2 bin]$ ./kafka-console-producer.sh --broker-list os2.local:9092 --topic test2

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/home/hadoop/classes/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/home/hadoop/classes/logback-classic-1.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/apps/kafka/libs/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]


이렇게 대기중~



------------------------------------------------------------------------------------------------------------------------------------------


그리고 Consumer 가 될곳도 프로세스를 띄우자 ㅋ 

아래 예제는 다섯번째 서버

[hadoop@os6 bin]$ ./kafka-console-consumer.sh --zookeeper os6.local:2181 --topic test2 --from-beginning

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/home/hadoop/classes/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/home/hadoop/classes/logback-classic-1.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/apps/kafka/libs/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]


Consumer 가 될놈을 난 예시로 3군데를 띄움 ( 아래 결과 사진 )

그리고 Producer 쪽에서 아무거나 입력을 하면 Consumer 쪽에서 짠짠하고 나온다. ㅋㅋㅋ



* 결과 


 192.168.0.112번이 Producer ( 발송하는놈 ) 가 되고 여기서 메세지를 입력하면 


 나머지 콘솔에서 그대로 출력을 한다. ( 이쪽은 Consumer 라고 부른다. ) 


'OpenSource(Bigdata&distribution&Network) > kafka' 카테고리의 다른 글

RabbitMQ Hello World  (0) 2016.04.10
erlang yum 설치 + RabbitMQ RPM 설치.  (0) 2016.04.09