SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
“데이터,
 데이터,
 데이터”
 참지
 못하고
 그는
 외쳤다.
 
“흙도
 없이
 벽돌을
 만들
 수는
 없잖아!”
 
 
- 셜록 홈즈, 너도밤나무집 中
WzDat과 Pandas를 통
한 로그 데이터 분석
과학의 패러다임 변천
- from Jim Gray on eScience
•

수 천년 전 - 경험에 의해

•

수 백년 전 - 이론에 의해

•

수 십년 전 - 계산에 의해

•

현재 - 데이터 탐사에 의해
데이터 탐사의 단계
!

1. 데이터를 수집
2. 데이터를 선별
3. 정보의 형태로 저장
4. 전문가가 분석
빅 데이터?
•

하둡
•
•

•

~TB 단위의 분석에 적합
셋팅 및 MR코딩의 비용

GB 단위는 다양한 방법이 가능
•

SQL, NoSQL, 스크립트 등

•

저비용, Try  Discover에 유리
로그 (= 데이터?)
로그의 장점
•

개발자라면 누구나 사용

•

NoSQL 원조 - 추가, 수정에 용이.

•

파일은 생각보다 안정적

•

문제 발생 후 사후 분석에 최적

•

장기간 보존이 필요 없다 - “Big Stream”
로그의 단점
•

여러개의 머신, 파일로 흩어져 있다.

•

하나의 타임 라인으로 보기 힘들다.

•

정규화 되어있지 않다.
로그가 데이터가 되려면
•

흩어져 있는 로그 파일들 - 수집

•

서로 다른 파일 들 - 하나의 타임라인으로 통합

•

정규화 되지 않은 로그 메시지들 - 선별 및 정규화
바람직한 로그
•

로그 파일 생성시 파일(경로)명에 필요한 정보
•
•

로그를 생성한 서버의 종류

•
•

로그가 발생한 일시

로그를 생성한 서버의 번호

로그 파일 내용에 필요한 할 정보
•
•

•

로그 메시지를 출력한 일시 (년:월:일 - 시:분:초)
로그 메시지의 레벨 (크리티컬, 에러, 워닝, 정보, 디버그)

로그가 수집될 때 파일(경로)에 필요한 할 정보
•

로그를 생성한 노드(머신) 이름 - 지역 정보 포함 권장
•

좋은 로그 파일명
C:/APPNAME-KR/GS101/AgentServer_2013-01-28.log

•

부족한 로그 파일명
C:/log.txt
•

좋은 로그 메시지

2013/06/28-13:07:59 [ERR] - File Open Error
2013/06/28-13:08:00 [WRN] - Player Log Out

!

•

부족한 로그 메시지

6/28 File Open Error
Player Log Out
로그 수집
로그 수집
•

분산되어 있는 로그를 한 곳으로 모으는 과정

•

기존 프로젝트 로그 수집
•

•

서비스 중인(파일기반) 로그 집중화의 목적

새로운 프로젝트 로그 수집
•

최신 솔루션 선택이 가능
Node
Apps
Log

Apps
Log

rsync
Log Node

Node
Apps
Log

Apps

rsync

Log

Log

Node
Apps
Log

Apps
Log

rsync

Log
로그 선별, 저장 - WzDat
“What’s That?”
WzDat
•

로그에서 의미 있는 데이터를 쿼리

•

단순하지만 강력한 파이썬 구문 형식

•

다량의 비 정규화된 로그 파일을 선별 후,
•

보거나

•

변환하거나 (- Pandas 구조체)

•

저장(다운로드)
WzDat
WzDat 셀렉터
뒤에 ~s가 붙은 복수형 단어, 각괄호 [ ] 로 조건 기술
•

files - 파일 선택

•

nodes - 노드(머신) 선택

•

servers - 서버(앱) 선택

•

dates - 일시(Date Time) 선택
files
•

모든 파일을 선택
files

•

첫 번째, 마지막 파일
files[0], files[-1]

•

100번째 에서 10개 파일
files[100:110]

•

앞에서 10개, 뒤에서 10개
files[:10], files[-10:]
dates
•

파일이 있는 모든 일시를 선택
dates

•

파일이 있는 첫 번째, 마지막 일시
dates[0], dates[-1]

•

같은 식으로
dates[100:110], dates[:10], date[-10:]
nodes
•

파일을 만든 모든 노드(머신)를 선택
nodes

•

