Top Banner
Open Cloud Engine Open Source Big Data Platform Flamingo Project 소개 활용 Open Cloud Engine Flamingo Project Leader 김병곤 ([email protected]) 2014.04.02 v0.9
49

Flamingo project v4

Jun 15, 2015

Download

Technology

Edward Kim

OpenSource Big Data Platform Project.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Flamingo project v4

Open Cloud Engine

Open Source Big Data Platform Flamingo Project 소개 및 활용 Open Cloud Engine Flamingo Project Leader 김병곤 ([email protected])

2014.04.02 v0.9

Page 2: Flamingo project v4

빅데이터 플랫폼이란 무엇인가?

Page 3: Flamingo project v4

빅 데이터 책임자에게 듣는 흔한 질문 •  빅 데이터가 기존의 DW랑 차이가 뭐가 있는지 모르겠습니다.

•  단위 데이터만 봐서는 큰 데이터가 없습니다. 사업의 타당성을 만들수가 없습니다. 어떻게 해야 하나요?

•  A라는 데이터가 있는데 그것으로 뭘 해야할까요?

•  다른 회사는 뭐 한답니까? 혹시 동종업계 비슷한 사례가 있나요?

•  빅 데이터 플랫폼을 만들라는데 이놈이 뭐를 하는 놈인지 모르겠습니다.

Page 4: Flamingo project v4

빅 데이터 플랫폼의 역할에 대한 고민 •  빅 데이터 플랫폼에서 하고자 하는 주요 업무는 무엇인가?

•  데이터 마이닝, 통계, 로그 관리(수집, 전처리, …)

•  빅 데이터 플랫폼에서 누가 무슨 일을 하는가? •  사용자에 따라서 플랫폼의 기능이 서로 다를 수 있다.

•  운영자는 대부분 개발자 출신이기 때문에 시스템 관리 및 로그 관리에 초점 •  사용자가 분석가 출신인 경우 데이터 분석을 위한 환경의 성숙도가 초점

•  빅 데이터 플랫폼을 사용하는 사용자의 수는? •  사용자가 많다면 플랫폼의 기능성과 인프라의 접근성이 중요 •  플랫폼이 데이터를 다루는 특성 때문에 보안에 취약할 수 있고 Hadoop은 실

제로 취약함

•  나는 운영자? 기획자? 개발자? 분석가? •  책임자의 역할에 따라서 플랫폼의 기능도 다르게 정의한다.

Page 5: Flamingo project v4

빅 데이터 플랫폼이 제공해야 하는 것 SOFTWARE STACK

Page 6: Flamingo project v4

빅 데이터 플랫폼이 제공해야 하는 것

INFRA MANAGEMENT MONITORING

Page 7: Flamingo project v4

빅 데이터 플랫폼이 제공해야 하는 것

WORKFLOW

Page 8: Flamingo project v4

빅 데이터 플랫폼이 제공해야 하는 것

분석 및 시각화 환경

Page 9: Flamingo project v4

빅 데이터 플랫폼이 제공해야 하는 것

DASHBOARD

Page 10: Flamingo project v4

빅 데이터 플랫폼이 제공해야 하는 것

SECURITY

•  ACCESS •  AUTHENTICATION •  AUTHORIZATION •  ENCRYPTION •  AUDITING •  POLICY

Page 11: Flamingo project v4

빅 데이터 플랫폼이 제공해야 하는 것 •  배치 작업 관리와 작업 모니터링

•  병렬 분석 프로그램

•  사용자의 행위에 대한 모니터링

•  리소스에 대한 각종 접근 통제 정책 및 시스템

•  인프라의 접근성 향상을 위한 다양한 기능들…

Page 12: Flamingo project v4

Flamingo Project In Open Cloud Engine •  웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게 사용하도록 한다.

•  사용자가 데이터를 잘 활용할 수 있도록 한다. •  하나의 화면에서 자유롭게 다양한 작업을 할 수 있는 작업 공간을 제공한다.

•  다양한 분석 및 처리 MapReduce를 쉽게 재활용 할 수 있도록 한다.

•  오픈소스 기반으로 모든 시스템을 제대로 갖추고 진행한다. •  남의 것에 의존하지 않고 직접 다 만든다. •  현장의 업무를 중심으로 설계한다. •  다국어 지원을 통해 다양한 사람들이 사용할 수 있도록 한다. •  Hadoop EcoSystem을 잘 지원한다.

