SlideShare a Scribd company logo
1 of 22
Download to read offline
초보자의 데이터 분석을 지원하는 Spark Designer 설계안
빅데이터본부 | 김병곤
Spark Designer는 Flamingo 2.0의 Workflow Designer를 모형으로 하고 있습니다.
SparkDesigner의모형
Spark Designer는 Flamingo 2.0의 Workflow Designer를 모형으로 하고 있습니다.
Flamingo2.0WorkflowDesigner의문제점
메타데이터 관리 부재
데이터소스로 HDFS만 지원
MapReduce의 한계
워크플로우 구성의 한계
Workflow Designer는 기능적 특성이 다양하게 반영되어야 하나 서로 상충되는 것이 있어서 두 개의 워크플로우 디
자이너로 분리하였습니다.
Flamingo2.0WorkflowDesigner를분리
Oozie
Designer
Spark
Designer
Workflow
Designer
• 초보자들이 쉽게 사용할 수 있는 분석 UI 제공
• 전처리, 머신러닝 등을 통합할 수 있는 UI 제공
• 메타데이터를 관리할 수 기능 제공
• 다양한 데이터를 처리할 수 있는 통합 기능 제공
Spark Designer 목적
SparkDesigner의유스케이스
Spark Designer는 초보자들이 쉽게 사용할 수 있는 User Interface와 Framework를 제공하는 것을 목표로 합니
다.
Preprocessing
기 보유하고있는데이터를가공하는
역할(머신러닝의입출력데이터를
가공하는데도가능)
Data Quality
Check
데이터품질관리(일관성,유효성,완
전성등…)를위한데이터 처리
Machine
Learning
기 보유하고있는데이터를기반으로
Spark MLlib에서 제공하는머신러닝
알고리즘을수행(예; 추천)
DataSource
Integration
RDBMS, File, HDFS 등등 다양한데
이터소스의데이터를한번에처리
SparkDesigner의구현에서고려해야할점
메타데이터
관리
데이터의메타데이터관리어려움
UI Module의 메타데이터관리필요
워크플로우
관리
워크플로우표현의최적의방법은?
전처리/알고리즘
Module 확장
CustomModule의 확장
전처리Module의 지원범위
머신러닝Module의 지원 범위
워크플로우
실행
Spark Job을 누가관리해야하는가?
Spark Job을 실행하는주체?
메타데이터관리
• Hadoop의 MapReduce는 병렬/분산 처리 방식에 대한 Framework
• 고성능 처리에는 적합하지만 메타데이터 관리 방안 부재
• Apache Hive의 HCatalog도 대안이 되기에는 대중성 및 활용성 떨어짐
• Spark 최신 버전에서 RDD  DataFrame  DataSet 지원을 통해 메타데이터 관리가 가능해짐
• File의 Metadata 관리가 가능하게 되어 기존의 Workflow Designer의 메타데이터 관리를 보완
Spark의DataFrame& Dataset
• Unified Spark 2.0 API를 통해 데이터를 관리하는 방법이 정교해짐
• 특히, Dataset의 등장은 컬럼 정보의 메타데이터 관리를 유연하게 이끌 수 있음
• Dataset은 Java, Scala만 지원 (Python, R은 DataFrame만 지원)
Spark의DataFrame& Dataset
• DataFrame & Dataset의 가장 큰 강점은 테이블 구조의 데이터 표현 가능
• 테이블 구조의 메타데이터 정의 가능
Spark의메타데이터처리
• 데이터에 대한 POJO를 정의하여 메타데이터化 후 데이터 처리
• POJO를 지정해야 하므로 자유도가 매우 떨어짐
// $example on:schema_inferring$
// Create an RDD of Person objects from a text file
JavaRDD<Person> peopleRDD = spark.read()
.textFile("examples/src/main/resources/people.txt")
.javaRDD()
.map(new Function<String, Person>() {
@Override
public Person call(String line) throws Exception {
String[] parts = line.split(",");
Person person = new Person();
person.setName(parts[0]);
person.setAge(Integer.parseInt(parts[1].trim()));
return person;
}
});
// Apply a schema to an RDD of JavaBeans to get a DataFrame
Dataset<Row> peopleDF = spark.createDataFrame(peopleRDD, Person.class);
// Register the DataFrame as a temporary view
peopleDF.createOrReplaceTempView("people");
// SQL statements can be run by using the sql methods provided by spark
Dataset<Row> teenagersDF = spark.sql("SELECT name FROM people WHERE age BETWEEN 13 AND 19");
Spark의메타데이터처리
• 데이터 파일에 대해서 문자열 기반의 메타데이터 등록 가능
StructType schema = new StructType(new StructField[]{
new StructField("PRODUCT_CLASSIFICATION", DataTypeUtils.getDataType("STRING"), true,
Metadata.empty()),
new StructField("PRODUCT_NM", DataTypes.StringType, true, Metadata.empty()),
new StructField("BRAND_LINE", DataTypes.StringType, true, Metadata.empty()),
new StructField("USE_YN", DataTypes.StringType, true, Metadata.empty())
});
RelationalGroupedDataset grouped = ds.groupBy("PRODUCT_CLASSIFICATION");
Dataset<Row> count = grouped.count();
Dataset<Row> agg = grouped.agg(
count("*").as("COUNT"),
first("PRODUCT_NM").as("PRODUCT_NM"),
first("BRAND_LINE").as("BRAND_LINE")
).filter("COUNT > 1");
agg.show();
• 이기종의 데이터 소스에서 데이터를 로딩하여 결합 > 암호화 > 데이터 품질검사 > 결과 저장
SparkDesigner의적용시나리오– 데이터품질 관리
HDFS
Input
JDBC Input
Hive
Input
Group By
Module
Join
Module
Encryption
Module
Data
Quality
Module
JDBC Output
Oozie Workflow 대비 Spark
Workflow는 하나의
프로세스에서 모두 처리하여
효율성이 높음
• 이기종의 데이터 소스에서 데이터를 로딩하여 결합 > 암호화 > 데이터 품질검사 > 결과 저장
SparkDesigner의적용시나리오– 추천엔진(CollaborativeFiltering)
HDFS
Input
(Rating)
Clean
ETL
Remove
ETL
ALS Recommendation
JDBC Input
(Movie
Title)
추천을 위해서 복잡한 과장을
하나의 Spark Job으로 모두
구현할 수 있도록 하는 유연성
제공
Model
Evaluator
Model
Exporter
HDFS Output
Join
ETL
HDFS Output
SparkDesignerUIPrototype
Browser
DataSource ETL Data Quality
Data Quality
Incompleteness
Data Mining
CF Recommendation
HDFS
Input
(Rating)
Clean
ETL
Remove
ETL
ALS Recommendation
JDBC Input
(Movie
Title)
Model
Evaluator
Model
Exporter
HDFS Output
Join
ETL
HDFS Output
File Output JDBC Output
HDFS
Input
JDBC Input HDFS OutputFile Input Hive Input
RunSaveCopyName:
DirectlyAcyclicGraph(DAG)
• 단방향 비순환 그래프
• Spark Job 의 처리는 단방향 비순환 그래프의 특성을 가짐
• 하지만 사람은 디자이너를 통해 복잡한 그래프를 구성하기를 원함  그래프 해석 필요
DirectlyAcyclicGraph(DAG)로해석하는그래프
HDFS
Input
JDBC Input
Hive
Input
Group By
Module
Join
Module
Encryption
Module
Data
Quality
Module
JDBC Output
HDFS
Input
JDBC Input
Hive
Input
Group By
Module
Join
Module
Encryption
Module
Data
Quality
Module
JDBC Output
GraphML을이용한DAG의표현
• 현재 Spark Designer에서 표현한 DAG를 어떻게 표현할 것인가를 결정
• 기존 Flamingo Workflow Designer는 자체 Workflow Schema를 가짐
• 후보 기술로, GraphML 고려
<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<graph id="G" edgedefault="undirected">
<node id="n0"/>
<node id="n1"/>
<edge id="e1" source="n0" target="n1"/>
</graph>
</graphml>
GraphAlgorithm을통해DAG의순서를결정
• Spark Designer의 Workflow를 그래프로 구성하여 실행 순서를 결정
DirectedGraph<Module, DefaultEdge> g = new DefaultDirectedGraph<>(DefaultEdge.class);
Module hdfsInput = new Module("HDFS Input", "INPUT", "HDFS_INPUT");
Module jdbcInput = new Module("JDBC Input", "INPUT", "JDBC_INPUT");
…
Module join = new Module("Join", "ETL", "JOIN");
Module encryption = new Module("Encryption", "DQ", "ENC");
Module dataQuality = new Module("Data Quality", "DQ", "DQ");
Module jdbcOutput = new Module("JDBC Output", "OUTPUT", "JDBC_OUTPUT");
// add the vertices
g.addVertex(hdfsInput);
g.addVertex(jdbcInput);
…
g.addVertex(join);
g.addVertex(encryption);
g.addVertex(dataQuality);
g.addVertex(jdbcOutput);
g.addEdge(hdfsInput, groupBy);
g.addEdge(jdbcInput, groupBy);
...
g.addEdge(join, encryption);
g.addEdge(encryption, dataQuality);
g.addEdge(dataQuality, jdbcOutput);
OrderIterator<Module, DefaultEdge> orderIterator
= new OrderIterator<Module, DefaultEdge>(g);
while (orderIterator.hasNext()) {
Module module = orderIterator.next();
System.out.println(module);
}
HDFS Input
JDBC Input
Hive Input
Group By
Join
Encryption
Data Quality
JDBC Output
SparkDesigner의Workflow실행하기
Designer Controller
Workflow Service
Metadata Resolver
Execution Planner
Closest First
Execution Plan
Topological Order
Execution Plan
Depth First
Execution Plan
Random Walk
Execution Plan
Breadth First
Execution Plan
Metadata Repository
Oozie Workflow
Builder
Oozie Workflow
Service
Oozie Workflow
Runner
Apache Oozie
Spark Designer Job
앞으로좀더 고민해야할일
• Spark Designer의 Workflow를 XML로 표현할지, Database로 표현할지
• Spark Designer의 Custom Module을 추가할 수 있는지에 대한 검토 및 설계
• Spark Designer의 Module간 메타데이터를 어떻게 처리할지?
• Spark Designer의 Module간 연결 상태가 변경되었을 때 어떻게 메타데이터를 처리할 것인지?
• Oozie Workflow Designer의 Module로 활용할 수 있는 방안 고려
감사합니다
빅데이터본부 | 김병곤