파일을 만든 첫 번째, 마지막 노드
nodes[0], nodes[-1]

•

같은 식으로
nodes[100:110], nodes[:10], nodes[-10:]
servers
•

파일을 만든 모든 서버(앱)을 선택
servers

•

파일을 만든 첫 번째, 마지막 서버
servers[0], servers[-1]

•

같은 식으로
servers[100:110], servers[:10], servers[-10:]
WzDat 상수
•

‘카테고리 . 이름’의 형식

•

파일 분석과정에서 자동으로 정의

•

상수의 카테고리는 공통, 이름은 프로젝트 별로 다양하다. (아
래는 C9의 예)
•

node.ASIA_1 # 아시아 1번 서버 머신

•

server.GameServer # 게임서버

•

date.D2013_07_11 # 2013년 7월 11일
상수로 필터링
•

2013년 7월 11일 파일만
files[date.D2013_07_11]

•

게임 서버 파일만
files[server.GameServer]

•

ASIA-1 노드에서 파일이 발생한 일시만
dates[node.ASIA_1]
상수 매칭
•

상수의 앞 문자열만 맞으면 모두 매칭
# node.ASIA_1, node.ASIA_2, … 식으로 여럿 있을 때
files[node.ASIA] # 모든 아시아 노드의 파일이 매칭
셀렉터의 결과로 필터링
•

마지막 날의 파일만 선택
files[dates[-1]]

•

마지막 날 파일을 만든 노드만 선택
nodes[dates[-1]]

•

아시아 지역의 마지막 날 파일만 선택
files[dates[node.ASIA][-1]]
복합 조건 필터링
•

마지막 날의 게임서버 파일만
files[dates[-1], server.GameServer]

•

7월 12일의 게임/인증 서버 파일중 마지막 10개만

files[date.D2013_07_12, server.GameServer,
server.AuthServer][-10:]
파일 병합, 단어 검색
•

조건에 맞는 파일들을 합쳐 하나의 임시파일에 저장
files[…].merge()

•

파일들에서 ‘ERR’단어를 포함한 줄만 찾아 임시파일에 저장
files[…].find(‘ERR’)

•

검색 결과 내 재검색
files[…].find(‘ERR’).find(‘OnClose’)
결과 보기
•

선택 결과 파일 앞, 뒤 보기

files[…].head(), files(…).tail()
files[…][:-10], files[…].[-10:]
•

파일 내용 앞, 뒤 보기

files[…].merge().head(), files(…).find(‘ERR”).tail()
files[…].merge()[0:10], files(…).find(‘ERR”).[-10:]
DataFrame으로 변환
!

•

병합,찾은 결과를 Pandas의 DataFrame으로 변환
files[…].find(…).to_frame()

•

find, merge는 여러 파일을 합쳐주지만, 아직 타
임 라인 소팅은 되지 않은 상태

•

DataFrame으로 만들어 질 때 비로소 시간 순서대로
정렬된다.
WzDat 어댑터와 파일타입
•

프로젝트 별로 다르다
•

•

파일 경로명, 파일 종류, 내용 기록 방식등

공용 인터페이스를 위한 프로젝트 어댑터 작성 필요
•

하나 이상의 파일 타입 모듈을 작성
•

c9.log - C9의 로그 파일 모듈 (*.txt)

•

c9.dump - C9 덤프 파일 모듈 (*.dmp)

Weitere ähnliche Inhalte

Was ist angesagt?

20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료BOMI KIM
 
하둡 타입과 포맷
하둡 타입과 포맷하둡 타입과 포맷
하둡 타입과 포맷진호 박
 
An introduction to hadoop
An introduction to hadoopAn introduction to hadoop
An introduction to hadoopMinJae Kang
 
하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다민철 정민철
 
하둡 설치(의사분산모드)
하둡 설치(의사분산모드)하둡 설치(의사분산모드)
하둡 설치(의사분산모드)Kwangyoung Jeon
 
about hadoop yes
about hadoop yesabout hadoop yes
about hadoop yesEunsil Yoon
 
Distributed Programming Framework, hadoop
Distributed Programming Framework, hadoopDistributed Programming Framework, hadoop
Distributed Programming Framework, hadoopLGU+
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3Sung-jae Park
 
서울 하둡 사용자 모임 발표자료
서울 하둡 사용자 모임 발표자료서울 하둡 사용자 모임 발표자료
서울 하둡 사용자 모임 발표자료Teddy Choi
 
