open cloud engine 빅데이터 플랫폼과 · 2014-09-19 · flamingo project in open cloud engine...

58
2014.08.05 v1.0 Open Cloud Engine 빅데이터 플랫폼과 Flamingo 홗용 사례 Open Cloud Engine Flamingo Project 김명하 커미터

Upload: others

Post on 20-May-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

2014.08.05 v1.0

Open Cloud Engine

빅데이터 플랫폼과 Flamingo 홗용 사례

Open Cloud Engine

Flamingo Project

김명하 커미터

Page 2: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Flamingo Project In Open Cloud Engine

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

• 사용자가 데이터를 잘 활용할 수 있도록 한다.

• 하나의 화면에서 자유롭게 다양한 작업을 할 수 있는 작업 공간을 제공한다.

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

• 오픈소스 기반으로 모든 시스템을 제대로 갖추고 진행한다.

• 남의 것에 의존하지 않고 직접 다 만든다.

• 현장의 업무를 중심으로 설계한다.

• 다국어 지원을 통해 다양한 사람들이 사용할 수 있도록 한다.

• Hadoop EcoSystem을 잘 지원한다.

Page 3: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

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 4: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

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

• 많은 오픈소스들이 통합되면서 관리의 어려움이 발생하고 있고 통합환경을 제공하는

UI도 필요

Page 5: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Flamingo 도입 및 운영처

Page 6: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Flamingo Project

Distributed Parallel Task Management

Worker Worker Worker

Metrics Agent

MapReduce MapReduce

Workflow Management Graph Builder Workflow Structure Runner Task

User Interface

File System Manager

Hive Manager Workflow Designer

Resource Monitor

Scheduler Manager

Job Manager Logging Monitor

Resource Monitoring Job Tracker

Application Manager

Collector ETL

MapReduce

Algorithm

Metadata Catalog

Usage Statistics

Schedule Management Scheduler Scheduler Manager Scheduler

Page 7: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Flamingo Project

• Spring IO • Spring Framework 4, Spring Boot 1, Spring Web MVC

• Web Rich UI Framework • Sencha ExtJS 4 (GPL v3)

• Persistence : MyBATIS

• Hadoop EcoSystem : Hadoop 1.x & 2.x

• MySQL5.1 or higher

• JDK 1.7

• Hadoop Distribution • Vanilla Hadoop

• Cloudra CDH

• Pivotal HD (With HAWQ)

Page 8: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Flamingo의 통합 환경(Workbench)

• 사용자는 작업 공간 내에서 자유롭게 이동하면서 작업을 할 수 있도록 구성

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

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

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

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

Page 9: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Flamingo Architecture

Page 10: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

File System Browser

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

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

Page 11: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

File System Browser

디렉토리를 Hive DB와 Table로 젂홖

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

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

화하여 기능을 제공

Page 12: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

File System Browser 주요 이슈

• 하나의 디렉토리에 수없이 많은 파일 및 디렉토리 • 아주 많이 존재하는 경우 UI 표현의 문제 발생 (예; 20만개)

• 대용량 파일의 업로드 및 다운로드 그리고 통제

• 사용자의 등급별 접근 제어 및 표시 여부

• 특정 등급의 사용하는 사용자는 해당 경로의 디렉토리/파일이 보이지 않아야 함

• 파일의 내용 표시

• 압축 파일, 사용자만의 Writable을 사용한 바이너리 파일은 표시가 어려움

• Object Storage가 백엔드인 경우 파일 처리 레이어의 추상화

가 매우 어려움 (파일 방식 자체가 상이)

Page 13: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

File System Browser 기능 고도화

• 파일 내용 및 Block Location 보기 기능

• 사용자의 등급별 디렉토리 및 파일 표시 및 기능 제한 (Hadoop 자체 기능은 없음)

• 예) 일반 사용자의 경우 /tmp 디렉토리는 표시하지 않음

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

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

• 디렉토리 Quota 설정 기능

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

Page 14: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Audit Log

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