More Related Content

What's hot

[경북] I'mcloud information
[경북] I'mcloud information[경북] I'mcloud information
[경북] I'mcloud informationstartupkorea
 
[Open Technet Summit 2014] 쓰기 쉬운 Hadoop 기반 빅데이터 플랫폼 아키텍처 및 활용 방안
[Open Technet Summit 2014] 쓰기 쉬운 Hadoop 기반 빅데이터 플랫폼 아키텍처 및 활용 방안[Open Technet Summit 2014] 쓰기 쉬운 Hadoop 기반 빅데이터 플랫폼 아키텍처 및 활용 방안
[Open Technet Summit 2014] 쓰기 쉬운 Hadoop 기반 빅데이터 플랫폼 아키텍처 및 활용 방안치완 박
 
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun KimDeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun KimGruter
 
Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Gruter
 
줌인터넷 빅데이터 활용사례 김우승
줌인터넷 빅데이터 활용사례 김우승줌인터넷 빅데이터 활용사례 김우승
줌인터넷 빅데이터 활용사례 김우승Wooseung Kim
 
엔지니어 관점에서 바라본 데이터시각화
엔지니어 관점에서 바라본 데이터시각화엔지니어 관점에서 바라본 데이터시각화
엔지니어 관점에서 바라본 데이터시각화Kenneth Ceyer
 
