본문 바로가기

AWS

[AWS] 비구조화된 데이터 분석 (로그데이터 분석하기)

728x90
반응형

AWS를 활용하면 분산 처리 기술인 하둡을 손쉽게 이용 가능하다.

1.구조화되지 않은 데이터 다루기
- 로그 데이터를 분석하기 위해서는 전처리를 해야만 합니다. 로그 파일은 단순한 텍스트 파일로, 컬럼 및 데이터형 / 자리수와 같은 스키마 정의가 엄격하게 구조화되어 있지 않기 때문입니다.
- AWS의 레드시프트에 넣을 수 있는 것은 구조화된 데이터뿐이기 때문에 로그 파일에 정보들을 레드시프트에서 관리하기 위해서는 적합한 데이터 형식으로 변환해줘야 하는 작업이 필요합니다.
- 필요한 데이터만 가져와 가져와야 합니다. 로그 데이터에는 우리가 분석하기 위해 필요한 데이터 뿐만 아니라 다양한 정보가 담겨져 있습니다. 그렇기 때문에 우리가 필요로 하는 데이터만 선별해서 가져와야 하는 작업이 필요합니다.
- 데이터 변환도 필요합니다. 로그 파일은 컴퓨터가 처리하기 쉬운 값으로 저장되어 있기 때문에 실제 사용자가 보기 편하도록 쉬운 문자나 기호로 변환해야 하는 작업이 필요 합니다.

2. AWS EMR(Amazon Elastic MapReduce) 사용하기
- 로그 파일을 정제 및 변환하기 위해서는 AWS EMR 서비스를 사용하면 됩니다.
- EMR은 분산 처리 기술인 하둡을 기반으로 한 관리형 서비스 입니다.
- 구조화되지 않은(비정형) 데이터를 최소한의 스키마 정의만 있으면 처리할 수 있다는 특징이 있습니다.
- 로그 파일처럼 반 구조화된 데이터를 그대로 취급할 수 있어 데이터 변환 시스템을 별도로 구축할 때보다는 설계 비용이 덜 듭니다.
- 데이터를 변환할 때만 EMR을 사용하게 될 경우 운영 비용도 절감할 수 있습니다.
- 오픈 소스 로그 수집 소프트웨어인 플루언트디(Fluentd)를 사용하여 로그 파일을 각 서버에서 정기적으로 스토리지 서비스인 아마존 S3에 복사 하여 집계하면 됩니다.
- 아마존 EMR은 S3에 저장된 로그 파일을 읽어 들여, 정제와 변환을 실시하고 가공후 데이터를 S3에 저장합니다. (레트시프트에 저장하고 분석할 수 있는 구조화된 데이터로 가공한 것입니다.)
- EMR에서 가공된 로그 데이터를 레드시프트에서 가져와 활용하면 됩니다.

3. 태블로 서버 (Tableua Server)
- 데이터 분석 결과를 공유.
- 태블로 서버는 사전에 뷰를 작성해두면 최신 데이터에 근거한 분석 결과를 웹페이지로 보여주는 소프트웨어 입니다.

4. 플로언트디를 사용한 효율적인 로그 수집
- 플로언트디는 로그 수집, 변환, 출력을 위한 오픈 소스 소프트웨어로 미국 트레저데이터사가 개발을 주도 하고 있습니다.
- 입력 플러그인과 출력 플러그인을 결합하여 다양한 형식의 로그를 다양한 대상으로 출력할 수 있습니다.
- 입력 플러그인
• in_tail : 로그 파일에 기록된 로그를 입력 데이터로 취득. CSV, syslog, apache2, json 등의 형식 지원
• in_http : HTTP 통신의 POST로 전송된 데이터 취득
• in_syslog : syslog 프로토콜으로 로그 취득
• in_forward : 다른 플루언트디의 out_forward 출력 플러그인으로부터 전송된 데이터 취득
• in_exec : 임의의 명령어의 실행 결과를 입력으로 취득
• cloudwatch : 아마존 클라우드워치 데이터 취득
• dynamodb-streams 다이나모디비 스트림 출력을 입력으로 취득
- 출력 플러그인
• out_file : 파일에 데이터 출력
• out_forward : 다른 플루언트디로 데이터 출력
• s3 : 아마존 S3에 데이터 출력
• out_copy : 1개의 데이터를 복수의 출력 플러그인에 복제
• mongo : 몽고디비에 데이터 출력
• plugin-dynamodb : 다이나모디비에 데이터 출력

5. 아마존 EMR로 로그 데이터 정형하기
- 아마존 EMR은 하둡 클러스터의 관리형 서비스 입니다.
- 아마존 EMS은 대량의 데이터를 다루는 배치를 분산 처리해줍니다.
- 하둡은 대량의 로그 데이터의 가공에 적합한 시스템입니다만, 구축 및 운영이 번거롭다는 단점이 있습니다.
- 반면 아마존 EMR은 관리 서비스이기 때문에 사용자는 노드 수등을 설정하는 것만으로 사용할 수 있을 뿐만 아니라 운용에 드는 수고도 덜 수 있습니다.
- 클러스터는 RDB의 관리형 서비스인 아마존 RDS 및 레드시프트와 마찬가지로 자동으로 관리됩니다.
- 아마존 EMR이 로그 파일에 엑세스하고 가공 결과를 출력하기까지의 흐름은 다음과 같습니다.
• 우선 S3에 집약시킨 로그 파일을 읽기 위해 아마존 EMR에 파일의 데이터 구조를 정의한 테이블을 만듭니다. (아마존 EMR에서는 S3의 파일에 직접 에세스할 수 있습니다)
• 그다음에는 만들어진 테이블을 통해 데이터에 액세스합니다.
• EMR로 데이터 질의/분석 처리 환경인 아파치 하이브(Hive)를 사용할 수 있습니다. (하이브는 하이브 QL이라는 SQL과 유사한 데이터 조작 언어로 데이터를 처리 합니다. 불필요한 로그를 Where절에서 제외시키고, 코드를 문자열로 변환하는 SELECT문을 실행하여 원하는 데이터를 얻을 수 있습니다)
• 하이브는 스크립트로도 작성할 수 있기 때문에 복잡한 데이터 조작과 정형에도 대응할 수 있습니다.
• 데이터의 정형이 완료되면 S3에 결과를 출력합니다. 하이브 명령어를 이용하면 S3에 출력할 수 있습니다.
• 하둡은 어렵다는 선입견이 있지만, 어려운 것은 클러스터 구축 및 운영 부분입니다. 준비된 환경을 잘 이용하면 절대 어렵지 않습니다.