Page 15: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Workflow Designer

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

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

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

합 예정.

Page 16: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Workflow Designer 주요 이슈

• 데이터 프로세싱을 위한 워크플로우 디자인

• 각 노드간 의존성 관리

• 다양한 MapReduce의 파라미터 처리 • hadoop jar test.jar wordcount –input in.txt –output out.txt

• hadoop jar test.jar wordcount input.txt output.txt

• 스케줄러에 등록한 워크플로우가 실행할 때 경로 처리

• 복잡한 워크플로우의 해석 및 실행 (예; 분기 처리)

• 워크플로우 스케줄링시 변수값 변경

• 기 개발한 MapReduce의 UI화를 통해 재사용하기 위한 통합 방안

• Apache Oozie의 경우 MR 처리시 제약이 많음

Page 17: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

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

Page 18: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Workflow Designer

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

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

Page 19: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Workflow Designer

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

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

통합 가능

재사용 컴포넌트

UI 구성

Page 20: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Workflow Designer

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

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

Page 21: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Workflow Designer의 Module 분류 내용 주요 출력 결과 MapReduce 처리 내용

수치/범주 데이터

기초 통계 분석

수치 데이터 기초 통계 합계, 평균(4종) 분산, 표준편차

최대/최소/중앙값 • 데이터의 분핛 및 분핛 데이터의 통계 산출 • 분핛 산출된 통계의 합산 및 최종 통계 산출

범주 데이터 기초 통계 발생빆도, 발생비율 • 데이터의 속성값 별 빆도수 산출 • 빆도에 대핚 젂체 데이터 대비 비율 산출

수치 데이터 확싞도 기반 합계

확싞도(Certainty Factor) 기반 합계 • 데이터의 분핛 및 분핛 데이터의 확싞도 산출 • 분핛 산출된 통계의 합산 및 최종 확싞도 산

젂처리 수치 데이터 Min/Max 기반

정규화 Min/Max 정규화 값

• 데이터의 Min/Max 수치 산출 • Min/Max 값 기반 데이터 정규화

유사/상관 분석

이진 벡터 데이터 기반 Hamming, Jaccard/Tanimoto, Dice • 데이터의 속성별 분해 레코드 생성 • 분해된 속성별 데이터 레코드를 이용핚 유사

/상관 수치 계산 수치 벡터 데이터 기반 Euclidean, Manhattan, Cosine, Pearson

문자열 데이터 기반 Hamming, Edit(Levenshtein)

마이닝 기계학습

Clustering K-Means, EM • 데이터 최근접 핛당 (거리/확률 빇도) • 군집별 핛당 데이터를 이용핚 군집 중심 정보

갱싞 (거리 평균/데이터 분포)

Classification ID3 • 의사결정 트리의 분류 노드 선택을 위핚 속성

별 정보량 계산

Recommendation Collaborative Filtering

Item/Use based Recommendation

• 사용자 및 아이템 간 상관계수 도출 • 아이템 속성별 이진 유사도 계산 • 사용자별 추천 아이템 생성

공통 Hadoop EcoSystem MapReduce, Hive, Pig,

Program Java, Python, Bash

Page 22: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Workflow Designer의 Module (예정) 분류 내용 주요 출력 결과 예정 일정

젂처리

MapReduce ETL

Grep, Filter, Encrypt, Group By, Remove 등등

• Flamingo 1.3에서 지원

형태소 분석 핚글 형태소 분석 • 완료

마이닝 기계학습

Clustering Canopy • Flamingo 1.4에서 지원

Classification Logistic Regression, Random Forest

Naïve Bayes • Flamingo 1.4에서 지원

Graph Apache Giraph, GraphBuilder • Flamingo 1.4에서 지원

공통

Hadoop EcoSystem Sqoop • Flamingo 1.2에서 지원

Apache Spark & Shark • Flamingo 1.4에서 지원

Program PL/Java • Flamingo 1.4에서 지원

R Statistics • Flamingo 1.3에서 지원

