2014 한국소프트웨어아키텍트대회 빅데이터플랫폼 SW 아키텍처 OCE Flamingo/Realtime Stream PM 김병곤클라우다인대표 fharenheit@gmail.com
Big Data Platform Mission Apache Hadoop EcoSystem & Commercial Big Data Platform Support Vanilla Hadoop, Cloudera CDH, Pivotal HD, Hortonworks HDP Pivotal HAWQ, Business Intelligence, Data Source Log & Metadata Management Job Monitoring & Tracking Workflow Management Job Management Auto Provisioning Analysis Program Visualization
Big Data Platform Mission
Big Data Platform 주요이슈 너무많은오픈소스 개별오픈소스의기능 / 비기능적특징 배포판별서로다른버전과호환성이슈 상용빅데이터 SW 와오픈소스 SW 의조합이슈 데이터를처리 / 분석하는다양한모듈을지원이슈 지속적으로업데이트하는오픈소스의통합이슈 데이터거버넌스 로그데이터의활용을위한기능제공의한계 전사조직에빅데이터확산을위한플랫폼의역할정의이슈
Flamingo In Open Cloud Engine
Flamingo In Open Cloud Engine Apache License v2.0 (Server) + GPL v3 (Web UI) 다수의 Hadoop Cluster 지원 방화벽밖에서 Hadoop EcoSystem 및 Infra 를활용 기작성한 MapReduce 를재활용극대화를위한프레임워크내장 워크플로우구성을위한그래프프레임워크개발 Hadoop 1/Hadoop 2 모니터링및 MapReduce Job 추적 다양한데이터처리플로우를구성하는워크플로우디자이너및다양한데이터처리 / 분석프로그램제공 HDFS 등의파일시스템관리, Audit, 권한관리 Hive Metastore 연계및데이터베이스 / 테이블관리
Workflow Designer 다양한분석모듈을탑재할수있도록설계 ( 예 ; Mahout) UI 를통해미리제공하는분석및처리모듈을드래그앤드롭으로처리 데이터분석 / 처리모듈 ( 누구나추가가능 ) 각모듈별설정 워크플로우목록 전통적인분석도구의 UI 와 Apache Hadoop 을결합하여데이터분석및처리플로우를구성
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 화를통해재사용하기위한통합방안
Workflow Designer : Sample 현장에서필요하다면다수의노드로구성할수있는워크플로우를실제로구현하여사용함.
Workflow Designer MapReduce 개발자마다모두파라미터처리가틀리고표준화되어있지않음 이러한다양한 MapReduce 를빠르게어떻게통합할것인가?
Workflow Designer 대부분의 UI 컴포넌트는재사용가능하도록설계하여컴포넌트형태로제공 MapReduce Module 과 UI 통합을위한프레임워크개발을통해빠르게추가 재사용컴포넌트 UI 구성
Workflow Designer 모듈의아이콘도메타데이터를통해서정의하여별도코드작성을최소화하고 관련기능을통합프레임워크로위임하고사용자는메타데이터만으로핸들링
Workflow Designer :: 현재 분류내용주요출력결과 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 Program MapReduce, Hive, Pig, Java, Python, Bash
Workflow Designer :: 계획 분류내용주요출력결과예정일정 전처리 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 Program Sqoop Flamingo 1.2에서지원 Apache Spark & Shark Flamingo 1.4에서지원 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 현재적용완료
HDFS File System Browser 빅데이터플랫폼의주요기능중핵심은로그및데이터를다루는것 인프라에직접접근하지않고통제된환경에서로그및데이터에접근 로그및데이터를저장하기위한다양한기능필요 로그및데이터핸들링시행위모니터링
HDFS File System Browser :: 주요이슈 하나의디렉토리에수없이많은파일및디렉토리 아주많이존재하는경우 UI 표현의문제발생 ( 예 ; 20 만개 ) 대용량파일의업로드및다운로드그리고통제 사용자의등급별접근제어및표시여부 특정등급의사용하는사용자는해당경로의디렉토리 / 파일이보이지않아야함 파일의내용표시 압축파일, 사용자만의 Writable 을사용한바이너리파일은표시가어려움 Object Storage 가백엔드인경우파일처리레이어의추상화가매우어려움 ( 파일방식자체가상이 )
HDFS File System Browser 파일시스템에서 Hive DB, Table 을생성하고바로조회및통계처리가능
HDFS File System Browser 디렉토리를 Hive DB 와 Table 로전환 브라우저에서는 Hive DB 와 Table 경로를다른아이콘으로표시하여확인
HDFS File System Browser 파일시스템브라우저의모든활동을모니터링
Hive Editor & Metastore Browser
Hive Editor & Metastore Browser :: 주요이슈 다양한배포판간호환성 Protocol Buffer, Thrift 호환성은동일배포판도버전에따라서매우상이 배포판에따라서관련기능이커스터마이징되어있어서연계어려움 Hive QL 처리시장시간실행하는 Hive QL 의경우웹세션종료문제 Hive 에서제공하는 SERDE 지원문제 Hive QL 을실행하는 Hive Server ½ 의접근방식의차이와호환성 Managed/External Table 과 Complex Data Type 지원 Table Partitioning 지원
Hive Editor & Metastore Browser :: 사례 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_089 349" HDD_DISK="HDD_DISK_0899 49" CPU_INFO="CPU_INFO_0899 49" USE_OS_NATION="USA" MESG="mesg... time[13952 4830] rnd[875899349] unq[5 000000]
Expression Language 로그수집은보통 YYYY MM DD HH 등과같이일정한주기를가지며데이터처리또한일정한주기를가짐 동적인값들을얻고자할때 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 등등
Expression Language 입력필드에 ${EL} 형식으로입력하는경우동적으로해석하여값이변경됨.
Job & Workflow Monitoring 워크플로우는다수노드로구성되며각노드는 MapReduce Job 으로실행가능 관리자및사용자는자신의 MapReduce Job, Workflow 의진행상태를확인하기를원함
Job & Workflow Monitoring :: 이슈 Workflow 가실행하는 Job 을추적할수없음 Pig Latin/Hive QL은다수의 Hadoop Job을생성 워크플로우가얼마나많은자원을사용했는지파악이매우어려움 Hadoop 의 Job Tracker, History Server 를외부에공개하는데보안상이슈가있음 Job Tracker, History Server 를별도 API 로추출하는데상당한한계가있고, 정보도완전히수집되지않음
Job & Workflow Monitoring MapReduce Job Configuration 검색및다운로드기능 데이터검증을위한 MapReduced 의 Counter 정보 MapReduce 의처리현황그래프
Job & Workflow Monitoring 워크플로우디자이너에서설계한워크플로우의동작상태모니터링 MapReduce, Pig, Hive Job 의완벽한로그보기
Job & Workflow Monitoring Hadoop Job 모니터링에서도반대로추적이모두가능해야함.
Job & Workflow Monitoring Resource Manager 상태정보 등록되어있는배치작업현황
Job Scheduling 작성한워크플로우는운영시배치스케줄링필요 스케줄링작업이증가하는경우노드증가시스케줄러용량도증가 Cron Expression 기반스케줄링요구 워크플로우작성시워크플로우변수를스케줄링시점에서변경하여적용 ( 예 ; HR 부서코드 ) 배치작업의생명주기관리
Job Scheduling 엔진의메모리상태 작업스케줄링현황 등록되어있는배치작업현황
Job Scheduling Cron Expression 을 100% 지원
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)
유사프로젝트 : HUE
결론 데이터를다루는사용자의행위를이해하고과거에사용했던도구를철저하게분석하여 Hadoop 에최적화 UI 기술이절대적으로필요하며인프라 SW 에대한이해도도높아야함 빠르게변하는오픈소스에대한지속적인지원이필요하므로전담개발인력이계속유지되어야함 배포판별호환성문제가심각하고배포판이많으므로검증작업은배포판이릴리즈될때마다즉시수행
Flamingo Project 관련사이트 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 구글그룹스 : flamingo-project-kr@googlegroups.com Facebook : https://www.facebook.com/groups/flamingo.workflow
Flamingo Project 의미래 Big Data On Cloud :: OpenStack + Flamingo Big Data All In One Package Apache Hadoop PaaS (Platform as a Service)