반응형

빅데이터/Spark 17

[Spark] Optimizing Transformations and Actions

Optimizing Transformations and Actions 아래 내용을 중심으로 학습을 진행했습니다.Use advanced RDD operationsIdentify what operations cause shufflingUnderstand how to avoid shuffling when possibleGroup, combine, reduce key-value pairs Advanced RDD Operations advanced RDD의 연산에 대해서 알아보도록 하겠습니다. Numeric RDDs는 statistical 연산을 할 수 있습니다. 해당 연산을 통해 standard deviation, sum, mean, max, min, 등의 통계적이 연산이 가능합니다.mapPartitions -..

빅데이터/Spark 2016.07.15

[Spark] RDD Architecture

RDD Architecture 아래 내용을 기준으로 학습했습니다. 어떻게 RDDs를 생성하는지에 대해서 이해RDD의 performance를 증가시키기 위해 partitions을 관리RDD resilient를 만들게 하는게 무엇인지RDDs가 jobs, stages에서 broken이 되었을때 어떻게 처리하는지Serialize tasks RDD Review RDD에 대해서는 이전에도 언급한바가 있기 때문에 간단하게 언급하면, Spark = RDD라고 생각하면 된다. 그 만큼 RDD는 Spark를 이해하는데 있어 가장 중요한 요소라고 할 수 있습니다. RDD는 여러개의 파티션들로 구성이 되어있고, 파티션의 개수는 Spark에서 클러스터의 CPU의 코어의 개수를 기반으로 결정이 됩니다. 여기서 언급하는 파티션은 ..

빅데이터/Spark 2016.07.15

Spark RDD - Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing

Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing (2012)에 나온 논문을 읽어보았다. 데이터 중간 결과를 재사용하는 iterative한 연산이 필요한 알고리즘들 machine learning and graph algorithms, PageRank, K-means clustering, logstic regression, data mining이 있다. 위 알고리즘을 MapReduce에서 처리를 하게 되면 Map과 Reduce의 사이에서 data replication, disk I/O, serialization의 overhead가 발생한다. 즉, MapReduce가 iteration에서 수행..

빅데이터/Spark 2016.07.01

Spark Shell을 이용한 간단한 예제 및 앱 배포 방법

Interactive Analysis with the Spark Shell API를 쉽게 습득하기 위해서는 spark's shell만큼 좋은게 없습니다. python과 scala를 통해서 할 수 있습니다. 이번에는 RDD를 생성하는 방법, MapReduce를 Spark에서 구현하는 방법과, caching하는 방법에 대해서 설명하려고 합니다. 마지막에는 내가 구현한 앱을 사용자들에게 배포하기 위해 sbt build tool을 이용해 배포하는 방법에 대해서 설명합니다. Resilient Distributed Dataset(RDD) 생성하기 위해서는 hadoop hdfs file을 읽거나, 기존에 있는 rdds를 transforming을 통해서 변환이 가능합니다. RDD에서 제공하는 method는 action..

빅데이터/Spark 2016.06.16

Spark - RDD

RDD란? 분산되어 존재하는 데이터 요소들의 모임이라고 생각하시면 됩니다. RDD는 java의 String처럼 변경이 불가능한 객체(immutable)의 집합으로 각각의 RDD는 여러개의 파티션으로 분리가 됩니다. 변경을 하기 위해서는 새로운 RDD를 만들거나, 존재하는 RDD를 변형, 결과 계산을 위해 RDD에서 연산을 호출하여 생성을 해야 합니다. Spark는 자동으로 RDD에 있는 데이터들을 클러스터에 분배, 수행하는 연산들을 병렬화 합니다. Spark는 RDD를 lazy evaluation으로 액션을 사용하는 시점에서 처리하기 때문에, 구현할때는 transformation과 action의 operation을 확실히 이해하고 있어야 결과를 받아보는데 효율적으로 구현이 가능합니다. 예를 들어 한 라인..

빅데이터/Spark 2016.06.16

Spark 클러스터 구조

들어가며 Spark를 튜닝하기 위해서는 클러스터의 구조가 어떻게 구성이 되어 있는지, 프로그램은 어떤 순서로 실행이 되는지에 대한 지식은 보유를 하고 계셔야 시스템을 설정 및 튜닝이 가능합니다. 예를 들어 설정하는 옵션에서 executor-memory의 값을 설정해야 하는데, executor가 어떤 역할을 하는지 모른다면... 아니되오 . Spark의 components를 Driver Program, SparkContext, Cluster Manager, Worker Node, Executor, Task, Cache가 있고, 각각의 역할과 어떻게 동작하는지에 대해서 알아보겠습니다. ComponentsDriver Program main()함수를 갖고 있는 프로세스를 말합니다. 우리가 spark-submit..

빅데이터/Spark 2016.06.13

Spark란? 설치 및 예제

Spark란? Apache Spark는 빠르고 general-purpose cluster computing system입니다. 다시 말해서 기존에는 batch processing을 하기 위해서 MapReduce를 사용하고, sql을 사용하기 위해서는 hive를 사용하는 등 다양한 플랫폼을 도입해야 했었습니다. 하지만 이제는 Spark 하나의 시스템만을 설치해도 batch, streaming, graph processing, sql 등의 처리가 가능합니다. 또한 Spark는 Java, Scala, Python, 그리고 R언어의 API를 제공하기 때문에 쉽게(?) 구현을 할 수 있습니다. 아래의 high-level tools를 제공함으로써, 위에서 언급한 범용적인 플랫폼이라고 말할 수 있습니다. High-L..

빅데이터/Spark 2016.06.13
반응형