하둡완벽가이드 Ch9
하둡완벽가이드 Ch9하둡완벽가이드 Ch9
하둡완벽가이드 Ch9HyeonSeok Choi
 
아파치 쓰리프트 (Apache Thrift)
아파치 쓰리프트 (Apache Thrift) 아파치 쓰리프트 (Apache Thrift)
아파치 쓰리프트 (Apache Thrift) Jin wook
 
PostgreSQL 이야기
PostgreSQL 이야기PostgreSQL 이야기
PostgreSQL 이야기I Goo Lee
 
알고 쓰자! HBase | Devon 2012
알고 쓰자!  HBase | Devon 2012알고 쓰자!  HBase | Devon 2012
알고 쓰자! HBase | Devon 2012Daum DNA
 

Was ist angesagt? (20)

20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
20180714 하둡 스터디 종료 보고 및 연구과제 발표자료
 
hadoop ch1
hadoop ch1hadoop ch1
hadoop ch1
 
하둡 타입과 포맷
하둡 타입과 포맷하둡 타입과 포맷
하둡 타입과 포맷
 
HBase 훑어보기
HBase 훑어보기HBase 훑어보기
HBase 훑어보기
 
An introduction to hadoop
An introduction to hadoopAn introduction to hadoop
An introduction to hadoop
 
하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다
 
Apache hive
Apache hiveApache hive
Apache hive
 
하둡 설치(의사분산모드)
하둡 설치(의사분산모드)하둡 설치(의사분산모드)
하둡 설치(의사분산모드)
 
Hdfs
HdfsHdfs
Hdfs
 
about hadoop yes
about hadoop yesabout hadoop yes
about hadoop yes
 
Distributed Programming Framework, hadoop
Distributed Programming Framework, hadoopDistributed Programming Framework, hadoop
Distributed Programming Framework, hadoop
 
Hive begins
Hive beginsHive begins
Hive begins
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3
 
서울 하둡 사용자 모임 발표자료
서울 하둡 사용자 모임 발표자료서울 하둡 사용자 모임 발표자료
서울 하둡 사용자 모임 발표자료
 
하둡완벽가이드 Ch9
하둡완벽가이드 Ch9하둡완벽가이드 Ch9
하둡완벽가이드 Ch9
 
Hadoop overview
Hadoop overviewHadoop overview
Hadoop overview
 
아파치 쓰리프트 (Apache Thrift)
아파치 쓰리프트 (Apache Thrift) 아파치 쓰리프트 (Apache Thrift)
아파치 쓰리프트 (Apache Thrift)
 
PostgreSQL 이야기
PostgreSQL 이야기PostgreSQL 이야기
PostgreSQL 이야기
 
Linux tutorial
Linux tutorialLinux tutorial
Linux tutorial
 
알고 쓰자! HBase | Devon 2012
알고 쓰자!  HBase | Devon 2012알고 쓰자!  HBase | Devon 2012
알고 쓰자! HBase | Devon 2012
 

Andere mochten auch

Interactive fiction
Interactive fictionInteractive fiction
Interactive fiction정주 김
 
Deploying flask with nginx & uWSGI
Deploying flask with nginx & uWSGIDeploying flask with nginx & uWSGI
Deploying flask with nginx & uWSGI정주 김
 
파이썬 TDD 101
파이썬 TDD 101파이썬 TDD 101
파이썬 TDD 101정주 김
 
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 정주 김
 
Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편준철 박
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기Brian Hong
 
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버준철 박
 
파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기정주 김
 

Andere mochten auch (8)

Interactive fiction
Interactive fictionInteractive fiction
Interactive fiction
 
Deploying flask with nginx & uWSGI
Deploying flask with nginx & uWSGIDeploying flask with nginx & uWSGI
Deploying flask with nginx & uWSGI
 
파이썬 TDD 101
파이썬 TDD 101파이썬 TDD 101
파이썬 TDD 101
 
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
 
Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편Python 게임서버 안녕하십니까 : RPC framework 편
Python 게임서버 안녕하십니까 : RPC framework 편
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
[NDC2017 : 박준철] Python 게임 서버 안녕하십니까 - 몬스터 슈퍼리그 게임 서버
 
파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기
 

Ähnlich wie WzDat과 Pandas를 통한 로그 데이터 분석