Page 13: Flamingo project v4

Browser  

디자이너   Search  

형태소����������� ������������������  분석����������� ������������������  

그래프����������� ������������������  분석����������� ������������������  

사용자별����������� ������������������  평가����������� ������������������  

리더����������� ������������������  선출����������� ������������������  

로그����������� ������������������  데이터����������� ������������������  

데이터����������� ������������������  분석가����������� ������������������  서비스����������� ������������������  기획자����������� ������������������  

데이터����������� ������������������  분석가����������� ������������������  

Browser  

인포메이션 카탈로그   Search  

인포메이션 유형   보안등급   생성주기   형식  

사용자 친밀도   1   매일 새벽2시   XML  

아이템 추천   2   매일 새벽 1시   JSON  

구매 성향   3   매일 저녁 8시   XML/JSON  

오피니언 리더 점수   2   매일 오전 10시  

XML/JSON  

데이터����������� ������������������  이용자����������� ������������������  

시스템����������� ������������������  

오피니언����������� ������������������  리더����������� ������������������  점수����������� ������������������  

Open����������� ������������������  API����������� ������������������  

데이터����������� ������������������  시각화를����������� ������������������  위한����������� ������������������  Chart����������� ������������������  

워크플로우����������� ������������������  디자인����������� ������������������  

수집����������� ������������������  ����������� ������������������  

데이터����������� ������������������  이용자����������� ������������������  

서비스����������� ������������������  ����������� ������������������  요청����������� ������������������  

모바일����������� ������������������  

분석����������� ������������������  결과를����������� ������������������  재사용����������� ������������������  분석����������� ������������������  결과를����������� ������������������  외부에����������� ������������������  제공하기����������� ������������������  위해����������� ������������������  Open����������� ������������������  API����������� ������������������  로����������� ������������������  노출����������� ������������������  

분석����������� ������������������  결과����������� ������������������  검증����������� ������������������  로그����������� ������������������  데이터����������� ������������������  

MapReduce����������� ������������������  분석����������� ������������������  모듈����������� ������������������  

빅����������� ������������������  데이터����������� ������������������  분석����������� ������������������  및����������� ������������������  서비스����������� ������������������  플랫폼����������� ������������������  

1����������� ������������������  

2����������� ������������������  

3����������� ������������������  

4����������� ������������������  

5����������� ������������������  

6����������� ������������������  

7����������� ������������������  

Future of Big Data Platform

Page 14: Flamingo project v4

Flamingo Project •  현장에서 오랫동안 경험한 결과 Hadoop 기반 Big Data 환경은 기능성이 매우 중요

•  많은 오픈소스들이 통합되면서 관리의 어려움이 발생하고 있고 통합환경을 제공하는 UI도 절대적으로 부족

Page 15: Flamingo project v4

Flamingo의 통합 환경(Workbench) •  사용자는 작업 공간 내에서 자유롭게 이동하면서 작업을 할 수 있도록 구성

•  각 화면은 최대한 독립 개발이 가능하도록 분리하여 구성

•  재사용 가능한 것은 컴포넌트화여 코드 작성을 최소화

•  누구나 추가할 수 있도록 최대한 구조를 단순화하고 대중적인 프레임워크를 사용

•  개발 방법도 모두 표준화 (도구, 절차, 매뉴얼, 환경 등등)

Page 16: Flamingo project v4

Flamingo Architecture

Page 17: Flamingo project v4

File System Browser •  Hadoop이 파일을 다루므로 파일 시스템 브라우저의 기능은 상당히 중요한 메인 기능

•  사용자가 Windows Explorer 스타일의 친숙한 UX를 따라가도록 설계

Page 18: Flamingo project v4

File System Browser

디렉토리를 Hive DB와 Table로 전환

브라우저에서는 Hive DB와 Table 경로를 다른 아이콘으로 표시하여 확인

FLAMINGO에서는 사용자가 주로 하는 행위에 최적

화하여 기능을 제공

Page 19: Flamingo project v4

File System Browser 기능 고도화 •  파일 내용 및 Block Location 보기 기능

•  사용자의 등급별 디렉토리 및 파일 표시 및 기능 제한 (Hadoop 자체 기능은 없음) •  예) 일반 사용자의 경우 /tmp 디렉토리는 표시하지 않음