Daum내부 Hadoop 활용 사례 | Devon 2012
Daum내부 Hadoop 활용 사례 | Devon 2012Daum내부 Hadoop 활용 사례 | Devon 2012
Daum내부 Hadoop 활용 사례 | Devon 2012Daum DNA
 
234 deview2013 김형준
234 deview2013 김형준234 deview2013 김형준
234 deview2013 김형준NAVER D2
 
DB관점에서 본 빅데이터 (2019년 8월)
DB관점에서 본 빅데이터 (2019년 8월)DB관점에서 본 빅데이터 (2019년 8월)
DB관점에서 본 빅데이터 (2019년 8월)Kee Hoon Lee
 
OpenSource Big Data Platform - Flamingo v7
OpenSource Big Data Platform - Flamingo v7OpenSource Big Data Platform - Flamingo v7
OpenSource Big Data Platform - Flamingo v7BYOUNG GON KIM
 
Vertica New Features - 8.1에서 9.2까지
Vertica New Features - 8.1에서 9.2까지Vertica New Features - 8.1에서 9.2까지
Vertica New Features - 8.1에서 9.2까지Kee Hoon Lee
 
빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)Channy Yun
 
Realtime Big data Anaytics and Exampes of Daum (2013)
Realtime Big data Anaytics and Exampes of Daum (2013)Realtime Big data Anaytics and Exampes of Daum (2013)
Realtime Big data Anaytics and Exampes of Daum (2013)Channy Yun
 
빅데이터 인공지능 전략 및 로드맵
빅데이터 인공지능 전략 및 로드맵빅데이터 인공지능 전략 및 로드맵
빅데이터 인공지능 전략 및 로드맵r-kor
 
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)Sang Don Kim
 
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912Yooseok Choi
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.효근 박
 
Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Gruter
 

What's hot (20)

[경북] I'mcloud information
[경북] I'mcloud information[경북] I'mcloud information
[경북] I'mcloud information
 