Commercial SQL On Hadoop Pivotal HAWQ • Flamingo 1.5에서 지원

기타

Input Format Binary File Format • Flamingo 1.3에서 지원

File Format PDF Text Extractor • Flamingo 1.3에서 지원

Excel Text Processor • 현재 적용 완료

Framework 비정형 처리 Apache UIMA Framework • 현재 적용 완료

Log 처리 Apache Web Server Access Log To CSV • 현재 적용 완료

Page 23: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Apache Access Log To CSV

Page 24: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Apache Access Log To CSV

작성핚 MapReduce의 파라미터 옵션 • CSV 파일 변홖시 필요핚 컬럼 구분자 • 패턴과 다른 로그의 경우 표준 출력으로 기록

핛지 여부(디버깅용)

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

MapReduce JAR 파일과 Driver 클래스

Page 25: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Workflow Designer

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

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

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

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

Page 26: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Workflow Monitoring

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

있음.

Page 27: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

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: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Hadoop Job Monitoring

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

Page 29: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Hadoop Job Monitoring 주요 이슈

• 동적인 값들을 얻고자할 때 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: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

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 31: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Expression Language (EL)

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

Page 32: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Expression Language (EL) 주요 이슈

• 상수 및 변수에 대한 정의가 생각보다 다양함

• 실패한 배치 작업을 재실행하는 경우 워크플로우에 정의한 Expression이 제대로 동작하지 못함 • 워크플로우이 실행 실패시 재실행 하는 경우 큰 문제 발생

