Jinn Data Platform
Jinn Data Platform을 적용한 실제 사례
(D사의 분석 인프라 개발)
Collector(HTTP/HTTPS Collecting Server)
구조 및 데이터 흐름
실시간 로그 수집 처리 기술
(특허 출원)
기술배경
- 기존의 실시간 수집 분석은 일반적으로 서버(데몬)에 해당하는 수집기가 이벤트에 대한 분석을 수행하여 DB에 저장하는 방식임
- 위 방식의 문제점은 이벤트 발생 부분과 분석하여 데이터베이스에 저장하는 부분이 동기화되어 분석하는 동안 완료 신호를 이벤트 발생부에 바로 보낼 수 없음
- 더불어 분석 중 발생하는 에러가 서버에 문제를 일으키고 이벤트를 발생시키는 프로세스에 문제를 야기할 수 있음
- 추가로 DB에서 발생하는 문제가 서버에 문제를 일으키고 이벤트를 발생시기는 프로세스로 장애를 전파시킬 수 있음
*제안 방식이 가능한 이유는 Local 및 SSH Remote에 대한 실시간 읽기 기술이 가능하기 때문임
기존방식
제안방식
SSH를 이용한 실시간 읽기 기술 상세
- 대상 서버에 Agent 설치 및 운영 등의 별도 업무가 필요 없는 Agentless 방식
- 일시적인 부하를 주지 않고 부하를 고르고 미미하게 분산시켜 대상 서버에 주는 영향을 최소화함
1.TimedRollingLogger에서는 버퍼를 사용하지 않고 라인 단위 flush 수행
2.SSHInput은 읽어 들일 대상에 따라 SSHAgent를 할당하고 SSHAgent는 확인된 파일 개수에 따라 SftpSubAgent를 할당함
3.SttpSubAgent는 SSH Connection을 열고 Sftp Channel을 열어 StreamingReader로 파일 읽기를 시도함
4.StreamingReader 는 라인을 읽을 때 칼럼 구분, 시간 파싱 등을 동시에 수행
5.StreamingReader 는 읽을 라인이 없는 경우 또는 라인이 완성되지 않는 경우 무조건 null을 반환함 (일반적인 Reader의 동작과 다르게 처리되는 부분)
6.SftpSubAgent는 null이 반환되는 경우 현재까지 읽은 스트림의 위치를 기억하고 Sftp Channel을 닫음
7.SftpSubAgent는 현재 열려 있는 SSH Connection에 기억하고 있는 스트림의 위치부터 Sftp Channel을 열어 StreamingReader를 통해 라인을 읽는 과정을 반복함
8.시간에 따른 조건을 확인하고 읽어 들일 내용이 없을 때 Sftp Channel과 SSH Connection을 종료함
Loader의 기본 순환 구조
(특허 출원)
Loader의 실시간 처리 구조 및 데이터 흐름
실시간 집계 구조 상세
Analyzer 구조와 데이터 흐름
분석 쿼리에서 RDBMS와 Hive의 데이터 흐름
기존 RDBMS 기반 시스템과 하둡시스템의 일반적인 연동 방법
HDFS의 읽기 쓰기 및 자체 스케줄링을 통한 연동
(특허 출원)
Sqoop만을 이용한 경우의 작업과 데이터 흐름 및 문제점
Hive Server, Hive, Yarn 등 분석에 사용되어야 할 자원이 RDBMS와의 연동에 많이 사용되고 별도로 다수의 sqoop 프로세스를 실행 및 관리해야 하는 것은 매우 큰 부담임
기존 ETL 툴을 이용하는 경우의 작업과 데이터 흐름 및 문제점
분석에 사용되어야 할 자원이 RDBMS와의 연동에 많이 사용되고, ETL 툴이 고가이며 Hive Server 특성으로 ODBC/JDBC를 이용한 데이터 추출이 느리다는 단점이 있음
MR 등의 개발을 이용하는 경우의 작업과 데이터 흐름 및 문제점
별도의 스케줄링이 필요하고 비즈니스 로직이 추가될 때마다 별도의 개발이 이루어져야 하는 부담이 있음, 고급 인력이 필요한 개발로 일반적인 조직에서 유지하기 어려움
Analyzer의 작업과 데이터 흐름 및 장점
사용자의 설정 정보 및 쿼리를 읽어 들여 수집 데이터의 확인부터 분석 결과 전송까지의 전 과정이 Scheduler에 의해 자동으로 수행되며 HDFS를 직접 읽고 써 빠른 성능이 특징