본문 바로가기

Cloud AWS

Amazon AWS :: CloudFront 로그 --> Elastic MapReduce로 분석

 



 

 


Amazon AWS :: CloudFront 로그 --> Elastic MapReduce로 분석


본자료는 저자의 허락하에 공유되는 자료입니다.

국내 전문 CDN 사업자인 GS네오텍은 2015년에 Amazon Web Service의 AWS Premier Consulting 파트너로서 WiseN 이라는 서비스 브랜드로 클라우드 사업을 함께 하고 있습니다. 

 Amazon AWS CloudFront 로그를 아마존 Elastic MapReduce로 분석

다루는 내용

  • 콘솔에서 아마존 EMR 클러스터 생성
  • EMR 마스터 노드에서 HIVE CLI로 CloudFront 로그 분석
  • EMR Step에서 HIVE 스크립트로 CloudFront 로그 분석
  • Ganglia로 EMR 상태 모니터링

실습

아마존 S3 버킷 생성

  1. 콘솔에서 S3 클릭
  2. Create Bucket 클릭
  3. Create a Bucket – Select a Bucket Name and Region 창에서
    Bucket Name : cloudfront-log-analyze-emr-arang
    Region : Oregon
    Create 클릭
  4. cloudfront-log-analyze-emr-arang 버킷명 클릭
  5. Create Folder 클릭
    logs, output 두개의 버킷 생성

    logs에는 EMR 실행 결과 로그가 저장되며, output에는 로그 분석 결과가 저장된다.

아마존 EMR 클러스터 생성

  1. 콘솔에서 EMR 클릭
  2. Create cluster 클릭
  3. Cluster Configuration 섹션
    Cluster name : log analyzer cluster
    Log folder S3 location : s3://cloudfront-log-analyze-emr-arang/logs/
  4. Tags 섹션
    Key : Name
    Value : EMR Node
  5. Software Configuration 섹션
    AMI version : 3.4.0 선택 (최신 버전)
    Additional applications : Ganglia 선택
    Configure and add 클릭

  6. Hardware Configuration 섹션
    Master : m1.medium (1)
    Core : m1.large (2)

  7. Security and Access 섹션
    EC2 key pair : ec2_keypair
    IAM user access : No other IAM users
  8. Steps 섹션
    Auto-termicate : No
  9. Create cluster 클릭

HIVE CLI로 CloudFront 로그 분석

  1. 콘솔에서 EMR 클릭
  2. 생성한 클러스터(log analyzer cluster)명 클릭

    Running 상태가 될 때까지 기다린다.
  3. 마스터 노드 SSH 접속
    Master public DNS : ec2-52-10-65-169.us-west-2.compute.amazonaws.com
    SSH 로그인시의 USER ID는 hadoop 이다. (최신 버전의 경우 ec2-user로도 접속 가능하나 HIVE등 분석 툴을 사용할 수 없다.)
  4. CloudFront 로그 샘플
    ∙ s3://us-west-2.elasticmapreduce.samples/cloudfront/data/

  5. HIVE 실행
    hive 입력

    프롬프트가 hive>로 변경되며 CLI 상태가 된다.
  6. HIVE로 데이터 입력


  7. HIVE 퀴리로 데이터 분석


  8. 결과 확인

    Agent 별 요청수를 확인할 수 있다.

HIVE 스크립트로 CloudFront 로그 분석

  1. HIVE 테이블 삭제
    현재 cloudfront_logs라는 HIVE 테이블이 생성되어 있는 상태이므로 동일한 테이블을 생성하려 할 경우 에러가 발생한다. 다음 실습을 위해 삭제해준다.


  2. 콘솔에서 EMR 클릭
  3. 생성한 클러스터(log analyzer cluster)명 클릭
  4. Add step 클릭
  5. Add Step 창에서
    Step type : Hive program 선택
    Script S3 location :
            s3://us-west-2.elasticmapreduce.samples/cloudfront/code/Hive_CloudFront.q
            (us-west-2는 자신의 리전으로 수정한다.)
    위 파일을 다운받아서 열어 보면 아래와 같다. CLI에서 사용했던 것과 동일하며, 결과를 S3에 저장하도록 하는 설정만 추가되어 있다.

        
    Input S3 locations3://us-west-2.elasticmapreduce.samples (us-west-2는 자신의 리전으로 수정한다.)
    스크립트에서 LOCATION의 ${INPUT} 변수가 치환된다.
    Output S3 location : s3://cloudfront-log-analyze-emr-arang/output/
    Add 클릭
  6. 모니터링
    ∙ 화면 하단의 Steps 클릭

    ∙ 작업이 완료되면 Status가 Completed 된다.
  7. 결과 확인
    ∙ 콘솔에서 S3 클릭
    ∙ cloudfront-log-analyze-emr-arang/output/os_requests 디렉토리에 결과 파일이 생성되어 있다.

Ganglia로 EMR 상태 모니터링
EMR 클러스터를 만들 때 Ganglia 툴을 추가 설치하였다.

  1. 콘솔에서 EC2 클릭
  2. Instances 클릭
  3. Name이 EMR Node인 인스턴스 중 인스턴스 타입이 m1.medium인 인스턴스 클릭
  4. Description 탭에서
    Public DNS : ec2-52-10-65-169.us-west-2.compute.amazonaws.com 복사
    Security groups의 보안그룹 클릭 (예. ElasticMapReduce-master)
  5. Inbound 탭 클릭
  6. Edit 클릭
  7. Add Rule 클릭
    HTTP 추가
    Save 클릭
  8. 브라우져 접속
    ∙ http://ec2-52-10-65-169.us-west-2.compute.amazonaws.com/ganglia

참고

위 샘플 로그가 아닌 실제 서비스 중인 CloudFront 로그로 테스트를 하면 오류가 발생한다.
이는 정규표현식으로 구분한 항목을 테이블 컬럼에 입력할 때 맞지 않아서 발생하는 문제이므로 수정하면 된다. 추가적으로 EMR은 압축된 로그 파일도 확장자를 보고 알아서 분석해주므로 신경 쓰지 않아도 된다.
http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/gsg-step.html
● 정규표현식 : http://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D
● HIVE : https://cwiki.apache.org/confluence/display/Hive/LanguageManual

arang

Sr. Technical Trainer at GSNeotek





www.SalesMore.co.kr