• ${dateFormat(‘yyyyMMdd’ -1)의 경우 어제와 오늘 재실행은 값이 틀려짐

• 워크플로우 단계에서 정의한 워크플로우 변수가 배치 작업 정의 단계에서 재정의 될 수 있음

Page 33: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Hadoop Job Tracker Monitoring

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

Page 34: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Hadoop Job Tracker Monitoring

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

Page 35: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Job & Workflow Monitoring 주요 이슈

• Workflow가 실행하는 Job을 추적할 수 없음 • Pig Latin/Hive QL은 다수의 Hadoop Job을 생성

• 워크플로우가 얼마나 많은 자원을 사용했는지 파악이 매우 어려움

• Hadoop의 Job Tracker, History Server를 외부에 공개하는데 보안상 이슈가 있음

• Job Tracker, History Server를 별도 API로 추출하는데 상당한 한계가 있고, 정보도 완전히 수집되지 않음

Page 36: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

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

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

Page 37: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Hive Editor & Hive Metastore Browser 주요 이슈

• 다양한 배포판 간 호환성 • Protocol Buffer, Thrift 호환성은 동일 배포판도 버전에 따라서

매우 상이

• 배포판에 따라서 관련 기능이 커스터마이징되어 있어서 연계 어려움

• Hive QL 처리시 장시간 실행하는 Hive QL의 경우 웹 세션 종료 문제

• Hive에서 제공하는 SERDE 지원 문제

• Hive QL을 실행하는 Hive Server 1/2의 접근 방식의 차이와 호환성

• 유사하게 제공하는 API가 분산되어 있고 명세서가 없음

• Managed/External Table과 Complex Data Type 지원

• Table Partitioning 지원

Page 38: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

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 39: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

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 40: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

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 41: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Hive 편집기 적용 사례

Page 42: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

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 43: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Hive 편집기 적용 사례

Page 44: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

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

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

Page 45: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

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

Page 46: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Job Management

• 작성한 워크플로우는 운영시 배치 스케줄링 필요

• 스케줄링 작업이 증가하는 경우 노드 증가시 스케줄러 용량도 증가

• Cron Expression 기반 스케줄링 요구

• 워크플로우 작성시 워크플로우 변수를 스케줄링 시점에서 변경하여 적용 (예; HR 부서 코드)

• 배치 작업의 생명 주기 관리

Page 47: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Job Management

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

등록되어 있는 배치 작업 현황

작업 스케줄링 현황 엔진의 메모리 상태

Page 48: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Job Management

Cron Expression을 100% 지원

Page 49: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Hadooop 2 지원

데이터노드의 상태 정보

Page 50: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Hadooop 2 지원

Resource Manager 상태 정보

Page 51: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Hadooop 2 지원

YARN 애플리케이션 실행 목록

MapReduce Job 목록

Page 52: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Hadooop 2 지원

MapReduce Job의 기본 요약 정보

Page 53: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Hadooop 2 지원

Hadoop Job Counter

MapReduce Job Tasks

Page 54: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Flamingo 1.1 기준 기능 목록 구분 기능

모니터링 • Namenode 모니터링 (HDFS Usage, Datanode, Bad Block 등등) • Job Tracker 모니터링 (MapReduce Task, JVM Heap, Task Tracker, Job) • Hadoop Job 모니터링 (Job Info, MapReduce Progress, MapReduce Counter, MapReduce Configuration) • 워크플로우 모니터링 (실행 이력 및 상세 정보) • 배치 작업 모니터링 (작업 현황, 엔진의 메모리 상태)

워크플로우 관리 • 워크플로우 저장, 실행, 복사, 삭제 • 드래그 앤 드롭 • 워크플로우 변수 • 데이터 처리 모듈 제공 (MapReduce, Pig, Hive, Java, Bash, Python, Apache Log, Unstructure Analysis ::

UIMA, Clustering, Classification, Normalization, Statistics, Similarity, Recommendation 등등)

배치 작업 관리 • 배치 작업 등록, 일시중지, 재시작, 종료 • 등록한 배치 작업 목록 및 상태 현황 보기(다음 실행 시간, 등록한 사용자 포함)

Pig 편집기 • Pig Latin Script 편집 및 저장 • Pig Latin Script 실행 이력 보기 • Pig Latin Script 실행 및 로그 보기

Hive 편집기 • Hive 쿼리 편집 및 실행 • Hive 쿼리 실행 이력 • Hive 쿼리 실행 결과 브라우징(전/후) • Hive 쿼리 실행 결과 다운로드

파일 시스템 관리 • 디렉토리 관리 • 파일 관리 • 파일 업로드(멀티, 드래그 앤 드롭) 및 다운로드 • 파일 및 디렉토리 정보 보기 • Hive DB, Table 생성 • 파일 처리 이력 감시

기타 • 웹 브라우저로 모든 동작 가능(Chrome, Safari, IE) • Multi Hadoop Cluster 지원 • Amazon Elastic MapReduce 지원

Hadoop 2 지원 • 바닐라 Hadoop 2

Page 55: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Flamingo에 추가되어야 하는 기능

• 타 Hadoop EcoSystem 지원 필요 • Apache Spark, Apache ZooKeeper, Apache HBase

• ETL & Log Search Function • ETL은 타 도구 벤치마킹 및 MapReduce Module 제공

• Log Search는 Open Cloud Engine 내에 Realtime Stream 프로젝트로 보충

• BI & Visualization Tool과 연계

• 타 상용 도구 지원 (예; Pivotal HAWQ)

• 도메인에 특화된 도구들 (예; MapReduce 기반 Pivot 기능)

Page 56: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

Flamingo Project의 발젂 방향

• Public Cloud Provider에서 제공하는 인프라를 홗용핚

SaaS 서비스 (Amazon AWS, Rackspace, KT)

• Hadoop Cluster Provisioning + Flamingo

• In-Memory, NoSQL, Machine Learning, R

• Object Storage와 연계핚 Tenant 개념의 설계

• Machine Learning as a Service

• Appliance에 탑재핚 Big Data Application & Service

Development/Operation Toolkit

• Flamingo + Netra on OpenStack

Page 57: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

프로젝트 정보

• 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 58: Open Cloud Engine 빅데이터 플랫폼과 · 2014-09-19 · Flamingo Project In Open Cloud Engine • 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게

참여와 공유!!

www.opencloudengine.org