[Open Technet Summit 2014] 쓰기 쉬운 Hadoop 기반 빅데이터 플랫폼 아키텍처 및 활용 방안
[Open Technet Summit 2014] 쓰기 쉬운 Hadoop 기반 빅데이터 플랫폼 아키텍처 및 활용 방안[Open Technet Summit 2014] 쓰기 쉬운 Hadoop 기반 빅데이터 플랫폼 아키텍처 및 활용 방안
[Open Technet Summit 2014] 쓰기 쉬운 Hadoop 기반 빅데이터 플랫폼 아키텍처 및 활용 방안
 
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun KimDeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
 
Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)
 
줌인터넷 빅데이터 활용사례 김우승
줌인터넷 빅데이터 활용사례 김우승줌인터넷 빅데이터 활용사례 김우승
줌인터넷 빅데이터 활용사례 김우승
 
엔지니어 관점에서 바라본 데이터시각화
엔지니어 관점에서 바라본 데이터시각화엔지니어 관점에서 바라본 데이터시각화
엔지니어 관점에서 바라본 데이터시각화
 
Daum내부 Hadoop 활용 사례 | Devon 2012
Daum내부 Hadoop 활용 사례 | Devon 2012Daum내부 Hadoop 활용 사례 | Devon 2012
Daum내부 Hadoop 활용 사례 | Devon 2012
 
234 deview2013 김형준
234 deview2013 김형준234 deview2013 김형준
234 deview2013 김형준
 
DB관점에서 본 빅데이터 (2019년 8월)
DB관점에서 본 빅데이터 (2019년 8월)DB관점에서 본 빅데이터 (2019년 8월)
DB관점에서 본 빅데이터 (2019년 8월)
 
Flamingo project v4
Flamingo project v4Flamingo project v4
Flamingo project v4
 
OpenSource Big Data Platform - Flamingo v7
OpenSource Big Data Platform - Flamingo v7OpenSource Big Data Platform - Flamingo v7
OpenSource Big Data Platform - Flamingo v7
 
Vertica New Features - 8.1에서 9.2까지
Vertica New Features - 8.1에서 9.2까지Vertica New Features - 8.1에서 9.2까지
Vertica New Features - 8.1에서 9.2까지
 
빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)빅데이터 기술 현황과 시장 전망(2014)
빅데이터 기술 현황과 시장 전망(2014)
 
Realtime Big data Anaytics and Exampes of Daum (2013)
Realtime Big data Anaytics and Exampes of Daum (2013)Realtime Big data Anaytics and Exampes of Daum (2013)
Realtime Big data Anaytics and Exampes of Daum (2013)
 
빅데이터 인공지능 전략 및 로드맵
빅데이터 인공지능 전략 및 로드맵빅데이터 인공지능 전략 및 로드맵
빅데이터 인공지능 전략 및 로드맵
 
Intro to r & hadoop
Intro to r & hadoopIntro to r & hadoop
Intro to r & hadoop
 
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
[Td 2015]틱틱대도 써야 하는 windows 10 앱 개발, c# tips &amp; tricks(송기수)
 
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1  나무기술(주) 최유석 20170912
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
 
Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.Big Data platform을 위한 Sencha Ext JS 사례.
Big Data platform을 위한 Sencha Ext JS 사례.
 
Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014Elastic Search Performance Optimization - Deview 2014
Elastic Search Performance Optimization - Deview 2014
 

Viewers also liked

기계학습 현재와미래 Pdf
기계학습 현재와미래 Pdf기계학습 현재와미래 Pdf
기계학습 현재와미래 Pdf효근 윤
 
Oracle ICS Best Practises - 1st Presented at Oracle Partner PaaS Forum by Phi...
Oracle ICS Best Practises - 1st Presented at Oracle Partner PaaS Forum by Phi...Oracle ICS Best Practises - 1st Presented at Oracle Partner PaaS Forum by Phi...
Oracle ICS Best Practises - 1st Presented at Oracle Partner PaaS Forum by Phi...Phil Wilkins
 
Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Harrison Jung
 
일단 시작하는 코틀린
일단 시작하는 코틀린일단 시작하는 코틀린
일단 시작하는 코틀린Park JoongSoo
 
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스Dan Kang (강동한)
 
해커에게 전해들은 머신러닝 #1
해커에게 전해들은 머신러닝 #1해커에게 전해들은 머신러닝 #1
해커에게 전해들은 머신러닝 #1Haesun Park
 
시나브로 Django 발표
시나브로 Django 발표시나브로 Django 발표
시나브로 Django 발표명서 강
 