•  디렉토리 및 파일의 permission 설정 기능

•  사용자의 홈 디렉토리 기능 (Hadoop 자체 기능은 없음)

•  디렉토리 Quota 설정 기능

•  파일 시스템의 크기 정보를 주기적으로 덤프를 생성하는 기능 추가 (모니터링)

Page 20: Flamingo project v4

Audit Log •  HDFS 등과 같은 File System 상에서 발생하는 로그의 기록을 모두 남기고 조회

Page 21: Flamingo project v4

Workflow Designer •  다양한 분석 모듈을 탑재할 수 있도록 설계 (예; Mahout)

•  UI를 통해 미리 제공하는 분석 및 처리 모듈을 드래그 앤 드롭으로 처리

•  현재 분석 알고리즘 및 기초 통계 모듈은 통합 완료, Mahout, Giraph 통합 진행중. 추후 MR ETL 통합 예정.

Page 22: Flamingo project v4

Big Workflow Case 현장에서 필요하다면 다수의 노드로 구성할 수 있는 워크플로우를 실제로 구현하여 사용함.

Page 23: Flamingo project v4

Apache Access Log To CSV

Page 24: Flamingo project v4

Apache Access Log To CSV

작성한 MapReduce의 파라미터 옵션 •  CSV 파일 변환시 필요한 컬럼 구분자 •  패턴과 다른 로그의 경우 표준 출력으로 기록할지 여부(디버깅용)

Apache Access Log의 위치와 CSV 파일의 위치를 지정

MapReduce JAR 파일과 Driver 클래스

Page 25: Flamingo project v4

Workflow Designer •  최종 결과물을 생성하기 위해서는 복잡한 워크플로우를 구성하게 됨

•  MapReduce의 특성상 파일을 가공하는데 한번의 작업이 아닌 다수의 작업으로 해야하는 경우 빈번하여 워크플로우를 복잡하게 만듬

•  국내 엔지니어들은 절대적으로 Apache Hive의 SQL like Query Language를 선호하여 MapReduce를 많이 사용하지 않으므로 워크플로우 디자이너의 중요성이 많이 부각되지 않음

•  현업에서 다양한 로그 파일을 다루는 경우 워크플로우 디자이너와 MapReduce는 매우 중요함

Page 26: Flamingo project v4

Workflow Monitoring •  워크플로우 디자이너에서 디자인한 워크플로의 실행을 모니터링. 실행 로그를 정확하게 확인할 수 있음.

Page 27: Flamingo project v4

Workflow Monitoring

root@n02:~/flamingo_data/tmp/2014/03/31/90/JOB_20140331_172000_90_157566920/26385942 $> ls -lsa 합계 40 4 drwxr-xr-x 2 root root 4096 2014-03-31 17:23 . 4 drwxr-xr-x 20 root root 4096 2014-03-31 17:23 .. 16 -rw-r--r-- 1 root root 12731 2014-03-31 17:23 action.log à 실행 로그 4 -rwxrwxrwx 1 root root 1259 2014-03-31 17:23 core-site.xml 0 -rw-r--r-- 1 root root 0 2014-03-31 17:23 hadoop.job_201403300831_0471 à MapReduce Job ID 4 -rwxrwxrwx 1 root root 852 2014-03-31 17:23 script.sh à 커맨드 라인 root@n02:~/flamingo_data/tmp/2014/03/31/90/JOB_20140331_172000_90_157566920/26385942 $>

워크플로우의 노드는 다수의 MAPREDUCE JOB으로 동작할 수 있으므로 추적이 가능해야 함

사용자 관점의 MapReduce 실행 이력

Page 28: Flamingo project v4

Hadoop Job Monitoring

Hadoop Job 모니터링에서도 반대로 추적이 모두 가능해야 함.

Page 29: Flamingo project v4

Expression Language (EL) •  동적인 값들을 얻고자할 때 Workflow Designer에서 활용

•  예) 오늘 날짜 : dateFormat(‘yyyyMMdd’) dateFormat(‘yyyy-MM-dd’)

•  워크플로우가 실행할 때 특정한 값들은 해당 시간으로 대체되어야 하는 경우가 발생 •  예) 오늘 실행하는 워크플로우는 어제 날짜의 디렉토리에 기록 (일배치)

