opensource big data platform - flamingo v7

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

Upload: edward-kim

Post on 15-Jun-2015

622 views

Category:

Documents


1 download

DESCRIPTION

OpenSource Big Data Platform - Flamingo v7

TRANSCRIPT

Page 1: OpenSource Big Data Platform - Flamingo v7

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: OpenSource Big Data Platform - Flamingo v7

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

Page 3: OpenSource Big Data Platform - Flamingo v7

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

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

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

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

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

Page 4: OpenSource Big Data Platform - Flamingo v7

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

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

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

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

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

제로 취약함

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

Page 5: OpenSource Big Data Platform - Flamingo v7

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

Page 6: OpenSource Big Data Platform - Flamingo v7

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

INFRA MANAGEMENT MONITORING

Page 7: OpenSource Big Data Platform - Flamingo v7

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

WORKFLOW

Page 8: OpenSource Big Data Platform - Flamingo v7

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

분석 및 시각화 환경

Page 9: OpenSource Big Data Platform - Flamingo v7

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

DASHBOARD

Page 10: OpenSource Big Data Platform - Flamingo v7

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

SECURITY

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

Page 11: OpenSource Big Data Platform - Flamingo v7

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

•  병렬 분석 프로그램

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

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

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

Page 12: OpenSource Big Data Platform - Flamingo v7

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

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

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

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

Page 13: OpenSource Big Data Platform - Flamingo v7

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: OpenSource Big Data Platform - Flamingo v7

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

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

Page 15: OpenSource Big Data Platform - Flamingo v7

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

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

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

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

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

Page 16: OpenSource Big Data Platform - Flamingo v7

Flamingo Architecture

Page 17: OpenSource Big Data Platform - Flamingo v7

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

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

Page 18: OpenSource Big Data Platform - Flamingo v7

File System Browser

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

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

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

화하여 기능을 제공

Page 19: OpenSource Big Data Platform - Flamingo v7

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

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

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

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

•  디렉토리 Quota 설정 기능

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

Page 20: OpenSource Big Data Platform - Flamingo v7

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

Page 21: OpenSource Big Data Platform - Flamingo v7

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

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

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

Page 22: OpenSource Big Data Platform - Flamingo v7

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

Page 23: OpenSource Big Data Platform - Flamingo v7

Apache Access Log To CSV

Page 24: OpenSource Big Data Platform - Flamingo v7

Apache Access Log To CSV

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

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

MapReduce JAR 파일과 Driver 클래스

Page 25: OpenSource Big Data Platform - Flamingo v7

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

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

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

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

Page 26: OpenSource Big Data Platform - Flamingo v7

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

Page 27: OpenSource Big Data Platform - Flamingo v7

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: OpenSource Big Data Platform - Flamingo v7

Hadoop Job Monitoring

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

Page 29: OpenSource Big Data Platform - Flamingo v7

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: OpenSource Big Data Platform - Flamingo v7

Expression Language (EL)

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

Page 31: OpenSource Big Data Platform - Flamingo v7

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

Page 32: OpenSource Big Data Platform - Flamingo v7

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

Page 33: OpenSource Big Data Platform - Flamingo v7

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

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

Page 34: OpenSource Big Data Platform - Flamingo v7

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: OpenSource Big Data Platform - Flamingo v7

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: OpenSource Big Data Platform - Flamingo v7

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: OpenSource Big Data Platform - Flamingo v7

Hive 편집기 적용 사례

Page 38: OpenSource Big Data Platform - Flamingo v7

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: OpenSource Big Data Platform - Flamingo v7

Hive 편집기 적용 사례

Page 40: OpenSource Big Data Platform - Flamingo v7

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

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

Page 41: OpenSource Big Data Platform - Flamingo v7

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

Page 42: OpenSource Big Data Platform - Flamingo v7

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

Page 43: OpenSource Big Data Platform - Flamingo v7

Job Management •  Cron Expression Fully Support

Page 44: OpenSource Big Data Platform - Flamingo v7

프로젝트 정보 •  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: OpenSource Big Data Platform - Flamingo v7

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: OpenSource Big Data Platform - Flamingo v7

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

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

Page 47: OpenSource Big Data Platform - Flamingo v7

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

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

재사용 컴포넌트

UI 구성

Page 48: OpenSource Big Data Platform - Flamingo v7

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

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

Page 49: OpenSource Big Data Platform - Flamingo v7

참여와 공유!!

www.opencloudengine.org