DevOps within the Hybrid Cloud Deploying to the VMware Platform on the IBM Cloud
DevOps within the Hybrid Cloud Deploying to the VMware Platform on the IBM CloudDevOps within the Hybrid Cloud Deploying to the VMware Platform on the IBM Cloud
DevOps within the Hybrid Cloud Deploying to the VMware Platform on the IBM CloudMichael Elder
 
Michael leroy of orlando, florida becoming an attorney
Michael leroy of orlando, florida becoming an attorneyMichael leroy of orlando, florida becoming an attorney
Michael leroy of orlando, florida becoming an attorneyMichael LeRoy Orlando
 
개발자들 오리엔테이션
개발자들 오리엔테이션개발자들 오리엔테이션
개발자들 오리엔테이션Park JoongSoo
 
Introduction For seq2seq(sequence to sequence) and RNN
Introduction For seq2seq(sequence to sequence) and RNNIntroduction For seq2seq(sequence to sequence) and RNN
Introduction For seq2seq(sequence to sequence) and RNNHye-min Ahn
 
JSP 빠르게 시작하기
JSP 빠르게 시작하기JSP 빠르게 시작하기
JSP 빠르게 시작하기Park JoongSoo
 
Membangun brand melalui website helofranchise.com
Membangun brand melalui website   helofranchise.comMembangun brand melalui website   helofranchise.com
Membangun brand melalui website helofranchise.comNiko Riansyah
 
Applying Enterprise technologies in Science
Applying Enterprise technologies in ScienceApplying Enterprise technologies in Science
Applying Enterprise technologies in ScienceIgor Khokhryakov
 
Regain Control over your Business
Regain Control over your BusinessRegain Control over your Business
Regain Control over your BusinessBizSmart Select
 
Surat keterangan domisili cv.jayapura
Surat keterangan domisili  cv.jayapuraSurat keterangan domisili  cv.jayapura
Surat keterangan domisili cv.jayapuraKonveksi Tas Promosi
 

Viewers also liked (19)

기계학습 현재와미래 Pdf
기계학습 현재와미래 Pdf기계학습 현재와미래 Pdf
기계학습 현재와미래 Pdf
 
Oracle ICS Best Practises - 1st Presented at Oracle Partner PaaS Forum by Phi...
Oracle ICS Best Practises - 1st Presented at Oracle Partner PaaS Forum by Phi...Oracle ICS Best Practises - 1st Presented at Oracle Partner PaaS Forum by Phi...
Oracle ICS Best Practises - 1st Presented at Oracle Partner PaaS Forum by Phi...
 
Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.
 
Livre Blanc de la Qualité - TOME 2
Livre Blanc de la Qualité - TOME 2Livre Blanc de la Qualité - TOME 2
Livre Blanc de la Qualité - TOME 2
 
일단 시작하는 코틀린
일단 시작하는 코틀린일단 시작하는 코틀린
일단 시작하는 코틀린
 
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
 
해커에게 전해들은 머신러닝 #1
해커에게 전해들은 머신러닝 #1해커에게 전해들은 머신러닝 #1
해커에게 전해들은 머신러닝 #1
 
시나브로 Django 발표
시나브로 Django 발표시나브로 Django 발표
시나브로 Django 발표
 
THINGS TO DO IN CAIRNS
THINGS TO DO IN CAIRNSTHINGS TO DO IN CAIRNS
THINGS TO DO IN CAIRNS
 
DevOps within the Hybrid Cloud Deploying to the VMware Platform on the IBM Cloud
DevOps within the Hybrid Cloud Deploying to the VMware Platform on the IBM CloudDevOps within the Hybrid Cloud Deploying to the VMware Platform on the IBM Cloud
DevOps within the Hybrid Cloud Deploying to the VMware Platform on the IBM Cloud
 
Michael leroy of orlando, florida becoming an attorney
Michael leroy of orlando, florida becoming an attorneyMichael leroy of orlando, florida becoming an attorney
Michael leroy of orlando, florida becoming an attorney
 
개발자들 오리엔테이션
개발자들 오리엔테이션개발자들 오리엔테이션
개발자들 오리엔테이션
 
Introduction For seq2seq(sequence to sequence) and RNN
Introduction For seq2seq(sequence to sequence) and RNNIntroduction For seq2seq(sequence to sequence) and RNN
Introduction For seq2seq(sequence to sequence) and RNN
 
openstack, devops and people
openstack, devops and peopleopenstack, devops and people
openstack, devops and people
 
JSP 빠르게 시작하기
JSP 빠르게 시작하기JSP 빠르게 시작하기
JSP 빠르게 시작하기
 
