SlideShare a Scribd company logo
1 of 65
Download to read offline
Lightning-fast cluster computing
잠시 복습
Problem
Solution
MapReduce?
모든 일을 MapReduce화 하라!
근데 이런 SQL을 어떻
게 MapReduce로 만들
지?
SELECT LAT_N, CITY,
TEMP_F
FROM STATS, STATION
WHERE MONTH = 7
AND STATS.ID =
STATION.ID
ORDER BY TEMP_F;
모든 일을 MapReduce화 하라!
이런 Machine
learning/Data 분석 업
무는?
“지난 2007년부터 매월 나오
는 전국 부동산 실거래가 정
보에서 영향을 미칠 수 있는
변수 140개중에 의미있는 변
수 5개만 뽑아.”
“아, 마감은 내일이다.”
코드도 이정도면 뭐? (단순히 단어세는 코드가…)
package org.myorg;
import java.io.IOException;
import java.util.*;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
public class WordCount {
public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> {
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(LongWritable key, Text value, Context context) throws IOException,
InterruptedException {
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line);
while (tokenizer.hasMoreTokens()) {
word.set(tokenizer.nextToken());
context.write(word, one);
}
}
}
public static class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> {
public void reduce(Text key, Iterable<IntWritable> values, Context context)
throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
context.write(key, new IntWritable(sum));
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = new Job(conf, "wordcount");
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
job.setMapperClass(Map.class);
job.setReducerClass(Reduce.class);
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
job.waitForCompletion(true);
}
원래 세월이 가면 연장은 좋아지는 법
Generality
High-level tool들 아래
에서 모든 일들을 있는
그대로 하게 해줍니다.
쓰기 쉽습니다.
Java, Scala, Python을
지원합니다.
text_file = spark.textFile
("hdfs://...")
text_file.flatMap(lambda line:
line.split())
.map(lambda word: (word,
1))
.reduceByKey(lambda a, b:
a+b)
Word count in Spark's Python API
온갖 분산처리 환경에서 다 돌아갑니다.
● Hadoop, Mesos, 혼
자서도, Cloud에서
도 돌아요.
● HDFS, Cassandra,
HBase, S3등에서
데이타도 가져올 수
있어요.
속도도 빠릅니다.
Hadoop MapReduce
를 Memory에서 올렸
을 때보다 100배, Disk
에서 돌렸을 때의 10배
빠릅니다.
Logistic regression in
Hadoop and Spark
자체 Web UI까지 있어요….
Spark은 말이죠
● Tool이에요, Library 아닙니다.
○ 이 Tool위에 하고 싶은 일들을 정의하고
○ 실행시키는 겁니다.
Standalone으로 부터
제 2부: 한번 해보자!
vagrant up / vagrant ssh
spark-shell
pyspark- python spark shell
Wordcount : Scala
val f = sc.textFile("README.md")
val wc = f.flatMap(l => l.split(" ")).map(word => (word,
1)).reduceByKey(_ + _)
wc.saveAsTextFile("wc_out.txt")
Wordcount : Scala
val f = sc.textFile("README.md")
===================
def textFile(path: String, minPartitions:
Int = defaultMinPartitions):RDD[String]
===================
Read a directory of text files from HDFS, a local file system
(available on all nodes), or any Hadoop-supported file
system URI.
Wordcount : Scala
val wc = f.flatMap(l => l.split(" ")).map(word => (word,
1)).reduceByKey(_ + _)
Wordcount : Scala
val wc = f.flatMap(l => l.split(" "))
: 한 단어씩 끊어서
Wordcount : Scala
val wc = f.flatMap(l => l.split(" ")).map(word => (word,
1))
:(각 단어들, 1)이라는 (Key, Value)들을 만들고
Wordcount : Scala
val wc = f.flatMap(l => l.split(" ")).map(word => (word,
1)).reduceByKey(_ + _)
: 그 집합들을 다 Key별로 합해보아요.
Wordcount : Scala
scala>wc.take(20)
…….
finished: take at <console>:26, took 0.081425 s
res6: Array[(String, Int)] = Array((package,1), (For,2),
(processing.,1), (Programs,1), (Because,1), (The,1),
(cluster.,1), (its,1), ([run,1), (APIs,1), (computation,
1), (Try,1), (have,1), (through,1), (several,1), (This,2),
("yarn-cluster",1), (graph,1), (Hive,2), (storage,1))
Wordcount : Scala
wc.saveAsTextFile("wc_out.txt")
==========================
파일로 저장
앞서 짠 코드를 이렇게 돌린다면?
Simplifying Big Data Analysis
with Apache Spark
Matei Zaharia
April 27, 2015
Disk-> Memory로 옮겨봅시다.
Simplifying Big Data Analysis
with Apache Spark
Matei Zaharia
April 27, 2015
즉 이렇게 각 Cluster별로
일거리와 명령을 전달해 주
면 되요.
Spark Model
● 데이타를 변환해가는 프로그램을 작성하는
것
● Resilient Distributed Dataset(RDDs)
○ Cluster로 전달할 memory나 disk에 저장될 object들
의 집합
○ 병렬 변환 ( map, filter…)등등으로 구성
○ 오류가 생기면 자동으로 재구성
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Making interactive Big Data
Applications Fast AND Easy
Holden Karau
Simplifying Big Data Analysis
with Apache Spark
Matei Zaharia
April 27, 2015
각 code 한 줄이 RDD!
val f = sc.textFile("README.md")
val wc = f.flatMap(l => l.split(" ")).map(word => (word,
1)).reduceByKey(_ + _)
wc.saveAsTextFile("wc_out.txt")
지원하는 명령들
Build-in libraries
● 다양한 기능들을 RDD로
쓸 수 있게 만들어놓음
● Caching + DAG model은
이런거 돌리는데 충분히
효율적임.
● 모든 라이브러리를 하나
프로그램에 다 묶어 놓는
게 더 빠르다.
Simplifying Big Data Analysis
with Apache Spark
Matei Zaharia
April 27, 2015
Simplifying Big Data Analysis
with Apache Spark
Matei Zaharia
April 27, 2015
Simplifying Big Data Analysis
with Apache Spark
Matei Zaharia
April 27, 2015
MLib
Vectors, Matrices = RDD[Vector]
Iterative computation
points = sc.textFile(“data.txt”).map
(parsePoint)
model = KMeans.train(points, 10)
model.predict(newPoint)
GraphX
Represents
graphs as RDDs
of vertices and
edges.
Simplifying Big Data Analysis
with Apache Spark
Matei Zaharia
April 27, 2015
결론
여러분의 data source, 작업, 환경들을 다 통합
하고 싶어요.
Q&A

More Related Content

What's hot

Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기SangWoo Kim
 
Hadoop Introduction (1.0)
Hadoop Introduction (1.0)Hadoop Introduction (1.0)
Hadoop Introduction (1.0)Keeyong Han
 
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지위키북스
 
Map reduce 기본 설명
Map reduce 기본 설명Map reduce 기본 설명
Map reduce 기본 설명Jinho Yoo
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for HadoopSeungYong Baek
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache TajoGruter
 
빅데이터 구축 사례
빅데이터 구축 사례빅데이터 구축 사례
빅데이터 구축 사례Taehyeon Oh
 
Cloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcampCloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcampSang-bae Lim
 
Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoMatthew (정재화)
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWSGruter
 
Data pipeline and data lake
Data pipeline and data lakeData pipeline and data lake
Data pipeline and data lakeDaeMyung Kang
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습동현 강
 
Hadoop 제주대
Hadoop 제주대Hadoop 제주대
Hadoop 제주대DaeHeon Oh
 
하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기beom kyun choi
 
Spark와 Hadoop, 완벽한 조합 (한국어)
Spark와 Hadoop, 완벽한 조합 (한국어)Spark와 Hadoop, 완벽한 조합 (한국어)
Spark와 Hadoop, 완벽한 조합 (한국어)Teddy Choi
 
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제NAVER D2
 
왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지 왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지 Un Gi Jung
 

What's hot (20)

Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기
 
Spark sql
Spark sqlSpark sql
Spark sql
 
Hadoop Introduction (1.0)
Hadoop Introduction (1.0)Hadoop Introduction (1.0)
Hadoop Introduction (1.0)
 
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
 
Map reduce 기본 설명
Map reduce 기본 설명Map reduce 기본 설명
Map reduce 기본 설명
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
 
(Apacje Spark)아파치 스파크 개요, 소개, 스파크란?
(Apacje Spark)아파치 스파크 개요, 소개, 스파크란?(Apacje Spark)아파치 스파크 개요, 소개, 스파크란?
(Apacje Spark)아파치 스파크 개요, 소개, 스파크란?
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
 
Introduction to Apache Tajo
Introduction to Apache TajoIntroduction to Apache Tajo
Introduction to Apache Tajo
 
빅데이터 구축 사례
빅데이터 구축 사례빅데이터 구축 사례
빅데이터 구축 사례
 
Cloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcampCloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcamp
 
Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with Tajo
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
 
Data pipeline and data lake
Data pipeline and data lakeData pipeline and data lake
Data pipeline and data lake
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습
 
Hadoop 제주대
Hadoop 제주대Hadoop 제주대
Hadoop 제주대
 
하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기
 
Spark와 Hadoop, 완벽한 조합 (한국어)
Spark와 Hadoop, 완벽한 조합 (한국어)Spark와 Hadoop, 완벽한 조합 (한국어)
Spark와 Hadoop, 완벽한 조합 (한국어)
 
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
 
왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지 왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지
 

Similar to Spark 소개 2부

KCSE 2015 Tutorial 빅데이터 분석 기술의 소프트웨어 공학 분야 활용 (...
KCSE 2015 Tutorial 빅데이터 분석 기술의  소프트웨어 공학 분야 활용 (...KCSE 2015 Tutorial 빅데이터 분석 기술의  소프트웨어 공학 분야 활용 (...
KCSE 2015 Tutorial 빅데이터 분석 기술의 소프트웨어 공학 분야 활용 (...Chanjin Park
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처Sunggon Song
 
[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준NAVER D2
 
Distributed Programming Framework, hadoop
Distributed Programming Framework, hadoopDistributed Programming Framework, hadoop
Distributed Programming Framework, hadoopLGU+
 
스프링군살없이세팅하기(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
 
소프트웨어의 계층구조
소프트웨어의 계층구조소프트웨어의 계층구조
소프트웨어의 계층구조Wonjun Hwang
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rdPark Jonggun
 
Real-time Big Data Analytics Practice with Unstructured Data
Real-time Big Data Analytics Practice with Unstructured DataReal-time Big Data Analytics Practice with Unstructured Data
Real-time Big Data Analytics Practice with Unstructured DataTed Won
 
Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoGruter
 
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
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기KwangSeob Jeong
 
Do IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIDo IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIHyunghun Cho
 
learning spark - Chatper8. Tuning and Debugging
learning spark - Chatper8. Tuning and Debugginglearning spark - Chatper8. Tuning and Debugging
learning spark - Chatper8. Tuning and DebuggingMungyu Choi
 
빅데이터 플랫폼 진화 공개용
빅데이터 플랫폼 진화 공개용빅데이터 플랫폼 진화 공개용
빅데이터 플랫폼 진화 공개용YOUNGGYU CHUN
 
성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3Amazon Web Services Korea
 
[Pgday.Seoul 2019] Advanced FDW
[Pgday.Seoul 2019] Advanced FDW[Pgday.Seoul 2019] Advanced FDW
[Pgday.Seoul 2019] Advanced FDWPgDay.Seoul
 
NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스Sungik Kim
 
DataWorks Summit 2017
DataWorks Summit 2017DataWorks Summit 2017
DataWorks Summit 2017Daesung Park
 

Similar to Spark 소개 2부 (20)

KCSE 2015 Tutorial 빅데이터 분석 기술의 소프트웨어 공학 분야 활용 (...
KCSE 2015 Tutorial 빅데이터 분석 기술의  소프트웨어 공학 분야 활용 (...KCSE 2015 Tutorial 빅데이터 분석 기술의  소프트웨어 공학 분야 활용 (...
KCSE 2015 Tutorial 빅데이터 분석 기술의 소프트웨어 공학 분야 활용 (...
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처
 
[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준[246] foursquare데이터라이프사이클 설현준
[246] foursquare데이터라이프사이클 설현준
 
What is spark
What is sparkWhat is spark
What is spark
 
Distributed Programming Framework, hadoop
Distributed Programming Framework, hadoopDistributed Programming Framework, hadoop
Distributed Programming Framework, hadoop
 
스프링군살없이세팅하기(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.)
 
소프트웨어의 계층구조
소프트웨어의 계층구조소프트웨어의 계층구조
소프트웨어의 계층구조
 
Mongo db 최범균
Mongo db 최범균Mongo db 최범균
Mongo db 최범균
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
 
Real-time Big Data Analytics Practice with Unstructured Data
Real-time Big Data Analytics Practice with Unstructured DataReal-time Big Data Analytics Practice with Unstructured Data
Real-time Big Data Analytics Practice with Unstructured Data
 
Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with Tajo
 
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)
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
 
Do IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open APIDo IoT Yourself! - 사물 간의 연결을 위한 Open API
Do IoT Yourself! - 사물 간의 연결을 위한 Open API
 
learning spark - Chatper8. Tuning and Debugging
learning spark - Chatper8. Tuning and Debugginglearning spark - Chatper8. Tuning and Debugging
learning spark - Chatper8. Tuning and Debugging
 
빅데이터 플랫폼 진화 공개용
빅데이터 플랫폼 진화 공개용빅데이터 플랫폼 진화 공개용
빅데이터 플랫폼 진화 공개용
 
성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3
 
[Pgday.Seoul 2019] Advanced FDW
[Pgday.Seoul 2019] Advanced FDW[Pgday.Seoul 2019] Advanced FDW
[Pgday.Seoul 2019] Advanced FDW
 
NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스
 
DataWorks Summit 2017
DataWorks Summit 2017DataWorks Summit 2017
DataWorks Summit 2017
 

Spark 소개 2부

  • 5. 모든 일을 MapReduce화 하라! 근데 이런 SQL을 어떻 게 MapReduce로 만들 지? SELECT LAT_N, CITY, TEMP_F FROM STATS, STATION WHERE MONTH = 7 AND STATS.ID = STATION.ID ORDER BY TEMP_F;
  • 6. 모든 일을 MapReduce화 하라! 이런 Machine learning/Data 분석 업 무는? “지난 2007년부터 매월 나오 는 전국 부동산 실거래가 정 보에서 영향을 미칠 수 있는 변수 140개중에 의미있는 변 수 5개만 뽑아.” “아, 마감은 내일이다.”
  • 7. 코드도 이정도면 뭐? (단순히 단어세는 코드가…) package org.myorg; import java.io.IOException; import java.util.*; import org.apache.hadoop.fs.Path; import org.apache.hadoop.conf.*; import org.apache.hadoop.io.*; import org.apache.hadoop.mapreduce.*; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; public class WordCount { public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); context.write(word, one); } } } public static class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } context.write(key, new IntWritable(sum)); } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = new Job(conf, "wordcount"); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); job.setMapperClass(Map.class); job.setReducerClass(Reduce.class); job.setInputFormatClass(TextInputFormat.class); job.setOutputFormatClass(TextOutputFormat.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); job.waitForCompletion(true); }
  • 8. 원래 세월이 가면 연장은 좋아지는 법
  • 9. Generality High-level tool들 아래 에서 모든 일들을 있는 그대로 하게 해줍니다.
  • 10. 쓰기 쉽습니다. Java, Scala, Python을 지원합니다. text_file = spark.textFile ("hdfs://...") text_file.flatMap(lambda line: line.split()) .map(lambda word: (word, 1)) .reduceByKey(lambda a, b: a+b) Word count in Spark's Python API
  • 11. 온갖 분산처리 환경에서 다 돌아갑니다. ● Hadoop, Mesos, 혼 자서도, Cloud에서 도 돌아요. ● HDFS, Cassandra, HBase, S3등에서 데이타도 가져올 수 있어요.
  • 12. 속도도 빠릅니다. Hadoop MapReduce 를 Memory에서 올렸 을 때보다 100배, Disk 에서 돌렸을 때의 10배 빠릅니다. Logistic regression in Hadoop and Spark
  • 13. 자체 Web UI까지 있어요….
  • 14. Spark은 말이죠 ● Tool이에요, Library 아닙니다. ○ 이 Tool위에 하고 싶은 일들을 정의하고 ○ 실행시키는 겁니다.
  • 16. vagrant up / vagrant ssh
  • 19. Wordcount : Scala val f = sc.textFile("README.md") val wc = f.flatMap(l => l.split(" ")).map(word => (word, 1)).reduceByKey(_ + _) wc.saveAsTextFile("wc_out.txt")
  • 20. Wordcount : Scala val f = sc.textFile("README.md") =================== def textFile(path: String, minPartitions: Int = defaultMinPartitions):RDD[String] =================== Read a directory of text files from HDFS, a local file system (available on all nodes), or any Hadoop-supported file system URI.
  • 21. Wordcount : Scala val wc = f.flatMap(l => l.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)
  • 22. Wordcount : Scala val wc = f.flatMap(l => l.split(" ")) : 한 단어씩 끊어서
  • 23. Wordcount : Scala val wc = f.flatMap(l => l.split(" ")).map(word => (word, 1)) :(각 단어들, 1)이라는 (Key, Value)들을 만들고
  • 24. Wordcount : Scala val wc = f.flatMap(l => l.split(" ")).map(word => (word, 1)).reduceByKey(_ + _) : 그 집합들을 다 Key별로 합해보아요.
  • 25.
  • 26. Wordcount : Scala scala>wc.take(20) ……. finished: take at <console>:26, took 0.081425 s res6: Array[(String, Int)] = Array((package,1), (For,2), (processing.,1), (Programs,1), (Because,1), (The,1), (cluster.,1), (its,1), ([run,1), (APIs,1), (computation, 1), (Try,1), (have,1), (through,1), (several,1), (This,2), ("yarn-cluster",1), (graph,1), (Hive,2), (storage,1))
  • 28.
  • 29. 앞서 짠 코드를 이렇게 돌린다면? Simplifying Big Data Analysis with Apache Spark Matei Zaharia April 27, 2015
  • 30. Disk-> Memory로 옮겨봅시다. Simplifying Big Data Analysis with Apache Spark Matei Zaharia April 27, 2015
  • 31. 즉 이렇게 각 Cluster별로 일거리와 명령을 전달해 주 면 되요.
  • 32. Spark Model ● 데이타를 변환해가는 프로그램을 작성하는 것 ● Resilient Distributed Dataset(RDDs) ○ Cluster로 전달할 memory나 disk에 저장될 object들 의 집합 ○ 병렬 변환 ( map, filter…)등등으로 구성 ○ 오류가 생기면 자동으로 재구성
  • 33. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 34. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 35. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 36. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 37. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 38. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 39. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 40. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 41. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 42. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 43. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 44. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 45. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 46. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 47. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 48. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 49. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 50. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 51. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 52. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 53. Making interactive Big Data Applications Fast AND Easy Holden Karau
  • 54. Simplifying Big Data Analysis with Apache Spark Matei Zaharia April 27, 2015
  • 55. 각 code 한 줄이 RDD! val f = sc.textFile("README.md") val wc = f.flatMap(l => l.split(" ")).map(word => (word, 1)).reduceByKey(_ + _) wc.saveAsTextFile("wc_out.txt")
  • 57. Build-in libraries ● 다양한 기능들을 RDD로 쓸 수 있게 만들어놓음 ● Caching + DAG model은 이런거 돌리는데 충분히 효율적임. ● 모든 라이브러리를 하나 프로그램에 다 묶어 놓는 게 더 빠르다.
  • 58. Simplifying Big Data Analysis with Apache Spark Matei Zaharia April 27, 2015
  • 59. Simplifying Big Data Analysis with Apache Spark Matei Zaharia April 27, 2015
  • 60. Simplifying Big Data Analysis with Apache Spark Matei Zaharia April 27, 2015
  • 61. MLib Vectors, Matrices = RDD[Vector] Iterative computation points = sc.textFile(“data.txt”).map (parsePoint) model = KMeans.train(points, 10) model.predict(newPoint)
  • 62. GraphX Represents graphs as RDDs of vertices and edges.
  • 63. Simplifying Big Data Analysis with Apache Spark Matei Zaharia April 27, 2015
  • 64. 결론 여러분의 data source, 작업, 환경들을 다 통합 하고 싶어요.
  • 65. Q&A