1
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
3
•
•
•
•
•
•
•
•
•
•
4
•
•
5
•
•
•
6
7
•
•
•
8
Oracle	and	Analyst	Confidential	–Restricted 9
•
•
•
•
•
10
2006 2008 2009 2010 2011 2012 2013
Core	Hadoop
(HDFS,	
MapReduce)
HBase
ZooKeeper
Solr
Pig
Core	Hadoop
Hive
Mahout
HBase
ZooKeeper
Solr
Pig
Core	Hadoop
Sqoop
Avro
Hive
Mahout
HBase
ZooKeeper
Solr
Pig
Core	Hadoop
Flume
Bigtop
Oozie
HCatalog
Hue
Sqoop
Avro
Hive
Mahout
HBase
ZooKeeper
Solr
Pig
YARN
Core	Hadoop
Spark
Tez
Impala
Kafka
Drill
Flume
Bigtop
Oozie
HCatalog
Hue
Sqoop
Avro
Hive
Mahout
HBase
ZooKeeper
Solr
Pig
YARN
Core	Hadoop
Parquet
Sentry
Spark
Tez
Impala
Kafka
Drill
Flume
Bigtop
Oozie
HCatalog
Hue
Sqoop
Avro
Hive
Mahout
HBase
ZooKeeper
Solr
Pig
YARN
Core	Hadoop
2007
Solr
Pig
Core	Hadoop
Knox
Flink
Parquet
Sentry
Spark
Tez
Impala
Kafka
Drill
Flume
Bigtop
Oozie
HCatalog
Hue
Sqoop
Avro
Hive
Mahout
HBase
ZooKeeper
Solr
Pig
YARN
Core	Hadoop
2014 2015
Kudu
RecordService
Ibis
Falcon
Knox
Flink
Parquet
Sentry
Spark
Tez
Impala
Kafka
Drill
Flume
Bigtop
Oozie
HCatalog
Hue
Sqoop
Avro
Hive
Mahout
HBase
ZooKeeper
Solr
Pig
YARN
Core	Hadoop
12
Hadoop
Spark
13
출처 0 https://en.wikipedia.org/wiki/Apache_Spark#History
1s에 약 3회 버전 release
•
14
Oracle	and	Analyst	Confidential	–Restricted 15
•
–
–
Oracle	and	Analyst	Confidential	–Restricted 16
•
스파크 코어
•
17
18
•
•
–
–
–
•
20
Oracle	and	Analyst	Confidential	–Restricted 21
•
•
•
출처:	http://spark.apache.org/docs/latest/cluster-overview.html
1
2
2
3
3
출처:	http://spark.apache.org/docs/latest/cluster-overview.html
24
25
•
26
27
출처 0 IttQ0%%DdO(.IVCTQot.Oet%IVCfT%4).&./%7BtB5SiDLTA=VSveyTA-A6oOteOt%(&1,A=QBSLA=VSvey%(&1,A=QBSLA8OfogSBQIiD.Qdf
28
출처 0 IttQ0%%DdO(.IVCTQot.Oet%IVCfT%4).&./%7BtB5SiDLTA=VSveyTA-A6oOteOt%(&1,A=QBSLA=VSvey%(&1,A=QBSLA8OfogSBQIiD.Qdf
29
출처 0 IttQ0%%DdO(.IVCTQot.Oet%IVCfT%4).&./%7BtB5SiDLTA=VSveyTA-A6oOteOt%(&1,A=QBSLA=VSvey%(&1,A=QBSLA8OfogSBQIiD.Qdf
30
출처 0 IttQ0%%DdO(.IVCTQot.Oet%IVCfT%4).&./%7BtB5SiDLTA=VSveyTA-A6oOteOt%(&1,A=QBSLA=VSvey%(&1,A=QBSLA8OfogSBQIiD.Qdf
31
출처 0 IttQ0%%DdO(.IVCTQot.Oet%IVCfT%4).&./%7BtB5SiDLTA=VSveyTA-A6oOteOt%(&1,A=QBSLA=VSvey%(&1,A=QBSLA8OfogSBQIiD.Qdf
32
출처 0 IttQ0%%DdO(.IVCTQot.Oet%IVCfT%4).&./%7BtB5SiDLTA=VSveyTA-A6oOteOt%(&1,A=QBSLA=VSvey%(&1,A=QBSLA8OfogSBQIiD.Qdf
33
출처 0 IttQ0%%DdO(.IVCTQot.Oet%IVCfT%4).&./%7BtB5SiDLTA=VSveyTA-A6oOteOt%(&1,A=QBSLA=VSvey%(&1,A=QBSLA8OfogSBQIiD.Qdf
34
출처 0 IttQ0%%XXX.TMideTIBSe.Oet%=QBSL=Vmmit%IoX-TQBSL-fitT-iOto-CBidVT-TDBMe-jBmeT-QeOg
• Scale : 1000y 이상 (&,&&&코어, 1&&>5 램)
• 일 수행 작업 0 (&&&~)&&&
• 지원 업무 0 4dT, =eBSDI, :BQ, 6ommeSDe, etD.
• Cool Project : Enabling Interactive Queries
with Spark and Tachyon
• > 50x acceleration of Big Data Analytics
workloads
1. USE	MR	to	query	6	TB	of	data
2. Use	Spark	to	query	6	TB	of	data
3. Use	Spark	+	Tachyon	to	query	6	TB	of	data
35
출처 0 IttQ0%%XXX.TMideTIBSe.Oet%=QBSL=Vmmit%CSiBO-LVSTBS
• 성u 0
q ga e험 j련 o존 배치 작업 수행 시_은
1,& 시_
q 동일한 작업을 =QBSL으로 재작성하여
4시_으로 4&배 x축
• 분류
q 소셜 미디어를 =QBSL :9MiC을 사용해서
실시_으로 우선 순위 지정
q :9 Mife DyDMe 0 extSBDt feBtVSeT BOd tSBiO.
q ?1 0 5,% BDDVSBDy12 ?/ 0 .(% BDDVSBDy
36
출처 0 IttQT0%%DoOfeSeODeT.oSeiMMy.Dom%TtSBtB%TtSBtB-Oy-(&1,%QVCMiD%TDIedVMe%detBiM%51&1)
37
출처 0 IttQT0%%DoOfeSeODeT.oSeiMMy.Dom%TtSBtB%TtSBtB-Oy-(&1,%QVCMiD%TDIedVMe%detBiM%51&1)
38
출처 0 IttQT0%%DoOfeSeODeT.oSeiMMy.Dom%TtSBtB%TtSBtB-Oy-(&1,%QVCMiD%TDIedVMe%detBiM%51&1)
39
출처 0 IttQT0%%DoOfeSeODeT.oSeiMMy.Dom%TtSBtB%TtSBtB-Oy-(&1,%QVCMiD%TDIedVMe%detBiM%51&1)
40
출처 0 IttQ0%%XXX.TMideTIBSe.Oet%=QBSL=Vmmit%goiOg-SeBMtime-DSeBtiOg-fSeqVeOtMyVQdBtiOg-dBtBTetT-foS-QeSToOBMizBtioO-TQBSL-TVmmit-eBTt-tBML-Cy-TISiyB-BSoSB
• 회원들이 시청하t 컨텐츠의 .&%가 시스템의 추천
• ML 알g리즘 o반 추천 제h
• /천)백만명 이상의 BDtive memCeST
• 각o w른 카w로m의 1/&개 l가
• 하루 4,5&&억b 이벤트
• ,&&개 이상의 카프카 토픽
• 실시_ z이터 0 가장 최신의 z이터 o반으로 모델 훈련. 새로운
형식의 알g리즘을 만들 o회 확보
41
출처 0 IttQ0%%deveMoQeST.MiOeDoSQ.Dom%CMog%Lo%3Q11()
• Spark, Zeppelin, Hadoop을 활용한 y용량 보안 z이터 분석 (&15)
• 라인 c임의 어뷰징 허가 받지 않은 조작을 통해 이익을 취하t 행위)에 빠르c y응하t 시스템
• 서로 w른 형태의 로m들을 연j해서 분석하여 문제의 원인을 찾g 수정
• 15>5 가량을 1&분 이r에 처리하g di를 확인하t 시스템을 k성하였음
사례 1 – 빌링 데이터 분석을 통한 코인 어뷰징 탐지
사례 2 – LINE Rangers 게임 데이터 분석을 통한 어뷰징 탐지
42
Oracle	and	Analyst	Confidential	–Restricted 43
2010,	7	pages
2012,	14	pages
44
맵리~스로 빅z이터 분석을 예전에
비해 쉽c 수행할 수 있으q 반복
작업을 수행해야 하t 알g리즘
수행에t 적합하지 않음
하둡의 맵리~스 프레임워크t
반복 작업을 수행 할 때 마w(M->R-
>M->R…...)	HDFS에 Wrtie/Read를
반복함.
디스크에
Write/Read하지말g
메모리에 하자!!!
중_에 장애가 q면
어떻c 하지?
메모리를 Read	Only로만 사용하자
(하둡의 HDFS와 유사하c, 하둡은
일x 쓰면 수정 불가, Append	Only)
왜? 방안
Immutable한 메모리 o반의 z이터
k조를 만들g j리하자
Immutable하o 때문에 어떻c 지n
xfp지 만들어졌t지
f보(lineage)를 o록하자
• ‘RDD-탄력적 분산 데이터셋’에서 탄력적이라는 단어는
유실된 파티션이 있을 때 스파크가 RDD의 계보(lineage)를
다시 계산하여 자동을 복구할 수 있다는 의미
만약
방안방안
방안
45
출처:	https://www.usenix.org/sites/default/files/conference/protected-files/nsdi_zaharia.pdf
중_에 장애가 q면
어떻c 하지?
•
46
출처:	https://www.usenix.org/sites/default/files/conference/protected-files/nsdi_zaharia.pdf
계보를 이용하여 유실한 데이터를 재계산
Oracle	and	Analyst	Confidential	–Restricted 47
•
•
•
•
•
출처 0 IttQT0%%dBtBCSiDLT.Dom%CMog%(&15%&,%((%VOdeSTtBOdiOg-yoVS-TQBSL-BQQMiDBtioO-tISoVgI-viTVBMizBtioO.ItmM
•
•
•
•
48
Operations = TRANSFORMATIONS
ACTIONS
+
•
–
–
–
–
–
49
TRANSFORMATIONS
50
51
Oracle	and	Analyst	Confidential	–Restricted 52
• 메모리 o반을 z이터를 h유하여 디스크 8%O를 최소화
Data Sharing in MapReduce Data Sharing in Spark
데이터 중복, 7iTL 8%O 발생으로 반복 수행 기반 분석에 부적합 반복 기반 분석 작업에 적합
53
• A	Visual	Guide	of	the	API
http://training.databricks.com/visualapi.pdf
Essential Core & Intermediate Spark Operations
54
• map
• filter
• flatMap
• mapPartitions
• mapPartitionsWithIndex
• groupBy
• sortBy
= medium
TRANSFORMATIONSACTIONS
General
• sample
• randomSplit
Math / Statistical
= easy
Set Theory / Relational
• union
• intersection
• subtract
• distinct
• cartesian
• zip
• takeOrdered
Data Structure / I/O
• saveAsTextFile
• saveAsSequenceFile
• saveAsObjectFile
• saveAsHadoopDataset
• saveAsHadoopFile
• saveAsNewAPIHadoopDataset
• saveAsNewAPIHadoopFile
• keyBy
• zipWithIndex
• zipWithUniqueID
• zipPartitions
• coalesce
• repartition
• repartitionAndSortWithinPartitions
• pipe
• count
• takeSample
• max
• min
• sum
• histogram
• mean
• variance
• stdev
• sampleVariance
• countApprox
• countApproxDistinct
• reduce
• collect
• aggregate
• fold
• first
• take
• forEach
• top
• treeAggregate
• treeReduce
• forEachPartition
• collectAsMap 출처 0 IttQ0%%tSBiOiOg.dBtBCSiDLT.Dom%viTVBMBQi.Qdf
•
55
lines = spark.textFile(“hdfs://...”)
errors = lines.filter(s => s.startswith(“ERROR”))
messages = errors.map(s => s.split(‘t’)(2))
messages.cache()
Block 1
Block 2
Block 3
Worker
Worker
Worker
Driver
messages.filter(s => s.contains(“foo”)).count()
messages.filter(s => s.contains(“bar”)).count()
. . .
tasks
results
Cache 1
Cache 2
Cache 3
Base RDDTransformed RDD
Action
Result: full-text search of Wikipedia
in 1 sec (vs 40 s for on-disk data)
출처 0 courses.csail.mit.edu/18.337/2015/docs/6338.pptx
•
–
–
–
•
–
–
–
56
57
출처 0 http://vishnuviswanath.com/spark_rdd.html
•
•
•
58
59
60
61
62
63
64
65
66
Worker
Worker
Worker
Worker
Worker
Worker
Driver
Block 1
Block 2
Block 3
HDFS
블록
읽o
HDFS
블록
읽o
HDFS
블록
읽o
Driver
태스크
태스크
태스크
Cache 1
Cache 2
Cache 3
Worker
Worker
Worker
Driver
Block 1
Block 2
Block 3
처리&
캐시
처리&
캐시
처리&
캐시
67
Cache 1
Cache 2
Cache 3
Worker
Worker
Worker
Driver
Block 1
Block 2
Block 3
di
결과
결과
Cache 1
Cache 2
Cache 3
Worker
Worker
Worker
Driver
Block 1
Block 2
Block 3
Cache 1
Cache 2
Cache 3
Worker
Worker
Worker
Driver
Block 1
Block 2
Block 3
태스크
태스크
태스크
68
Cache 1
Cache 2
Cache 3
Worker
Worker
Worker
Driver
Block 1
Block 2
Block 3
di
결과
결과
Cache 1
Cache 2
Cache 3
Worker
Worker
Worker
Driver
Block 1
Block 2
Block 3
캐시에서
처리
캐시에서
처리
캐시에서
처리
69
errorlog.txt 전체 19건을 모두 처리`
캐싱되어 있는 13건에서 처리
Cache(13b)Block(19b)
0.9초 0.014초
messages.filter(_.contains(”mysql")).count() messages.filter(_.contains("php")).count()
70
스파크 코어
스파크=Q9
(정형화 z이터)
스파크
스트리밍 실시_)
:9MiC
(머신러v)
m래프X
Spark	Core (RDD)
Catalyst
SQL
ML
Pipelines
Structured		
Streaming
{	JSON }
JDBC
and
more…
Spark SQL
GraphFrames
DataFrame/Dataset
•
•
•
•
72
출처 : http://spark.apache.org/sql/
•
•
•
•
•
•
•
73
74
출처 0 https://www.slideshare.net/databricks/jump-start-into-apache-spark-and-databricks
75
출처 0 https://www.slideshare.net/databricks/jump-start-into-apache-spark-and-databricks
76
출처 0 IttQT0%%dBtBCSiDLT.Dom%CMog%(&1,%&-%14%B-tBMe-of-tISee-BQBDIe-TQBSL-BQiT-SddT-dBtBfSBmeT-BOd-dBtBTetT.ItmM
77
출처 0 IttQT0%%XXX.TMideTIBSe.Oet%dBtBCSiDLT%TtSVDtVSiOg-TQBSL-dBtBfSBmeT-dBtBTetT-BOd-TtSeBmiOg
•
78
출처 0 IttQT0%%dBtBCSiDLT.Dom%CMog%(&1,%&-%14%B-tBMe-of-tISee-BQBDIe-TQBSL-BQiT-SddT-dBtBfSBmeT-BOd-dBtBTetT.ItmM
•
–
–
–
–
–
79
출처 0 IttQT0%%dBtBCSiDLT.Dom%CMog%(&1,%&-%14%B-tBMe-of-tISee-BQBDIe-TQBSL-BQiT-SddT-dBtBfSBmeT-BOd-dBtBTetT.ItmM 일부 번역
•
–
–
–
–
–
–
80
출처 0 IttQT0%%dBtBCSiDLT.Dom%CMog%(&1,%&-%14%B-tBMe-of-tISee-BQBDIe-TQBSL-BQiT-SddT-dBtBfSBmeT-BOd-dBtBTetT.ItmM 일부 번역
val deviceEventsDS = ds.select($"device_name", $"cca3", $"c02_level").where($"c02_level" > 1300)
val eventsRDD = deviceEventsDS.rdd.take(10)
•
81
출처 0 IttQT0%%dBtBCSiDLT.Dom%CMog%(&1,%&-%14%B-tBMe-of-tISee-BQBDIe-TQBSL-BQiT-SddT-dBtBfSBmeT-BOd-dBtBTetT.ItmM
•
83
84
85
•
•
•
•
•
•
86
•
–
–
–
87
•
–
–
–
88
89
90
91
•
–
92
하드웨어
응용프로m램
사용자
•
–
93
•
•
/x
.x
•
94
Brad	Carlile
Senior	Director	of	Strategic	
Applications	Engineering	at	
Oracle
출처 : https://www.youtube.com/watch?v=kmrWkU0PCCs
H/W를 통한
성능 개선(16배)
•
–
95
출처:	https://spark-summit.org/east-2017/events/what-to-expect-for-big-data-and-apache-spark-in-2017/
96
출처:	https://spark-summit.org/east-2017/events/what-to-expect-for-big-data-and-apache-spark-in-2017/
•
– 오프라인 형태의 분석 플랫폼에서 스트리밍 처리,
z이터 제h 형태로 이동하g 있음
– 목표t Single API for “continuous apps”
– 해결 방안 : structured streaming
97
98
99
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Spark-SQL	Catalyst	Query	Optimizer & SQL	execution	core
103
•
•
•
•
•
•
•
•
•
104
105
Project
name
Project
id,name
Filter
id = 1
People
Original
Plan
Project
name
Project
id,name
Filter
id = 1
People
Filter
Push-Down
Project
name
Filter
id = 1
People
Combine
Projection
IndexLookup
id = 1
return: name
Physical
Plan
106
107
108
•
109
•
110
•
111
…
…
•
112
•
113
•
114
•
115
•
117
•
118
119
120
121
•
122
123
•
124
https://issues.apache.org/jira/browse/SPARK-15689
126
http://www.slideshare.net/databricks/a-deep-dive-into-structured-streaming
127
128
129
130
•
•
•
•
131
132
133
134
•
135
137
138
139
140
•
•
•
•
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156

Spark Day 2017@Seoul(Spark Bootcamp)