•  제공하는 Expression Language •  dateFormat(‘DATE FORMAT’) à dateFormat(‘yyyyMMddHHmmss’) •  hostname, escapeString, •  yesterday, tommorow •  month, day, hour, minute, … à day(‘yyyyMMdd’, -1) :: 어제 날짜 (20131111) •  trim, concat, urlEncode, firstNotNull

Page 30: Flamingo project v4

Expression Language (EL)

입력 필드에 ${EL} 형식으로 입력하는 경우 동적으로 해석하여 값이 변경됨.

Page 31: Flamingo project v4

Hadoop Job Tracker Monitoring •  Hadoop의 Job Tracker 상세 정보를 그래프로 보여주는 모니터링 기능

Page 32: Flamingo project v4

Hadoop Job Tracker Monitoring •  Hadoop Job의 상세 정보를 원격에서 모두 모니터링하고 추적 가능

Page 33: Flamingo project v4

Hive Editor & Hive Metastore Browser •  파일 시스템의 파일을 SQL로 조회, 브라우징, 다운로드

•  Hive Metastore 관리 기능을 제공하여 데이터베이스와 테이블을 통합 관리할 수 있도록 기능을 제공

Page 34: Flamingo project v4

Hive 편집기 적용 사례 •  시스템의 사용자 접근 이력 로그를 Hive로 조회하는 사례

–  대상 로그의 형식이 반정형이나 비정형인 경우 문제 발생

–  칼럼 안에 Array, Map 등의 이상한 구조를 가진 로그의 경우 문제 발생

•  대상 로그는 CSV 형식과 같은 잘 정리된 형식이 아닌 반정형 로그 형식

TYPE="IPINSIDE" TIME="2014-03-20 17:40:37" ID="guest0899349" MAC="AA-BB-01-18-68-68" NAT_IP="10.24.104.104" NAT_IP_NATION="USA" PROXY_USE="Y" VPN_USE="Y" REMOTE_USE="Y" PROXY_IP="192.24.104.104" PROXY_IP_NATION="USA" VPN_IP="192.24.104.104" VPN_IP_NATION="USA" SVC_CODE="SVC_CODE_0899349" HDD_DISK="HDD_DISK_0899349" CPU_INFO="CPU_INFO_0899349" USE_OS_NATION="USA" MESG="mesg..... time[1395284830] rnd[875899349] unq[5000000]" TYPE="IPINSIDE" TIME="2014-03-20 17:40:37" ID="guest0899349" MAC="AA-BB-01-18-68-68" NAT_IP="10.24.104.104" NAT_IP_NATION="USA" PROXY_USE="Y" VPN_USE="Y" REMOTE_USE="Y" PROXY_IP="192.24.104.104" PROXY_IP_NATION="USA" VPN_IP="192.24.104.104" VPN_IP_NATION="USA" SVC_CODE="SVC_CODE_0899349" HDD_DISK="HDD_DISK_0899349" CPU_INFO="CPU_INFO_0899349" USE_OS_NATION="USA" MESG="mesg..... time[1395284830] rnd[875899349] unq[5000000]"

Page 35: Flamingo project v4

Hive 편집기 적용 사례

TYPE="IPINSIDE" TIME="2014-03-20 17:40:37" ID="guest0899349" MAC="AA-BB-01-18-68-68" NAT_IP="10.24.104.104" NAT_IP_NATION="USA" PROXY_USE="Y" VPN_USE="Y" REMOTE_USE="Y" PROXY_IP="192.24.104.104" PROXY_IP_NATION="USA" VPN_IP="192.24.104.104" VPN_IP_NATION="USA" SVC_CODE="SVC_CODE_0899349" HDD_DISK="HDD_DISK_0899349" CPU_INFO="CPU_INFO_0899349" USE_OS_NATION="USA" MESG="mesg..... time[1395284830] rnd[875899349] unq[5000000]”

Page 36: Flamingo project v4