코드잇-타스-특강.pdf
코드잇-타스-특강.pdf코드잇-타스-특강.pdf
코드잇-타스-특강.pdf이정환
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8HyeonSeok Choi
 
NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템tcaesvk
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWSGruter
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기OnGameServer
 
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWSMatthew (정재화)
 
Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Gruter
 
(130928) #fitalk cloud storage forensics - dropbox
(130928) #fitalk   cloud storage forensics - dropbox(130928) #fitalk   cloud storage forensics - dropbox
(130928) #fitalk cloud storage forensics - dropboxINSIGHT FORENSIC
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재PgDay.Seoul
 
Clou doc intro_kor_20160524
Clou doc intro_kor_20160524Clou doc intro_kor_20160524
Clou doc intro_kor_20160524sang yoo
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)NAVER D2
 
ProQuest TDM(Text Data Mining) Studio_이용 매뉴얼
ProQuest TDM(Text Data Mining) Studio_이용 매뉴얼ProQuest TDM(Text Data Mining) Studio_이용 매뉴얼
ProQuest TDM(Text Data Mining) Studio_이용 매뉴얼yonseilibrary
 
쓰레드.pdf
쓰레드.pdf쓰레드.pdf
쓰레드.pdfSeokju Hong
 
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfHo Jeong Im
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Gruter
 
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기AWSKRUG - AWS한국사용자모임
 

Ähnlich wie WzDat과 Pandas를 통한 로그 데이터 분석 (20)

코드잇-타스-특강.pdf
코드잇-타스-특강.pdf코드잇-타스-특강.pdf
코드잇-타스-특강.pdf
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8
 
NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
 
Warp
WarpWarp
Warp
 
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
 
Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)
 
(130928) #fitalk cloud storage forensics - dropbox
(130928) #fitalk   cloud storage forensics - dropbox(130928) #fitalk   cloud storage forensics - dropbox
(130928) #fitalk cloud storage forensics - dropbox
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
 
Clou doc intro_kor_20160524
Clou doc intro_kor_20160524Clou doc intro_kor_20160524
Clou doc intro_kor_20160524
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
 
Network researching
Network researchingNetwork researching
Network researching
 
ProQuest TDM(Text Data Mining) Studio_이용 매뉴얼
ProQuest TDM(Text Data Mining) Studio_이용 매뉴얼ProQuest TDM(Text Data Mining) Studio_이용 매뉴얼
ProQuest TDM(Text Data Mining) Studio_이용 매뉴얼
 
쓰레드.pdf
쓰레드.pdf쓰레드.pdf
쓰레드.pdf
 
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013
 
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
 
Portfolio
PortfolioPortfolio
Portfolio
 

