1. Open Cloud Engine
Open Source Big Data Platform
Flamingo Project 소개 및 활용
Open Cloud Engine
Flamingo Project Leader
김병곤
(ceo@cloudine.co.kr)
2014.04.02 v0.9
3. 빅 데이터 책임자에게 듣는 흔한 질문
• 빅 데이터가 기존의 DW랑 차이가 뭐가 있는지 모르겠습니다.
• 단위 데이터만 봐서는 큰 데이터가 없습니다. 사업의 타당성을 만
들수가 없습니다. 어떻게 해야 하나요?
• A라는 데이터가 있는데 그것으로 뭘 해야할까요?
• 다른 회사는 뭐 한답니까? 혹시 동종업계 비슷한 사례가 있나요?
• 빅 데이터 플랫폼을 만들라는데 이놈이 뭐를 하는 놈인지 모르겠
습니다.
4. 빅 데이터 플랫폼의 역할에 대한 고민
• 빅 데이터 플랫폼에서 하고자 하는 주요 업무는 무엇인가?
• 데이터 마이닝, 통계, 로그 관리(수집, 전처리, …)
• 빅 데이터 플랫폼에서 누가 무슨 일을 하는가?
• 사용자에 따라서 플랫폼의 기능이 서로 다를 수 있다.
• 운영자는 대부분 개발자 출신이기 때문에 시스템 관리 및 로그 관리에 초점
• 사용자가 분석가 출신인 경우 데이터 분석을 위한 환경의 성숙도가 초점
• 빅 데이터 플랫폼을 사용하는 사용자의 수는?
• 사용자가 많다면 플랫폼의 기능성과 인프라의 접근성이 중요
• 플랫폼이 데이터를 다루는 특성 때문에 보안에 취약할 수 있고 Hadoop은 실
제로 취약함
• 나는 운영자? 기획자? 개발자? 분석가?
• 책임자의 역할에 따라서 플랫폼의 기능도 다르게 정의한다.
10. 빅 데이터 플랫폼이 제공해야 하는 것
SECURITY
• ACCESS
• AUTHENTICATION
• AUTHORIZATION
• ENCRYPTION
• AUDITING
• POLICY
11. 빅 데이터 플랫폼이 제공해야 하는 것
• 배치 작업 관리와 작업 모니터링
• 병렬 분석 프로그램
• 사용자의 행위에 대한 모니터링
• 리소스에 대한 각종 접근 통제 정책 및 시스템
• 인프라의 접근성 향상을 위한 다양한 기능들…
12. Flamingo Project In Open Cloud Engine
• 웹 기술을 활용하여 빅 데이터 인프라 및 데이터를 편리하게 사용
하도록 한다.
• 사용자가 데이터를 잘 활용할 수 있도록 한다.
• 하나의 화면에서 자유롭게 다양한 작업을 할 수 있는 작업 공간을
제공한다.
• 다양한 분석 및 처리 MapReduce를 쉽게 재활용 할 수 있도록
한다.
• 오픈소스 기반으로 모든 시스템을 제대로 갖추고 진행한다.
• 남의 것에 의존하지 않고 직접 다 만든다.
• 현장의 업무를 중심으로 설계한다.
• 다국어 지원을 통해 다양한 사람들이 사용할 수 있도록 한다.
• Hadoop EcoSystem을 잘 지원한다.
29.
Browser
인포메이션 카탈로그
Search
인포메이션 유형
보안등급
생성주기
형식
사용자 친밀도
1
매일 새벽2시
XML
아이템 추천
2
매일 새벽 1시
JSON
구매 성향
3
매일 저녁 8시
XML/JSON
오피니언 리더 점수
2
매일 오전 10
시
XML/JSON
데이터
85. Flamingo Project
• 현장에서 오랫동안 경험한 결과 Hadoop 기반 Big Data 환경은 기능성이 매우 중요
• 많은 오픈소스들이 통합되면서 관리의 어려움이 발생하고 있고 통합환경을 제공하는 UI도 절대적으로 부족
86. Flamingo의 통합 환경(Workbench)
• 사용자는 작업 공간 내에서 자유롭게 이동하면서 작업을 할 수 있
도록 구성
• 각 화면은 최대한 독립 개발이 가능하도록 분리하여 구성
• 재사용 가능한 것은 컴포넌트화여 코드 작성을 최소화
• 누구나 추가할 수 있도록 최대한 구조를 단순화하고 대중적인 프
레임워크를 사용
• 개발 방법도 모두 표준화 (도구, 절차, 매뉴얼, 환경 등등)
88. File System Browser
• Hadoop이 파일을 다루므로 파일 시스템 브라우저의 기능은 상당히 중요한 메인 기능
• 사용자가 Windows Explorer 스타일의 친숙한 UX를 따라가도록 설계
89. File System Browser
디렉토리를 Hive DB와
Table로 전환
브라우저에서는 Hive DB와 Table 경로를
다른 아이콘으로 표시하여 확인
FLAMINGO에서는 사용자
가 주로 하는 행위에 최적
화하여 기능을 제공
90. File System Browser 기능 고도화
• 파일 내용 및 Block Location 보기 기능
• 사용자의 등급별 디렉토리 및 파일 표시 및 기능 제한 (Hadoop 자체 기능은
없음)
• 예) 일반 사용자의 경우 /tmp 디렉토리는 표시하지 않음
• 디렉토리 및 파일의 permission 설정 기능
• 사용자의 홈 디렉토리 기능 (Hadoop 자체 기능은 없음)
• 디렉토리 Quota 설정 기능
• 파일 시스템의 크기 정보를 주기적으로 덤프를 생성하는 기능 추가 (모니터링)
92. Workflow Designer
• 다양한 분석 모듈을 탑재할 수 있도록 설계 (예; Mahout)
• UI를 통해 미리 제공하는 분석 및 처리 모듈을 드래그 앤 드롭으로 처리
• 현재 분석 알고리즘 및 기초 통계 모듈은 통합 완료, Mahout, Giraph 통합 진행중. 추후 MR ETL 통합 예정.
95. Apache Access Log To CSV
작성한 MapReduce의 파라미터 옵션
• CSV 파일 변환시 필요한 컬럼 구분자
• 패턴과 다른 로그의 경우 표준 출력으로 기록
할지 여부(디버깅용)
Apache Access Log의 위치와 CSV 파
일의 위치를 지정
MapReduce JAR 파일과 Driver 클래스
96. Workflow Designer
• 최종 결과물을 생성하기 위해서는 복잡한 워크플로우를 구성하게 됨
• MapReduce의 특성상 파일을 가공하는데 한번의 작업이 아닌 다수의 작업으
로 해야하는 경우 빈번하여 워크플로우를 복잡하게 만듬
• 국내 엔지니어들은 절대적으로 Apache Hive의 SQL like Query Languag
e를 선호하여 MapReduce를 많이 사용하지 않으므로 워크플로우 디자이너
의 중요성이 많이 부각되지 않음
• 현업에서 다양한 로그 파일을 다루는 경우 워크플로우 디자이너와 MapRedu
ce는 매우 중요함
102. Hadoop Job Tracker Monitoring
• Hadoop의 Job Tracker 상세 정보를 그래프로 보여주는 모니터링 기능
103. Hadoop Job Tracker Monitoring
• Hadoop Job의 상세 정보를 원격에서 모두 모니터링하고 추적 가능
104. Hive Editor Hive Metastore Browser
• 파일 시스템의 파일을 SQL로 조회, 브라우징, 다운로드
• Hive Metastore 관리 기능을 제공하여 데이터베이스와 테이블을 통합 관리할 수 있도록 기능을 제공
105. 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 P
ROXY_IP_NATION=USA VPN_IP=192.24.104.104 VPN_IP_NATION=USA SVC_CODE=SVC_CODE_0899349 HDD_D
ISK=HDD_DISK_0899349 CPU_INFO=CPU_INFO_0899349 USE_OS_NATION=USA MESG=mesg..... time[139528
4830] 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 P
ROXY_IP_NATION=USA VPN_IP=192.24.104.104 VPN_IP_NATION=USA SVC_CODE=SVC_CODE_0899349 HDD_D
ISK=HDD_DISK_0899349 CPU_INFO=CPU_INFO_0899349 USE_OS_NATION=USA MESG=mesg..... time[139528
4830] rnd[875899349] unq[5000000]
109. Hive 편집기 적용 사례
public class MasSerde implements SerDe {
private StructTypeInfo rowTypeInfo;
private ObjectInspector rowOI;
private ListString colNames;
private ListObject row = new ArrayListObject();
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한다.
115. 프로젝트 정보
• Source Forge (다운로드)
– http://www.sourceforge.net/projects/hadoop-manager
• 위키 (설명서 및 각종 기술자료)
– http://wiki.opencloudengine.org/pages/viewpage.action?pageId=8
19205
• 이슈 관리 (버그 및 신규 기능)
– http://jira.opencloudengine.org
• 빌드 서버
– http://build.opencloudengine.org
• 구글 그룹스 : flamingo-project-kr@googlegroups.com
• facebook :
https://www.facebook.com/groups/flamingo.workflow
• 서브스크립션 (기업 기술지원) : sales@cloudine.co.kr
116. 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