6. 스텝 기능으로 부팅 시 스크립트 자동 실행하기
아마존 EMR에서 하이브 스크립트를 개발하는 방법을 알아보겠습니다.

아마존 EMR 모드에는 두가지가 있습니다. 하이브 QL과 하이브 명령어의 실행 방법을 말합니다. 인터랙티브와 배치 모드가 있으며, 전자는 콘솔에서 대화형으로 실행하고, 후자는 배치 단위로 실행합니다.

- 스크립트 파일을 S3에 업로드합니다. 이것은 아마존 EMR의 스텝 기능을 이용하기 위해서 입니다.
- 스텝은 클러스터 시작 시에 프로그램을 자동으로 실행하는 기능입니다.
- 이때 실행시킬 파일이 S3에 있는 것 입니다.
- 아마존 EMR은 스텝이 끝나면 자동으로 종료되게 할 수도 있습니다. 배치를 연속적으로 수행하는 경우가 아니라면 종료되도록 설정해 아마존 EMR을 관리하는 수고를 줄이는 것이 더 좋습니다.

7. 아마존 EMR 튜닝하기 (노드 추가)
처리할 데이터가 많아지면 배치 처리 시간이 길어집니다.
아마존 EMR은 분산 처리 클러스터이기 때문에 노드를 추가하여 처리 능력을 높일 수 있습니다.

아마존 EMR은 마스터 노드, 코어 노드, 작업 노드로 구성됩니다.
- 마스터 노드는 처리를 접수하거나 다른 노드를 관리 합니다.
- 코어 노드는 데이터를 보관하거나 처리를 실행 합니다.
- 작업 노드는 데이터를 가지지 않고 처리만을 담당합니다.

S3에서 데이터를 가져오는 경우에는 아마존 EMR의 로컬 디스크(Hadoop Distributed File System, HDFS)를 참조하지 않습니다. 즉, 코어 노드는 성능에 영향을 주지 않고 작업 노드만이 영향을 줍니다. 작업 노드를 늘리면 처리 능력을 확장할 수 있는 것입니다. 노드가 증가했을 때의 처리 분산은 아마존 EMR이 자동으로 실행합니다.

그러나 노드 간의 균등하게 처리가 분산되게 하는 스키마의 정의 방법이나 하이브QL의 작성 방법이 있기 때문에, 노드 추가만으로는 적절하게 분산되지 않을 수 있습니다.

S3에서 데이터를 액세스 할 경우에 네트워크 접속이 필요하기 때문에 지연이 발생할 수도 있습니다. 이런 경우에는 데이터를 일단 HDFS로 읽은 후 가공처리 하는 것이 좋습니다.

S3에서 아마존 EMR데이터를 검색하는 데는 S3DistCp를 이용하면 됩니다.
(DistCp 오픈소스를 S3에 최적화한 도구 입니다)
데이터를 복사하기 위해서는 아마존 EMR에 연결하고 S3DistpCp를 실행한 후 S3위치와 대상 HDFS 인수를 지정하면 됩니다. 복사 속도는 작업 노드 수를 늘리면 빨라지며 데이터를 읽는 속도는 코어 노드 수에 영향을 받습니다.

아마존 EMR의 마스터 노드는 다중화 될 수 없기 때문에 문제가 생기면 다시 재시작 해줘야 합니다. 하지만 재시작시 HDFS에 데이터는 모두 사라지게 됩니다.
지속성 데이터는 S3에 출력하여 관리하고 중간 데이터 저장소로서 HDFS를 사용하는 것이 좋습니다.

8. 태블로 서버를 이용한 데이터 공유
태블로 서버는 미리 정의 된 뷰를 기반으로 웹 화면을 생성 합니다.
레드 시프트에 정기적으로 방문하여 분석 결과를 자동으로 업데이트 합니다.

태블로 서버를 통해 데이터를 공유하는 과정은 아래와 같습니다.
- 태블로 데스크톱에서 공개 대상으로 태블로 서버 지정.
- 담당자가 공개하는 뷰나 대시보드를 태블로 데스크톱에 작성하여 공개 설정.
- 다른 사람들이 태블로 서버에 접속하면 뷰에 기반한 분석 결과를 볼 수 있음.

공개 설정시 분석 결과를 자동 업데이트 하는 주기와 권한 설정이 가능합니다.

태블로 서버는 웹 브라우저를 통해 액세스 합니다.


*참고 자료 : 실전 AWS 워크북 (한빛 미디어)

728x90
반응형