O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Spark Day 2017@Seoul(Spark Bootcamp)

3.181 visualizações

Publicada em

Spark Bootcamp
스파크 초보자용 교육자료

Publicada em: Tecnologia
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Download this 3-step guide to generating insane amounts of media coverage for your from LinkedIn: http://bit.ly/linkedin3stepguide
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

Spark Day 2017@Seoul(Spark Bootcamp)

  1. 1. 1
  2. 2. • • • • • • • • • • • • • • •
  3. 3. 3 • • • • •
  4. 4. • • • • • 4
  5. 5. • • 5
  6. 6. • • • 6
  7. 7. 7 • • •
  8. 8. 8
  9. 9. Oracle and Analyst Confidential –Restricted 9 • • • • •
  10. 10. 10
  11. 11. 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. 12. 12 Hadoop Spark
  13. 13. 13 출처 0 https://en.wikipedia.org/wiki/Apache_Spark#History 1s에 약 3회 버전 release
  14. 14. • 14
  15. 15. Oracle and Analyst Confidential –Restricted 15 • – –
  16. 16. Oracle and Analyst Confidential –Restricted 16 • 스파크 코어
  17. 17. • 17
  18. 18. 18
  19. 19. • • – – – • 20
  20. 20. Oracle and Analyst Confidential –Restricted 21
  21. 21. • • • 출처: http://spark.apache.org/docs/latest/cluster-overview.html
  22. 22. 1 2 2 3 3 출처: http://spark.apache.org/docs/latest/cluster-overview.html
  23. 23. 24
  24. 24. 25
  25. 25. • 26
  26. 26. 27 출처 0 IttQ0%%DdO(.IVCTQot.Oet%IVCfT%4).&./%7BtB5SiDLTA=VSveyTA-A6oOteOt%(&1,A=QBSLA=VSvey%(&1,A=QBSLA8OfogSBQIiD.Qdf
  27. 27. 28 출처 0 IttQ0%%DdO(.IVCTQot.Oet%IVCfT%4).&./%7BtB5SiDLTA=VSveyTA-A6oOteOt%(&1,A=QBSLA=VSvey%(&1,A=QBSLA8OfogSBQIiD.Qdf
  28. 28. 29 출처 0 IttQ0%%DdO(.IVCTQot.Oet%IVCfT%4).&./%7BtB5SiDLTA=VSveyTA-A6oOteOt%(&1,A=QBSLA=VSvey%(&1,A=QBSLA8OfogSBQIiD.Qdf
  29. 29. 30 출처 0 IttQ0%%DdO(.IVCTQot.Oet%IVCfT%4).&./%7BtB5SiDLTA=VSveyTA-A6oOteOt%(&1,A=QBSLA=VSvey%(&1,A=QBSLA8OfogSBQIiD.Qdf
  30. 30. 31 출처 0 IttQ0%%DdO(.IVCTQot.Oet%IVCfT%4).&./%7BtB5SiDLTA=VSveyTA-A6oOteOt%(&1,A=QBSLA=VSvey%(&1,A=QBSLA8OfogSBQIiD.Qdf
  31. 31. 32 출처 0 IttQ0%%DdO(.IVCTQot.Oet%IVCfT%4).&./%7BtB5SiDLTA=VSveyTA-A6oOteOt%(&1,A=QBSLA=VSvey%(&1,A=QBSLA8OfogSBQIiD.Qdf
  32. 32. 33 출처 0 IttQ0%%DdO(.IVCTQot.Oet%IVCfT%4).&./%7BtB5SiDLTA=VSveyTA-A6oOteOt%(&1,A=QBSLA=VSvey%(&1,A=QBSLA8OfogSBQIiD.Qdf
  33. 33. 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
  34. 34. 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
  35. 35. 36 출처 0 IttQT0%%DoOfeSeODeT.oSeiMMy.Dom%TtSBtB%TtSBtB-Oy-(&1,%QVCMiD%TDIedVMe%detBiM%51&1)
  36. 36. 37 출처 0 IttQT0%%DoOfeSeODeT.oSeiMMy.Dom%TtSBtB%TtSBtB-Oy-(&1,%QVCMiD%TDIedVMe%detBiM%51&1)
  37. 37. 38 출처 0 IttQT0%%DoOfeSeODeT.oSeiMMy.Dom%TtSBtB%TtSBtB-Oy-(&1,%QVCMiD%TDIedVMe%detBiM%51&1)
  38. 38. 39 출처 0 IttQT0%%DoOfeSeODeT.oSeiMMy.Dom%TtSBtB%TtSBtB-Oy-(&1,%QVCMiD%TDIedVMe%detBiM%51&1)
  39. 39. 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회 확보
  40. 40. 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 게임 데이터 분석을 통한 어뷰징 탐지
  41. 41. 42
  42. 42. Oracle and Analyst Confidential –Restricted 43 2010, 7 pages 2012, 14 pages
  43. 43. 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)를 다시 계산하여 자동을 복구할 수 있다는 의미 만약 방안방안 방안
  44. 44. 45 출처: https://www.usenix.org/sites/default/files/conference/protected-files/nsdi_zaharia.pdf 중_에 장애가 q면 어떻c 하지?
  45. 45. • 46 출처: https://www.usenix.org/sites/default/files/conference/protected-files/nsdi_zaharia.pdf 계보를 이용하여 유실한 데이터를 재계산
  46. 46. Oracle and Analyst Confidential –Restricted 47 • • • • • 출처 0 IttQT0%%dBtBCSiDLT.Dom%CMog%(&15%&,%((%VOdeSTtBOdiOg-yoVS-TQBSL-BQQMiDBtioO-tISoVgI-viTVBMizBtioO.ItmM
  47. 47. • • • • 48 Operations = TRANSFORMATIONS ACTIONS +
  48. 48. • – – – – – 49 TRANSFORMATIONS
  49. 49. 50
  50. 50. 51
  51. 51. Oracle and Analyst Confidential –Restricted 52 • 메모리 o반을 z이터를 h유하여 디스크 8%O를 최소화 Data Sharing in MapReduce Data Sharing in Spark 데이터 중복, 7iTL 8%O 발생으로 반복 수행 기반 분석에 부적합 반복 기반 분석 작업에 적합
  52. 52. 53 • A Visual Guide of the API http://training.databricks.com/visualapi.pdf
  53. 53. 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
  54. 54. • 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
  55. 55. • – – – • – – – 56
  56. 56. 57 출처 0 http://vishnuviswanath.com/spark_rdd.html
  57. 57. • • • 58
  58. 58. 59
  59. 59. 60
  60. 60. 61
  61. 61. 62
  62. 62. 63
  63. 63. 64
  64. 64. 65
  65. 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 처리& 캐시 처리& 캐시 처리& 캐시
  66. 66. 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 태스크 태스크 태스크
  67. 67. 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 캐시에서 처리 캐시에서 처리 캐시에서 처리
  68. 68. 69 errorlog.txt 전체 19건을 모두 처리` 캐싱되어 있는 13건에서 처리 Cache(13b)Block(19b) 0.9초 0.014초 messages.filter(_.contains(”mysql")).count() messages.filter(_.contains("php")).count()
  69. 69. 70
  70. 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
  71. 71. • • • • 72 출처 : http://spark.apache.org/sql/
  72. 72. • • • • • • • 73
  73. 73. 74 출처 0 https://www.slideshare.net/databricks/jump-start-into-apache-spark-and-databricks
  74. 74. 75 출처 0 https://www.slideshare.net/databricks/jump-start-into-apache-spark-and-databricks
  75. 75. 76 출처 0 IttQT0%%dBtBCSiDLT.Dom%CMog%(&1,%&-%14%B-tBMe-of-tISee-BQBDIe-TQBSL-BQiT-SddT-dBtBfSBmeT-BOd-dBtBTetT.ItmM
  76. 76. 77 출처 0 IttQT0%%XXX.TMideTIBSe.Oet%dBtBCSiDLT%TtSVDtVSiOg-TQBSL-dBtBfSBmeT-dBtBTetT-BOd-TtSeBmiOg
  77. 77. • 78 출처 0 IttQT0%%dBtBCSiDLT.Dom%CMog%(&1,%&-%14%B-tBMe-of-tISee-BQBDIe-TQBSL-BQiT-SddT-dBtBfSBmeT-BOd-dBtBTetT.ItmM
  78. 78. • – – – – – 79 출처 0 IttQT0%%dBtBCSiDLT.Dom%CMog%(&1,%&-%14%B-tBMe-of-tISee-BQBDIe-TQBSL-BQiT-SddT-dBtBfSBmeT-BOd-dBtBTetT.ItmM 일부 번역
  79. 79. • – – – – – – 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)
  80. 80. • 81 출처 0 IttQT0%%dBtBCSiDLT.Dom%CMog%(&1,%&-%14%B-tBMe-of-tISee-BQBDIe-TQBSL-BQiT-SddT-dBtBfSBmeT-BOd-dBtBTetT.ItmM
  81. 81.
  82. 82. 83
  83. 83. 84
  84. 84. 85 • • • • • •
  85. 85. 86
  86. 86. • – – – 87
  87. 87. • – – – 88
  88. 88. 89
  89. 89. 90
  90. 90. 91
  91. 91. • – 92 하드웨어 응용프로m램 사용자
  92. 92. • – 93 • • /x .x
  93. 93. • 94 Brad Carlile Senior Director of Strategic Applications Engineering at Oracle 출처 : https://www.youtube.com/watch?v=kmrWkU0PCCs H/W를 통한 성능 개선(16배)
  94. 94. • – 95 출처: https://spark-summit.org/east-2017/events/what-to-expect-for-big-data-and-apache-spark-in-2017/
  95. 95. 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
  96. 96. 97
  97. 97. 98
  98. 98. 99
  99. 99. • • • • • • • • • • • • • •
  100. 100. • • •
  101. 101. Spark-SQL Catalyst Query Optimizer & SQL execution core
  102. 102. 103
  103. 103. • • • • • • • • • 104
  104. 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
  105. 105. 106
  106. 106. 107
  107. 107. 108
  108. 108. • 109
  109. 109. • 110
  110. 110. • 111 … …
  111. 111. • 112
  112. 112. • 113
  113. 113. • 114
  114. 114. • 115
  115. 115. • 117
  116. 116. • 118
  117. 117. 119
  118. 118. 120
  119. 119. 121
  120. 120. • 122
  121. 121. 123
  122. 122. • 124 https://issues.apache.org/jira/browse/SPARK-15689
  123. 123. 126 http://www.slideshare.net/databricks/a-deep-dive-into-structured-streaming
  124. 124. 127
  125. 125. 128
  126. 126. 129
  127. 127. 130 • • • •
  128. 128. 131
  129. 129. 132
  130. 130. 133
  131. 131. 134
  132. 132. • 135
  133. 133. 137
  134. 134. 138
  135. 135. 139
  136. 136. 140 • • • •
  137. 137. 141
  138. 138. 142
  139. 139. 143
  140. 140. 144
  141. 141. 145
  142. 142. 146
  143. 143. 147
  144. 144. 148
  145. 145. 149
  146. 146. 150
  147. 147. 151
  148. 148. 152
  149. 149. 153
  150. 150. 154
  151. 151. 155
  152. 152. 156

×