WzDat과 Pandas를 통한 로그 데이터 분석

  • 14.  
  • 15.   - 셜록 홈즈, 너도밤나무집 中
  • 16. WzDat과 Pandas를 통 한 로그 데이터 분석
  • 17. 과학의 패러다임 변천 - from Jim Gray on eScience • 수 천년 전 - 경험에 의해 • 수 백년 전 - 이론에 의해 • 수 십년 전 - 계산에 의해 • 현재 - 데이터 탐사에 의해
  • 18. 데이터 탐사의 단계 ! 1. 데이터를 수집 2. 데이터를 선별 3. 정보의 형태로 저장 4. 전문가가 분석
  • 19. 빅 데이터? • 하둡 • • • ~TB 단위의 분석에 적합 셋팅 및 MR코딩의 비용 GB 단위는 다양한 방법이 가능 • SQL, NoSQL, 스크립트 등 • 저비용, Try Discover에 유리
  • 21. 로그의 장점 • 개발자라면 누구나 사용 • NoSQL 원조 - 추가, 수정에 용이. • 파일은 생각보다 안정적 • 문제 발생 후 사후 분석에 최적 • 장기간 보존이 필요 없다 - “Big Stream”
  • 22. 로그의 단점 • 여러개의 머신, 파일로 흩어져 있다. • 하나의 타임 라인으로 보기 힘들다. • 정규화 되어있지 않다.
  • 23. 로그가 데이터가 되려면 • 흩어져 있는 로그 파일들 - 수집 • 서로 다른 파일 들 - 하나의 타임라인으로 통합 • 정규화 되지 않은 로그 메시지들 - 선별 및 정규화
  • 24. 바람직한 로그 • 로그 파일 생성시 파일(경로)명에 필요한 정보 • • 로그를 생성한 서버의 종류 • • 로그가 발생한 일시 로그를 생성한 서버의 번호 로그 파일 내용에 필요한 할 정보 • • • 로그 메시지를 출력한 일시 (년:월:일 - 시:분:초) 로그 메시지의 레벨 (크리티컬, 에러, 워닝, 정보, 디버그) 로그가 수집될 때 파일(경로)에 필요한 할 정보 • 로그를 생성한 노드(머신) 이름 - 지역 정보 포함 권장
  • 26. • 좋은 로그 메시지 2013/06/28-13:07:59 [ERR] - File Open Error 2013/06/28-13:08:00 [WRN] - Player Log Out ! • 부족한 로그 메시지 6/28 File Open Error Player Log Out
  • 28. 로그 수집 • 분산되어 있는 로그를 한 곳으로 모으는 과정 • 기존 프로젝트 로그 수집 • • 서비스 중인(파일기반) 로그 집중화의 목적 새로운 프로젝트 로그 수집 • 최신 솔루션 선택이 가능
  • 30. 로그 선별, 저장 - WzDat “What’s That?”
  • 31. WzDat • 로그에서 의미 있는 데이터를 쿼리 • 단순하지만 강력한 파이썬 구문 형식 • 다량의 비 정규화된 로그 파일을 선별 후, • 보거나 • 변환하거나 (- Pandas 구조체) • 저장(다운로드)
  • 32. WzDat
  • 33. WzDat 셀렉터 뒤에 ~s가 붙은 복수형 단어, 각괄호 [ ] 로 조건 기술 • files - 파일 선택 • nodes - 노드(머신) 선택 • servers - 서버(앱) 선택 • dates - 일시(Date Time) 선택
  • 34. files • 모든 파일을 선택 files • 첫 번째, 마지막 파일 files[0], files[-1] • 100번째 에서 10개 파일 files[100:110] • 앞에서 10개, 뒤에서 10개 files[:10], files[-10:]
  • 35. dates • 파일이 있는 모든 일시를 선택 dates • 파일이 있는 첫 번째, 마지막 일시 dates[0], dates[-1] • 같은 식으로 dates[100:110], dates[:10], date[-10:]
  • 36. nodes • 파일을 만든 모든 노드(머신)를 선택 nodes • 파일을 만든 첫 번째, 마지막 노드 nodes[0], nodes[-1] • 같은 식으로 nodes[100:110], nodes[:10], nodes[-10:]
  • 37. servers • 파일을 만든 모든 서버(앱)을 선택 servers • 파일을 만든 첫 번째, 마지막 서버 servers[0], servers[-1] • 같은 식으로 servers[100:110], servers[:10], servers[-10:]
  • 38. WzDat 상수 • ‘카테고리 . 이름’의 형식 • 파일 분석과정에서 자동으로 정의 • 상수의 카테고리는 공통, 이름은 프로젝트 별로 다양하다. (아 래는 C9의 예) • node.ASIA_1 # 아시아 1번 서버 머신 • server.GameServer # 게임서버 • date.D2013_07_11 # 2013년 7월 11일
  • 39. 상수로 필터링 • 2013년 7월 11일 파일만 files[date.D2013_07_11] • 게임 서버 파일만 files[server.GameServer] • ASIA-1 노드에서 파일이 발생한 일시만 dates[node.ASIA_1]
  • 40. 상수 매칭 • 상수의 앞 문자열만 맞으면 모두 매칭 # node.ASIA_1, node.ASIA_2, … 식으로 여럿 있을 때 files[node.ASIA] # 모든 아시아 노드의 파일이 매칭
  • 41. 셀렉터의 결과로 필터링 • 마지막 날의 파일만 선택 files[dates[-1]] • 마지막 날 파일을 만든 노드만 선택 nodes[dates[-1]] • 아시아 지역의 마지막 날 파일만 선택 files[dates[node.ASIA][-1]]
  • 42. 복합 조건 필터링 • 마지막 날의 게임서버 파일만 files[dates[-1], server.GameServer] • 7월 12일의 게임/인증 서버 파일중 마지막 10개만 files[date.D2013_07_12, server.GameServer, server.AuthServer][-10:]
  • 43. 파일 병합, 단어 검색 • 조건에 맞는 파일들을 합쳐 하나의 임시파일에 저장 files[…].merge() • 파일들에서 ‘ERR’단어를 포함한 줄만 찾아 임시파일에 저장 files[…].find(‘ERR’) • 검색 결과 내 재검색 files[…].find(‘ERR’).find(‘OnClose’)
  • 44. 결과 보기 • 선택 결과 파일 앞, 뒤 보기 files[…].head(), files(…).tail() files[…][:-10], files[…].[-10:] • 파일 내용 앞, 뒤 보기 files[…].merge().head(), files(…).find(‘ERR”).tail() files[…].merge()[0:10], files(…).find(‘ERR”).[-10:]
  • 45. DataFrame으로 변환 ! • 병합,찾은 결과를 Pandas의 DataFrame으로 변환 files[…].find(…).to_frame() • find, merge는 여러 파일을 합쳐주지만, 아직 타 임 라인 소팅은 되지 않은 상태 • DataFrame으로 만들어 질 때 비로소 시간 순서대로 정렬된다.
  • 46. WzDat 어댑터와 파일타입 • 프로젝트 별로 다르다 • • 파일 경로명, 파일 종류, 내용 기록 방식등 공용 인터페이스를 위한 프로젝트 어댑터 작성 필요 • 하나 이상의 파일 타입 모듈을 작성 • c9.log - C9의 로그 파일 모듈 (*.txt) • c9.dump - C9 덤프 파일 모듈 (*.dmp)
  • 47. 덤프 파일의 경우 하나 이상의 파일타입이 있으면 각각 다른 이름으로 임포트 예) import log as l, import dump as d • 최근 덤프가 발생한 일시 d.dates[-1] • 최근 덤프가 발생한 서버 (d는 dump 모듈) d.servers[d.files[-1]]
  • 48. 이종 파일간 셀렉트 • 서로 다른 종류의 파일을 참고하여 셀렉트 • 예) 덤프 파일(d)로 로그 파일(l) 선택 # 마지막 덤프의 노드, 서버, 일시에 일치하는 # 로그 파일만 선택 l.files[d.files[-1]]
  • 49. WzDat 로그 저장 • 파일 다운로드 링크 출력 files[…].link • 압축된 파일 다운로드 링크 출력 files[…].zlink
  • 51. 로그 분석 - Pandas
  • 52. Pandas • 사용이 편리한 파이썬 데이터 분석 툴 • 다양한 데이터 조작 방식 - R에서 영감을 받음 • 대량의 데이터를 고속으로 처리 (C/C++, MMF) • 높은 수준의 분석을 위해 꼭 필요 • numpy, matplotlib 사용
  • 53.
  • 54. Series • 인덱스를 가지는 배열같은 구조체 ! In [3]: s = Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']) ! In [4]: s Out[4]: a 1 b 2 c 3 d 4 dtype: int64
  • 55. DataFrame • 인덱스와 컬럼을 가지는 구조체 • 엑셀의 테이블과 유사 ! In [1]: d = DataFrame(np.random.randn(3, 4), index=['one', 'two', 'three'], columns=['a', 'b', 'c', 'd']) ! In [2]: d Out[2]: a b c one -0.513031 -0.687210 -0.433650 two 0.233899 -0.000048 0.637124 three 0.803571 -1.093059 0.450721 d 0.483474 1.004753 0.044777
  • 56. 열 선택, 평균 구하기 • ! 열의 이름으로 선택 • ! (열 기준) 평균 구하기 In [7]: d['a'] Out[7]: one -0.008556 two 0.669164 three -1.033598 Name: a, dtype: float64 In [4]: d.mean() Out[4]: a 0.174813 b -0.593439 c 0.218065 d 0.511002 dtype: float64
  • 57. 그래프 그리기 • 내부적으로 matplotlib을 사용 • 구조체 인스턴스의 plot메소드 ! In [3]: d.plot() Out[3]: matplotlib.axes.AxesSubplot at 0x105c99dd0
  • 58. 시연 • 서버별 로그 크기 그래프 • 용량이 많은 에러 종류 Top 10 • ‘Long time Dispatch’ 경고 시간별 평균 그래프
  • 60. 참고 링크 • Pandas - pandas.pydata.org • 10 Minutes to Pandas - pandas.pydata.org/pandasdocs/dev/10min.html • IPython - ipython.org • Don’t use Hadoop - your data isn’t that big - www.chrisstucchio.com/blog/2013/hadoop_hatred.html • 파이썬 라이브러리를 활용한 데이터 분석 - www.yes24.com/ 24/goods/11043328?scode=032OzSrank=1