Data

[1028 from 실무로 배우는 빅데이터 기술 By 김강원 08]수집- 카프카

 

카프카 http://kafka.apache.org/
MOM(massage orianted middleware)소프트웨어,
대규모 발생 작은데이터, 비동기 방식 처리 : 분산임시 저장소 : 빅데이터 외 IOT, SNS에서도 사용. 
(Queue , Topic...이 버퍼역할, 트랜젝션처리)
라이센스 Apache
유사 프로젝트 ActiveMQ, RabbitMQ, HonnetMQ(호넷)등
주요
구성요소
Broker 카프카의 서비스 인스턴스
다수의 Broker를 클러스터로 구성하고 Topic이 생성되는 물리적서버
Topic Broker에서 데이터의 발생/소비 처리를 위한 중간저장소
Provider Broker의 특정 토픽에 데이터를 전송(발행)하는 역할로, 애플리케이션에서 카프카라이브러리를 이용해 구현
Consumer Broker의 특정 Topic에서 데이터를 수신(소비)하는 역할로서 애플리케이션에서 카프카 라이브러리를 이용해 구현. 
아키텍처 1
싱글 브로커 온 
싱글노드
** 모두 주키퍼 활용
아키텍처2
멀티 브로커 싱글노드
- 업무도메인 복잡한 메시지 처리시 사용. 
아키텍처3
멀티브로커/멀티노드
: 실제 많이 사용
Topic 1-2 ~Topic2-1 묶을수 있다. 

-대규모 메시지 있을때 
대규모 컨슈머가 있어야 안정성
-대규모 발행소비 적합
- 물리적 나눠진 브로커간 복제가능(안정성)
- 업무 도메인별 메시지 분리가능.  
활용방안1:트랜젝션처리 플럼(대규모 실시간로그) --비동기---> 카프카(버퍼링- 트랜젝션1~N) -> 실시간 처리/분석
                                                                                              알림/ 적재 활용. 
활용방안2:장애극복 실시간 로그발생 -> 플럼 -> Hbase   
: 카프카가 없으면. Hbase 셧다운 or 네트워크 1차 장애...  플럼은 버퍼링이 크지않음. 2차장애
스마트카 실시간로그 -> 플럼 -> 카프카 브로커 1~3(대규모 분산임시저장소)-> 스톰-> Hbase

카프카 : 멀티노드, 대규모 클러스터.... 장애발생 2시간동안... 담아둘수 있음
설치 1. CM Cluster1 콤보박스 > 서비스 추가. > kafka > 계속 > kafka Broker  _  Server02설치.  나머지 설치안함.  > 완료. 
2. 환경구성
kafka> 구성  Data Retention Time : 7일 >> 15분
3. 재시작. 
실행
1. 플럼 설정 : 
카프카 싱크  : 카프카로 전송하는 플럼 에이전트. 

프로듀서 콘솔 -> 카프카 Broker : SmartCar-Topic -> Consumer Console1
                                                                 -> Consumer Console2
실행
2. Topic생성. 
서버 02
$kafka-topics --create --zookeeper server02.hadoop.com:2181 --replication-factor 1 --partitions 1 --topic SmartCar-Topic

--replication-factor : 카프카 다중 Broker 만들고 전송한 데이터를 replication-factor 개수만큼 복제하게 되는데, 파일럿 프로젝트는 단일 카프카 브로커이므로 복제개수는 1개만 설정한다. 
--partitions : 옵션은 해당 Topic에 데이터들이 partitions의 개수만큼 분리 저장하게 된다. 
이역시 다중 Broker에서 쓰기/읽기 성능 향상을 위해 사용하는 옵션이다. 파일럿 환경에서는 1로만 설정한다. 

중략

3. Producer사용.  $kafka-console-producer --broker-list server02.hadoop.com:9092 -topic SmartCar-Topic



중략

4. Consumer -1 사용
$kafka-console-consumer --bootstrap-server server02.hadoop.com:9092 --topic SmartCar-Topic --partition 0 --from-beginning

--from-beginning 지금까지 못받은데이터 전부다 출력. 

중략


5. Consumer-2 사용 $kafka-console-consumer --bootstrap-server server02.hadoop.com:9092 --topic SmartCar-Topic --partition 0 --from-beginning

중략


프로듀서 생성시

수많은 컨수머들이 동시 처리