Membangun brand melalui website helofranchise.com
Membangun brand melalui website   helofranchise.comMembangun brand melalui website   helofranchise.com
Membangun brand melalui website helofranchise.com
 
Applying Enterprise technologies in Science
Applying Enterprise technologies in ScienceApplying Enterprise technologies in Science
Applying Enterprise technologies in Science
 
Regain Control over your Business
Regain Control over your BusinessRegain Control over your Business
Regain Control over your Business
 
Surat keterangan domisili cv.jayapura
Surat keterangan domisili  cv.jayapuraSurat keterangan domisili  cv.jayapura
Surat keterangan domisili cv.jayapura
 

Similar to Flamingo (FEA) Spark Designer

Cloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcampCloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcampSang-bae Lim
 
Spark_Overview_qna
Spark_Overview_qnaSpark_Overview_qna
Spark_Overview_qna현철 박
 
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처hoondong kim
 
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기NAVER D2
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트Dae Kim
 
Apache spark 소개 및 실습
Apache spark 소개 및 실습Apache spark 소개 및 실습
Apache spark 소개 및 실습동현 강
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강uEngine Solutions
 
02.실행환경 교육교재(데이터처리)
02.실행환경 교육교재(데이터처리)02.실행환경 교육교재(데이터처리)
02.실행환경 교육교재(데이터처리)Hankyo
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)EunChul Shin
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처Sunggon Song
 
