프로젝트 단계 | 1. 빅데이터 이해하기 2. 빅데이터 파일럿 프로젝트 3. 빅데이터 수집 4. 빅데이터 적재 1 : 대용량 로그파일 적재 5. 빅데이터 적재 2 : 실시간 로그/분석 적재 6. 빅데이터 탐색 7. 빅데이터 분석 8. 분석환경 확장. |
빅데이터 수집 | 1. 빅데이터 수집 개요 - 빅데이터 수집개념 중요성 , 일반 수집과 차이점 설명 >> 분산환경 2. 빅데이터 수집에 활용되는 기술 - 빅데이터 수집에서 사용할 두가지 기술(플럼, 카프카)를 소개하고 기술별 주요 기능과 아키텍쳐, 활용방안 알아본다. 3. 수집, 파일럿 실행 1단계 -수집 아키텍처 - 스마트카에서 발생하는 로그파일 수집과 관련된 요구사항 구체화, 수집 요구사항을 해결하기 위한 파일럿 아키텍쳐를 이해한다. 4. 수집 파일럿 실행 2단계 - 수집 환경구성 - 스마트카 로그 파일을 수집하기 위한 아키텍처 설치 및 환경구성을 진행한다. 플럼 카프카 순으로 설치를 진행한다. 5. 수집 파일럿 실행 3단계 - 플럼 수집 기능구현 - 스마트카 로그 파일을 수집하기 위한 플럼 환경을 구성하고 관련 에이전트를 생성한다. 6. 수집 파일럿 실행 4단계 - 카프카 수집 기능 구현 - 플럼이 수집한 데이터를 카프카 토픽에 전송하는 기능을 구현하고, 카프카의 토픽에 전송된 데이터를 확인하는 방법을 알아본다. 7. 수집 파일럿 실행 5단계 - 수집 기능 테스트 - 로그 시뮬레이터가 생성한 스마트카의 상태정보 데이터를 플럼이 수집해서 카프카의 토픽에 전송하는 기능을 점검하고 전송된 데이터를 확인한다. |
수집 개요 | 수집 -> 적재 -> (처리/탐색 -> 분석/응용) : 전체리소스 40~50% 내부데이터 ---정형---> 빅데이터 수집 <---비정형---- 외부데이터 비정형 : 스키마 정보 없이..텍스트 데이터 ex) SNS, 포털/블로그 반정형 : CSV ex) 뉴스/날씨 기관 지표 내부데이터: 고객정보(RDB) , 거래정보(FTP), 상품/서비스정보(API), 마케팅/VOC(fIle) 외부데이터: SNS(API), 포털/블로그(크롤링), 뉴스/날씨(RSS), 기관, 지표(FTP) 내부데이터 효과 : 스마트카 이상징후 예측, 운전패턴 군집, 차량용품 추천 외부데이터 효과 : 운전자 성향, 평판분석, 사용자 프로파일 관심사 동향분석, 날씨 교통정보 차량 최적화 운전자의 관심, 뉴스를 음성 서비스로 제공 |
수집절차 | 수집 대상선정 (-> 수집계획 수립 -> 수집 실행) 수집 대상선정 : 도메인, 데이터셋 도출, 리스트 작성, 대상 부서 파악 수집 계획 수립 : 데이터 제공여부 협의 , 유형/속성 확인, 수집환경/표준 파악, 주기/ 용량 파악 수집 연동/포맷 파악, 수집 기술 선정, 수집 정의서/계획서 작성 **** 수집 정의서 : I/F 정의서 -> 개발. 수집 실행 : 단위테스트 진행, 연동 테스트 진행, 데이터 수집 실행, 데이터 적재 처리. |
수집이 먼저? 분석 활용이 먼저? |
정보없이 데이터만 가질수 있다. 하지만 데이터 없이 정보를 가질 수 없다. - 대이얼 키즈 모란. ~~ 분석없이 수집할수 있다. .. 무엇을 분석할지모르면서 무엇을 수집? ~~무엇을 분석할지 알고 있다면.. 빅데이터 시스템 필요 없다. .. 기존시스템 활용. 기존 한계를 뛰어 넘기위한 시스템. >> 데이터로부터 새로운 발견이 목표. 3V + 분석가 노하우. 데이터 패턴. .. 기존에 없었떤 데이터 패턴까지 볼수 있어 새로운 인사이트. ROI : Return on investment 투자 대비 수익이 나지 않아 실행하지 않았음. 외부데이터 의 양이 너무 많아서.. RDBMS 한계 , 빅데이터 기술. x86 저비용 고사양하드웨어로 가능해짐 |
수집 - 이키텍처 | |
수집 요구사항 | 1. 차량의 다양한 장치로 발생하는 로그 파일을 수집해서 기능별 상태를 점검 2. 운전자의 운행정보가 담긴 로그를 실시간으로 수집해서 주행 패턴을 분석. |
수집 요구사항 구체화 | 1. 스마트카로부터 로그 파일들이 주기적으로 발생 : 플럼 이용 대용량 배치파일 실시간 로그파일수집 2. 스마트카 배치 로그 파일 이벤트 감지 : 플럼의 Source 컴포넌트중 SpoolDir이용 주기적인 로그파일 발생 이벤트 감지 3. 스마트카 실시간 로그발생이벤트 감지 > Source 컴포넌트중 Exec-Tail 을 이용 특정 로그 파일 로그생성이벤트 감지. 4. 스마트 카에서 만들어내는 로그 데이터에 가비지데이터 있을 수 있다. >> 플럼의 Interceptor를 이용해 정상 패턴의 데이터만 필터링 5. 수집 도중 장애가 발생해도 데이터를 안전하게 보관및 재처리 할수 있다.>> 플럼의 메모리 Channel 카프카Broker 사용으로 로컬 디스크 파일 시스템에 수집 데이터를 임시저장 6. 스마트카의 실시간 로그 파일은 비동기 처리로 빠른 수집 처리를 해야한다. >> 플럼에서 수집한 데이터를 카프카 Sink 컴포넌트를 이용해 카프카 Topic에 비동기 전송. |
1단계 : 플럼에이전트 1,2로 사용하는 방식. |
[3초간격발생] 1. 차량상태정보 100MB/1일 -------플럼에이전트1-------- 2. SoolDir Source 3. Memory Channel 4. Logger Sink ---------플럼 Stdout-------- 5. Log 파일 >>>>>최종 하둡.....??? ~~~~~~~~~~~~~~~~~~~~ [1초간격으로 발생] 6. 운전자운행정보 400KB/1초 --------프럶에이전트 2------- 7. Exec Tail Source 8. Memory Channel 9. Kafka Sink ----------카프카----------- 10. Topic |
수집 기능 테스트 : 서버 2 | |
1. 스마트카 로그 시뮬레이터 백그라운드 방식으로 실행. |
cd /home/pilot-pjt/working (bigdata.smartcar.loggen-1.0.jar >> 로그시뮬레이터. ) ## 일간. java -cp bigdata.smartcar.loggen-1.0.jar com.wikibook.bigdata.smartcar.loggen.CarLogMain 20160101 3 & ## 실시간. java -cp bigdata.smartcar.loggen-1.0.jar com.wikibook.bigdata.smartcar.loggen.DriverLogMain 20160101 3 & tail -f /home/pilot-pjt/working/SmartCar/SmartCarStatusInfo_20160101.txt tail -f /home/pilot-pjt/working/driver-realtime-log/SmartCarDriverInfo.log |
2. 일간 로그파일을 플럼 SmartCarInfo 에이전트의 SpoolDir 경로로 옮긴다. |
$mv /home/pilot-pjt/working/SmartCar/SmartCarStatusInfo_20160101.txt /home/pilot-pjt/working/car-batch-log/ $cd /home/pilot-pjt/working/car-batch-log/ $ls -ltr |
3. 카프카 Topic생성 카프카 프로듀서 실행. (?? 별도인지 한번만실행인지 모르겠네용. ) |
$kafka-topics --create --zookeeper server02.hadoop.com:2181 --replication-factor 1 --partitions 1 --topic SmartCar-Topic $kafka-console-producer --broker-list server02.hadoop.com:9092 -topic SmartCar-Topic |
4. 플럼 설정 후 재시작 | 플럼 > 구성 시스템 그룹 Flume(서비스전체 : Service-Wide) : flume Agent 이름 Agent Default Group : SmartCar_Agent 구성파일 Agent Default Group : SmartCar_Agent.sources = SmartCarInfo_SpoolSource DriverCarInfo_TailSource SmartCar_Agent.channels = SmartCarInfo_Channel DriverCarInfo_Channel SmartCar_Agent.sinks = SmartCarInfo_LoggerSink DriverCarInfo_KafkaSink SmartCar_Agent.sources.SmartCarInfo_SpoolSource.type = spooldir SmartCar_Agent.sources.SmartCarInfo_SpoolSource.spoolDir = /home/pilot-pjt/working/car-batch-log SmartCar_Agent.sources.SmartCarInfo_SpoolSource.deletePolicy = immediate SmartCar_Agent.sources.SmartCarInfo_SpoolSource.batchSize = 1000 SmartCar_Agent.sources.SmartCarInfo_SpoolSource.interceptors = filterInterceptor SmartCar_Agent.sources.SmartCarInfo_SpoolSource.interceptors.filterInterceptor.type = regex_filter SmartCar_Agent.sources.SmartCarInfo_SpoolSource.interceptors.filterInterceptor.regex = ^\\d{14} SmartCar_Agent.sources.SmartCarInfo_SpoolSource.interceptors.filterInterceptor.excludeEvents = false SmartCar_Agent.channels.SmartCarInfo_Channel.type = memory SmartCar_Agent.channels.SmartCarInfo_Channel.capacity = 100000 SmartCar_Agent.channels.SmartCarInfo_Channel.transactionCapacity = 10000 SmartCar_Agent.sinks.SmartCarInfo_LoggerSink.type = logger SmartCar_Agent.sources.SmartCarInfo_SpoolSource.channels = SmartCarInfo_Channel SmartCar_Agent.sinks.SmartCarInfo_LoggerSink.channel = SmartCarInfo_Channel SmartCar_Agent.sources.DriverCarInfo_TailSource.type = exec SmartCar_Agent.sources.DriverCarInfo_TailSource.command = tail -F /home/pilot-pjt/working/driver-realtime-log/SmartCarDriverInfo.log SmartCar_Agent.sources.DriverCarInfo_TailSource.restart = true SmartCar_Agent.sources.DriverCarInfo_TailSource.batchSize = 1000 SmartCar_Agent.sources.DriverCarInfo_TailSource.interceptors = filterInterceptor2 SmartCar_Agent.sources.DriverCarInfo_TailSource.interceptors.filterInterceptor2.type = regex_filter SmartCar_Agent.sources.DriverCarInfo_TailSource.interceptors.filterInterceptor2.regex = ^\\d{14} SmartCar_Agent.sources.DriverCarInfo_TailSource.interceptors.filterInterceptor2.excludeEvents = false SmartCar_Agent.sinks.DriverCarInfo_KafkaSink.type = org.apache.flume.sink.kafka.KafkaSink SmartCar_Agent.sinks.DriverCarInfo_KafkaSink.topic = SmartCar-Topic SmartCar_Agent.sinks.DriverCarInfo_KafkaSink.brokerList = server02.hadoop.com:9092 SmartCar_Agent.sinks.DriverCarInfo_KafkaSink.requiredAcks = 1 SmartCar_Agent.sinks.DriverCarInfo_KafkaSink.batchSize = 1000 SmartCar_Agent.channels.DriverCarInfo_Channel.type = memory SmartCar_Agent.channels.DriverCarInfo_Channel.capacity= 100000 SmartCar_Agent.channels.DriverCarInfo_Channel.transactionCapacity = 10000 SmartCar_Agent.sources.DriverCarInfo_TailSource.channels = DriverCarInfo_Channel SmartCar_Agent.sinks.DriverCarInfo_KafkaSink.channel = DriverCarInfo_Channel |
5. 카프카. Counsumer작동 |
$kafka-console-consumer --bootstrap-server server02.hadoop.com:9092 --topic SmartCar-Topic --partition 0 --from-beginning 플럼 실시간에이전트 -> 카프카 전송 -> 카프카 브로커 스마트카 토픽 메시지 담겨있음. 카프카 콘솔 컨슈머가 꺼내서 보내줌. |
수집 기능 점검 | |
1. 플럼 표준출력로그 전송됐는지 확인 | $tail -f /var/log/flume-ng/flume-cmf-flume-AGENT-server02.hadoop.com.log agent 로그 확인가능. 수집되고 있는 헤더바디... 2021-05-25 22:16:06,356 ERROR org.apache.flume.lifecycle.LifecycleSupervisor: Unable to start EventDrivenSourceRunner: { source:Spool Directory source SmartCarInfo_SpoolSource: { spoolDir: /home/pilot-pjt/working/car-batch-log } } - Exception follows. org.apache.flume.FlumeException: Unable to read and modify files in the spooling directory: /home/pilot-pjt/working/car-batch-log at org.apache.flume.client.avro.ReliableSpoolingFileEventReader.<init>(ReliableSpoolingFileEventReader.java:195) at org.apache.flume.client.avro.ReliableSpoolingFileEventReader.<init>(ReliableSpoolingFileEventReader.java:89) at org.apache.flume.client.avro.ReliableSpoolingFileEventReader$Builder.build(ReliableSpoolingFileEventReader.java:882) >> SpoolDir 작동할때 : 읽고 쓰는 권한이 필요. root를 사용하지 않음. cd /home/pilot-pjt/ chmod 777 -R working/ ![]() |
2. Consumer 콘솔창 | 수집되고 있는지 확인 |
테스트종료후 | ps -ef |grep smartcar.log CarLogMain, DriverLogMain kill -9 pid |
파일럿 환경의 로그 확인 | Hadoop에코시스템서버들 로그위치 /var/log/디렉터리(cloudera, Hadoop, Oozie, 등_) Radis 서버 로그 위치 /var/log/radis_6379.log Storm 서버로그 위치 /home/pilot-pjt/storm/logs/ Zeppelin 서버 로그 위치 /home/pilot-pjt/zeppelin-0.8.2-bin-all/logs |
파일럿 환경에서 HDFS문제발생 |
HDFS 상에 Corrupt, Blockes/Files 같은 문제가 발생하거나 Safe 모드로 전환되어 빠져 못빠져나오는 경우 발생, 만약 파일럿 환경 일부 기능, 설치중 문제발생한다면 HDFS 파일/불록 깨짐, 또는 Safe모드 전환 여부를 체크해야 한다. -HDFS 파일 시스템 검사 : $ hdfs fsck / -HDFS Safe 모드 발생 후 빠져나오지 못 할 경우. Safe 모드 강제 해제 : $hdfs dfsadmin -safemode leave -HDFS Corrupt Blocks/Files 등이 발생해 복구가 불가능한 경우. 손상된 파일 강제 삭제 : $hdfs fsck / -delete >>하이브.. 등등 에코시스템영향. 손상된 파일을 /lost+found 디렉터리 이동 : $hdfs fsck / -move |
'Data' 카테고리의 다른 글
[1028 from 실무로 배우는 빅데이터 기술 By 김강원 08]수집- 카프카 (0) | 2021.05.24 |
---|---|
[1028 from 실무로 배우는 빅데이터 기술 By 김강원 07]수집- 플럼 (0) | 2021.05.24 |
[1028 from 실무로 배우는 빅데이터 기술 By 김강원 05]하둡, 주키퍼 명령어 (0) | 2021.05.24 |
[1028 from 실무로 배우는 빅데이터 기술 By 김강원 04] 빅데이터 클러스터 구성 (0) | 2021.05.22 |
[1028 from 실무로 배우는 빅데이터 기술 By 김강원 03] 서버설정 크라우데라 설치 (2) | 2021.05.21 |