기본 콘텐츠로 건너뛰기
Big data 처리
- 빅데이터란
- https://pearlluck.tistory.com/384
- 예: 사용자의 프로그램에 대한 로그 데이터 수집
- 클라우드 서버에서 사용자에게 머신러닝을 개발하기 위한 서버를 대여해준다. 서버에서는 사용자가 돌린 머신러닝 프로그램의 로그 내역(python코드 상에서 print한 정보 등)을 저장하여, 사용자가 자신의 코드를 디버깅하기 위해 로그내역을 검색할 수 있는 웹 UI를 제공하고자 한다.
- 각 로그가 JSON포매승로 다음과 같은 정보를 가진다고 가정.
- TYPE : 로그 종류(INFO, DEBUG, ERROR 중 하나임)
- User ID
- 날짜
- Message: 로그 메세지
- 데이터 소스: 빅데이터 처리를 하기 전에 디스크에 저장되어있었던 로그들의 raw data들
- 수집: 사용자의 프로그램이 돌면 로그 수집기가 해당 프로그램에서 나오는 로그 데이터를 추적하여 수집함.
- 예시: logfowarder(로그수집기), Kafka
- 각 서버마다 logforwarder 프로그램이 실시간으로 사용자의 로그내역이 저장되는 파일(/var/log/user.log)를 읽어와서 로그 정보가 추가될때마다 Kafka에 전송함.
- Kafka는 logfowarder로부터 받은 로그 정보를 HDFS(하둡)에 전송
- 저장: 수집된 로그정보들은 디스크에 저장됨.
- 예시: NoSQL 또는 HDFS(하둡파일시스템)
- 수집된 로그 정보들을 key,value의 형태로 다수의 디스크에 분산 저장함.
- key: log ID
- value: log정보 (TYPE, User ID, 날짜, Message)
- 처리: 관리자는 로그의 월별 발생 횟수를 타입별로 시각화하고자함.
- 예) 1월에는 로그가 총 N개 있었는데, ERROR가 M번 발생하고, INFO가 ....
- 예시: Spark의 MapReduce기술 (아래에서 다시 설명)
- Mapper
- 각 Mapper는 관리자에게 필요하지 않은 UserID, Message를 삭제함.
- input: key: LogID, Value: <Type, UserID, 날짜, Message>
- Output: Key: LogID, Value: <Type, 날짜>
- Reducer
- Reducer은 매 월 로그의 타입 별 발생 횟수를 결과값으로 출력
- input: <Type, 날짜>
- Output: Key: <Month>-<Type>, Value: <갯수>
- 예)
- 1월-ERROR: 523512번
- 1월-INFO: 12342번
- 1월-DEBUG: 42312451번
- ...
- 분석: 관리자가 로그데이터를 머신러닝 기술을 이용하여 Log들에 대한 anamoly detection 보안 검사 수행
- 정확한 플로우는 모르지만, 앞과 같이 저장되있는 로그를 "처리"과정을 통해 전처리를 하고, 전처리된 데이터를 머신러닝하여 해킹 사례가 있는지 추적할 수 있을 것임.
- 표현: WebUI를 통해 로그 내역이 그래프로 추출됨.
- Spark
- 앞서 설명한 빅데이터 플로우의 "처리" 과정을 담당
- 빅데이터의 "처리"과정에서 가장 핫한 기술은 Map Reduce기술임
- Map reduce
- https://12bme.tistory.com/154
- 스토리지에는 데이터가 <key, value>형태로 전혀 정제되지 않은 Raw상태로 저장되어 있음. 이 Raw 데이터를 요구사항에 맞는 유익한 데이터로 바꾸는 것이 "처리"의 목표임.
- 사용자가 Map reduce 실행을 요청하면, 다수의 서버가 동시적으로 어떤 일을 수행함. 서버가 수행하는 일은 다음 중 하나임.
- Mapping
- https://12bme.tistory.com/154
- 예시 꼭 보고 이해하자
- 디스크에 저장된 각각의 데이터에 대해 어떤 처리를 해서 쓸모있는 형식으로 바꾸는거임.
- 예
- 각 Mapper는 관리자에게 필요하지 않은 UserID, Message를 삭제하고, 필요한 정보만 남김.
- input: key: LogID, Value: <Type, UserID, 날짜, Message>
- Output: Key: LogID, Value: <Type, 날짜>
- Shuffling (덜중요)
- Reducer
- https://12bme.tistory.com/154
- 예시 꼭 보고 이해하자
- 사용자가 원한 Output형태로 데이터를 처리하고 축약하는 것임. Mapper에서 보낸 로그 데이터는 수백만개였는데, Reducer과정에서 12개(1월~12월)의 데이터로 갯수가 확 줄어듬. Reducer과정이 거친 결과데이터가 바로 우리에게 필요한 데이터인것임.
- 원래는 "하둡"에서 Map Reducer기술을 적용하여 널리널리 사용되고 있었음.
- 그런데 하둡은 "디스크"를 사용하기 떄문에 속도가 느려짐.
- 디스크대신 메모리를 사용하는 기술이 Spark임.
- Spark는 하둡을 대체한다기보다는, 하둡과 함께 사용해서 서로의 부족함을 매워준다.
- 기본 링크: https://wooono.tistory.com/50
- 심화 링크: https://12bme.tistory.com/433
댓글
댓글 쓰기