[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준NAVER D2
 
[week14] Getting started with D3.js
[week14] Getting started with D3.js[week14] Getting started with D3.js
[week14] Getting started with D3.jsneuroassociates
 
Spark performance tuning
Spark performance tuningSpark performance tuning
Spark performance tuninghaiteam
 
2. Application - Sqoop Import
2. Application - Sqoop Import2. Application - Sqoop Import
2. Application - Sqoop Importmerry7
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Hyosang Hong
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Hyosang Hong
 
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제NAVER D2
 
올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발cho hyun jong
 

Similar to Flamingo (FEA) Spark Designer (20)

Spark sql
Spark sqlSpark sql
Spark sql
 
Cloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcampCloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcamp
 
Apache Spark
Apache SparkApache Spark
Apache Spark
 
Spark_Overview_qna
Spark_Overview_qnaSpark_Overview_qna
Spark_Overview_qna
 
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
[AI & DevOps] BigData Scale Production AI 서비스를 위한 최상의 플랫폼 아키텍처
 
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
[225]빅데이터를 위한 분산 딥러닝 플랫폼 만들기
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
 
Apache spark 소개 및 실습
Apache spark 소개 및 실습Apache spark 소개 및 실습
Apache spark 소개 및 실습
 
객체지향프로그래밍 특강
객체지향프로그래밍 특강객체지향프로그래밍 특강
객체지향프로그래밍 특강
 
02.실행환경 교육교재(데이터처리)
02.실행환경 교육교재(데이터처리)02.실행환경 교육교재(데이터처리)
02.실행환경 교육교재(데이터처리)
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처
 
[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준
 
[week14] Getting started with D3.js
[week14] Getting started with D3.js[week14] Getting started with D3.js
[week14] Getting started with D3.js
 
Spark performance tuning
Spark performance tuningSpark performance tuning
Spark performance tuning
 
2. Application - Sqoop Import
2. Application - Sqoop Import2. Application - Sqoop Import
2. Application - Sqoop Import
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
 
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
 
올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발올챙이로 살펴보는 Eclipse개발
올챙이로 살펴보는 Eclipse개발
 

Flamingo (FEA) Spark Designer

  • 1. 초보자의 데이터 분석을 지원하는 Spark Designer 설계안 빅데이터본부 | 김병곤
  • 2. Spark Designer는 Flamingo 2.0의 Workflow Designer를 모형으로 하고 있습니다. SparkDesigner의모형
  • 3. Spark Designer는 Flamingo 2.0의 Workflow Designer를 모형으로 하고 있습니다. Flamingo2.0WorkflowDesigner의문제점 메타데이터 관리 부재 데이터소스로 HDFS만 지원 MapReduce의 한계 워크플로우 구성의 한계
  • 4. Workflow Designer는 기능적 특성이 다양하게 반영되어야 하나 서로 상충되는 것이 있어서 두 개의 워크플로우 디 자이너로 분리하였습니다. Flamingo2.0WorkflowDesigner를분리 Oozie Designer Spark Designer Workflow Designer
  • 5. • 초보자들이 쉽게 사용할 수 있는 분석 UI 제공 • 전처리, 머신러닝 등을 통합할 수 있는 UI 제공 • 메타데이터를 관리할 수 기능 제공 • 다양한 데이터를 처리할 수 있는 통합 기능 제공 Spark Designer 목적
  • 6. SparkDesigner의유스케이스 Spark Designer는 초보자들이 쉽게 사용할 수 있는 User Interface와 Framework를 제공하는 것을 목표로 합니 다. Preprocessing 기 보유하고있는데이터를가공하는 역할(머신러닝의입출력데이터를 가공하는데도가능) Data Quality Check 데이터품질관리(일관성,유효성,완 전성등…)를위한데이터 처리 Machine Learning 기 보유하고있는데이터를기반으로 Spark MLlib에서 제공하는머신러닝 알고리즘을수행(예; 추천) DataSource Integration RDBMS, File, HDFS 등등 다양한데 이터소스의데이터를한번에처리
  • 7. SparkDesigner의구현에서고려해야할점 메타데이터 관리 데이터의메타데이터관리어려움 UI Module의 메타데이터관리필요 워크플로우 관리 워크플로우표현의최적의방법은? 전처리/알고리즘 Module 확장 CustomModule의 확장 전처리Module의 지원범위 머신러닝Module의 지원 범위 워크플로우 실행 Spark Job을 누가관리해야하는가? Spark Job을 실행하는주체?
  • 8. 메타데이터관리 • Hadoop의 MapReduce는 병렬/분산 처리 방식에 대한 Framework • 고성능 처리에는 적합하지만 메타데이터 관리 방안 부재 • Apache Hive의 HCatalog도 대안이 되기에는 대중성 및 활용성 떨어짐 • Spark 최신 버전에서 RDD  DataFrame  DataSet 지원을 통해 메타데이터 관리가 가능해짐 • File의 Metadata 관리가 가능하게 되어 기존의 Workflow Designer의 메타데이터 관리를 보완
  • 9. Spark의DataFrame& Dataset • Unified Spark 2.0 API를 통해 데이터를 관리하는 방법이 정교해짐 • 특히, Dataset의 등장은 컬럼 정보의 메타데이터 관리를 유연하게 이끌 수 있음 • Dataset은 Java, Scala만 지원 (Python, R은 DataFrame만 지원)
  • 10. Spark의DataFrame& Dataset • DataFrame & Dataset의 가장 큰 강점은 테이블 구조의 데이터 표현 가능 • 테이블 구조의 메타데이터 정의 가능
  • 11. Spark의메타데이터처리 • 데이터에 대한 POJO를 정의하여 메타데이터化 후 데이터 처리 • POJO를 지정해야 하므로 자유도가 매우 떨어짐 // $example on:schema_inferring$ // Create an RDD of Person objects from a text file JavaRDD<Person> peopleRDD = spark.read() .textFile("examples/src/main/resources/people.txt") .javaRDD() .map(new Function<String, Person>() { @Override public Person call(String line) throws Exception { String[] parts = line.split(","); Person person = new Person(); person.setName(parts[0]); person.setAge(Integer.parseInt(parts[1].trim())); return person; } }); // Apply a schema to an RDD of JavaBeans to get a DataFrame Dataset<Row> peopleDF = spark.createDataFrame(peopleRDD, Person.class); // Register the DataFrame as a temporary view peopleDF.createOrReplaceTempView("people"); // SQL statements can be run by using the sql methods provided by spark Dataset<Row> teenagersDF = spark.sql("SELECT name FROM people WHERE age BETWEEN 13 AND 19");
  • 12. Spark의메타데이터처리 • 데이터 파일에 대해서 문자열 기반의 메타데이터 등록 가능 StructType schema = new StructType(new StructField[]{ new StructField("PRODUCT_CLASSIFICATION", DataTypeUtils.getDataType("STRING"), true, Metadata.empty()), new StructField("PRODUCT_NM", DataTypes.StringType, true, Metadata.empty()), new StructField("BRAND_LINE", DataTypes.StringType, true, Metadata.empty()), new StructField("USE_YN", DataTypes.StringType, true, Metadata.empty()) }); RelationalGroupedDataset grouped = ds.groupBy("PRODUCT_CLASSIFICATION"); Dataset<Row> count = grouped.count(); Dataset<Row> agg = grouped.agg( count("*").as("COUNT"), first("PRODUCT_NM").as("PRODUCT_NM"), first("BRAND_LINE").as("BRAND_LINE") ).filter("COUNT > 1"); agg.show();
  • 13. • 이기종의 데이터 소스에서 데이터를 로딩하여 결합 > 암호화 > 데이터 품질검사 > 결과 저장 SparkDesigner의적용시나리오– 데이터품질 관리 HDFS Input JDBC Input Hive Input Group By Module Join Module Encryption Module Data Quality Module JDBC Output Oozie Workflow 대비 Spark Workflow는 하나의 프로세스에서 모두 처리하여 효율성이 높음
  • 14. • 이기종의 데이터 소스에서 데이터를 로딩하여 결합 > 암호화 > 데이터 품질검사 > 결과 저장 SparkDesigner의적용시나리오– 추천엔진(CollaborativeFiltering) HDFS Input (Rating) Clean ETL Remove ETL ALS Recommendation JDBC Input (Movie Title) 추천을 위해서 복잡한 과장을 하나의 Spark Job으로 모두 구현할 수 있도록 하는 유연성 제공 Model Evaluator Model Exporter HDFS Output Join ETL HDFS Output
  • 15. SparkDesignerUIPrototype Browser DataSource ETL Data Quality Data Quality Incompleteness Data Mining CF Recommendation HDFS Input (Rating) Clean ETL Remove ETL ALS Recommendation JDBC Input (Movie Title) Model Evaluator Model Exporter HDFS Output Join ETL HDFS Output File Output JDBC Output HDFS Input JDBC Input HDFS OutputFile Input Hive Input RunSaveCopyName:
  • 16. DirectlyAcyclicGraph(DAG) • 단방향 비순환 그래프 • Spark Job 의 처리는 단방향 비순환 그래프의 특성을 가짐 • 하지만 사람은 디자이너를 통해 복잡한 그래프를 구성하기를 원함  그래프 해석 필요
  • 17. DirectlyAcyclicGraph(DAG)로해석하는그래프 HDFS Input JDBC Input Hive Input Group By Module Join Module Encryption Module Data Quality Module JDBC Output HDFS Input JDBC Input Hive Input Group By Module Join Module Encryption Module Data Quality Module JDBC Output
  • 18. GraphML을이용한DAG의표현 • 현재 Spark Designer에서 표현한 DAG를 어떻게 표현할 것인가를 결정 • 기존 Flamingo Workflow Designer는 자체 Workflow Schema를 가짐 • 후보 기술로, GraphML 고려 <?xml version="1.0" encoding="UTF-8"?> <graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <graph id="G" edgedefault="undirected"> <node id="n0"/> <node id="n1"/> <edge id="e1" source="n0" target="n1"/> </graph> </graphml>
  • 19. GraphAlgorithm을통해DAG의순서를결정 • Spark Designer의 Workflow를 그래프로 구성하여 실행 순서를 결정 DirectedGraph<Module, DefaultEdge> g = new DefaultDirectedGraph<>(DefaultEdge.class); Module hdfsInput = new Module("HDFS Input", "INPUT", "HDFS_INPUT"); Module jdbcInput = new Module("JDBC Input", "INPUT", "JDBC_INPUT"); … Module join = new Module("Join", "ETL", "JOIN"); Module encryption = new Module("Encryption", "DQ", "ENC"); Module dataQuality = new Module("Data Quality", "DQ", "DQ"); Module jdbcOutput = new Module("JDBC Output", "OUTPUT", "JDBC_OUTPUT"); // add the vertices g.addVertex(hdfsInput); g.addVertex(jdbcInput); … g.addVertex(join); g.addVertex(encryption); g.addVertex(dataQuality); g.addVertex(jdbcOutput); g.addEdge(hdfsInput, groupBy); g.addEdge(jdbcInput, groupBy); ... g.addEdge(join, encryption); g.addEdge(encryption, dataQuality); g.addEdge(dataQuality, jdbcOutput); OrderIterator<Module, DefaultEdge> orderIterator = new OrderIterator<Module, DefaultEdge>(g); while (orderIterator.hasNext()) { Module module = orderIterator.next(); System.out.println(module); } HDFS Input JDBC Input Hive Input Group By Join Encryption Data Quality JDBC Output
  • 20. SparkDesigner의Workflow실행하기 Designer Controller Workflow Service Metadata Resolver Execution Planner Closest First Execution Plan Topological Order Execution Plan Depth First Execution Plan Random Walk Execution Plan Breadth First Execution Plan Metadata Repository Oozie Workflow Builder Oozie Workflow Service Oozie Workflow Runner Apache Oozie Spark Designer Job
  • 21. 앞으로좀더 고민해야할일 • Spark Designer의 Workflow를 XML로 표현할지, Database로 표현할지 • Spark Designer의 Custom Module을 추가할 수 있는지에 대한 검토 및 설계 • Spark Designer의 Module간 메타데이터를 어떻게 처리할지? • Spark Designer의 Module간 연결 상태가 변경되었을 때 어떻게 메타데이터를 처리할 것인지? • Oozie Workflow Designer의 Module로 활용할 수 있는 방안 고려