Hive 편집기 적용 사례 CREATE DATABASE TEST LOCATION '/RAW'; CREATE EXTERNAL TABLE TEST.MAS ( type string, time string, id string, mac string, nat_ip string, nat_ip_nation string, proxy_use string, vpn_use string, remote_use string, proxy_ip string, proxy_ip_nation string, vpn_ip string, vpn_ip_nation string, svc_code string, hdd_disk string, cpu_info string, use_os_nation string, mesg string) PARTITIONED BY ( yyyy string, mm string, dd string) ROW FORMAT SERDE 'kr.cloudine.poc.MasSerde' LOCATION '/RAW/MAS'; ALTER TABLE MAS ADD PARTITION (YYYY='2014', MM='03', DD=’25');

Page 37: Flamingo project v4

Hive 편집기 적용 사례

Page 38: Flamingo project v4

Hive 편집기 적용 사례 public class MasSerde implements SerDe { private StructTypeInfo rowTypeInfo; private ObjectInspector rowOI; private List<String> colNames; private List<Object> row = new ArrayList<Object>(); Pattern p = Pattern.compile("\"(.*?)\""); // 로그 파일의 정규 표현식 @Override public Object deserialize(Writable blob) throws SerDeException { row.clear(); Matcher m = p.matcher(blob.toString()); // 로그 파일을 정규식으로 패턴 매칭 List list = new ArrayList(); while (m.find()) { list.add(m.group(1)); // 패턴 매칭을 통해 추출한 칼럼 정보를 저장 } String[] split = (String[]) list.toArray(new String[list.size()]); int i = 0; for (String fieldName : rowTypeInfo.getAllStructFieldNames()) { TypeInfo fieldTypeInfo = rowTypeInfo.getStructFieldTypeInfo(fieldName); row.add(parseField(split[i], fieldTypeInfo)); i++; } return row; } ... 생략 }

HIVE QUERY 실행시 로그 파일을 로딩할 때

DESERIALIZE한다.

Page 39: Flamingo project v4

Hive 편집기 적용 사례

Page 40: Flamingo project v4

Pig Script Editor •  Pig Latin Script를 편집하고 저장

•  Pig Latin Script를 실행하고 관련 이력을 관리하여 빠르게 데이터를 프로세싱

Page 41: Flamingo project v4

Dashboard •  배치 작업의 동작 현황을 보여주는 UI

Page 42: Flamingo project v4

Job Management •  워크플로우를 주기적으로 실행하도록 배치 작업을 등록하고 모니터링

Page 43: Flamingo project v4

Job Management •  Cron Expression Fully Support

Page 44: Flamingo project v4

프로젝트 정보 •  Source Forge (다운로드)

–  http://www.sourceforge.net/projects/hadoop-manager •  위키 (설명서 및 각종 기술자료)

–  http://wiki.opencloudengine.org/pages/viewpage.action?pageId=819205

•  이슈 관리 (버그 및 신규 기능) –  http://jira.opencloudengine.org

•  빌드 서버 –  http://build.opencloudengine.org

•  구글 그룹스 : [email protected] •  facebook :

https://www.facebook.com/groups/flamingo.workflow •  서브스크립션 (기업 기술지원) : [email protected]

Page 45: Flamingo project v4

Flamingo Project의 미래

•  Big Data on Cloud

•  Netra (OpenStack based Hadoop Provisioning)

+ Flamingo (Hadoop based Workspace)

•  Open Source based Big Data Platform

•  Apache Hadoop EcoSystem

•  Big Data Management Using Flamingo

•  Apache Hadoop PaaS (Platform as a Service)

•  Big Data All In One Package

Page 46: Flamingo project v4

Workflow Designer •  MapReduce 개발자 마다 모두 파라미터 처리가 틀리고 표준화 되어 있지 않음

•  이러한 다양한 MapReduce를 빠르게 어떻게 통합할 것인가?

Page 47: Flamingo project v4

Workflow Designer •  대부분의 UI 컴포넌트는 재사용 가능하도록 설계하여 컴포넌트 형태로 제공

•  MapReduce Module과 UI 통합 방식이 표준화 되어 있으며 프레임워크로 제공되어 빠르게 개발 및 통합 가능

재사용 컴포넌트

UI 구성

Page 48: Flamingo project v4

Workflow Designer •  모듈의 아이콘도 메타 데이터를 통해서 정의하여 별도 코드 작성을 최소화하고

•  관련 기능을 통합 프레임워크로 위임하고 사용자는 메타 데이터만으로 핸들링

Page 49: Flamingo project v4

참여와 공유!!

www.opencloudengine.org