반응형

빅데이터 34

[Spark] 파티셔닝 예제 - 페이지랭크(PageRank) 알고리즘

파티셔닝 예제 - 페이지랭크(PageRank) 알고리즘 RDD 파티셔닝에 의한 효과를 볼 수 있는 좀 더 복잡한 알고리즘 예제로 페이지 랭크를 생각 할 수 있다. 페이지 랭크 알고리즘은 구글의 공동 창업자 Larry Page의 이름을 인용한 것으로 얼마나 많은 문서들이 해당 문서를 링크하고 있는지 기초하여 각 문서에 대해서 중요도를 매기는 알고리즘을 말한다. 페이지 랭크 알고리즘은 웹페이지의 중요도를 측정하는 척도로도 사용이 되지만, 과학 논문에서 어떤 논문이 중요한지 평가하거나, SNS의 영향력에 있는 허브유저를 찾아내는 데에도 사용이 되고 있다. 페이지 랭크의 단점은 많은 조인을 수행하는 반복알고리즘이다. 그렇기 때문에 많은 조인을 반복적을 효율적으로 처리가 가능한 RDD 파티셔닝을 이용하면 좋은 결..

빅데이터/Spark 2016.07.26

[Spark] RDD데이터 파티셔닝 - 이론 및 예제

RDD데이터 파티셔닝 - 이론 및 예제 이번에 설명한 내용은 스파크에서 노드 간 데이터세트의 파티셔닝을 어떻게 제어할 것인가 하는 것이다. 분산 프로그램에서 통신은 비용이 매우 크므로 네트워크 부하를 최소화할 수 있는 데이터 배치는 프로그램 성능을 비약적으로 향상시킬 수 있습니다. 비분산프로그램이 수많은 데이터 레코드 처리를 위해 올바른 자료 구조를 선택할 피ㄹ요가 있는 것처럼, 스파크의 애플리케이션도 네트워크 비용을 줄이기 위해서는 RDD의 파티셔닝을 제어해야 합니다. 파티셔닝은 조인 같이 키 중심의 연산에서 데이터세트가 여러번 재활용 될 때만 의미가 있습니다. 스파크의 파티셔닝은 모든 RDD의 키/값 쌍에 대해 가능하며, 시스템이 각 키에 제공된 함수에 따라 값들을 그룹화하도록 합니다. 스파크에서는 ..

빅데이터/Spark 2016.07.25

[Spark] RDD 영속화(캐싱) - 이론 및 예제

RDD 영속화(캐싱) - 이론 및 예제 동일한 RDD를 여러 번 사용하고 싶을 때도 있을 것이다. 생각없이 이를 시도한다면 스파크는 RDD와 RDD에서 호출하는 액션들에 대한 모든 의존성을 재연산하게 된다. 이는 데이터를 여러 번 스캔하는 반복 알고리즘들에 대해서는 매우 무거운 작업일 수 있다. RDD를 여러 번 반복 연산하는 것을 피하려면 스파크에 데이터 영속화(persist/persistence)를 요청을 할 수 있다. RDD 영속화에 대한 요청을 하면 RDD를 계산한 노드들은 그 파트션들을 저장하고 있게 된다. 영속화된 데이터를 갖고 있는 노드에 장애가 생기면 스파크는 필요 시 유실되ㄴ 데이터 파티션을 재연산한다. 만약 지연 없이 노드 장애에 대응하고 싶다면 데이터를 복제하는 정책을 선택할 수도 있..

빅데이터/Spark 2016.07.25

[Hadoop] Hadoop Cluster? - HDFS, MapReduce, Yarn

Hadoop Cluster? 노드(node)는 하나의 컴퓨터를 말합니다. 이처럼 30~40개의 노드가 모여 하나의 rack을 구성합니다. rack은 물리적으로 같은 network의 switch에 모두 연결이 되어 있습니다. 그렇기 때문에 두 노드의 badnwidth는 다른 rack에 있는 노드보다 크게 됩니다. 즉, 데이터의 이동을 할 수 있는 폭이 크기 때문에 데이터의 속도가 빠른것을 알 수 있습니다. rack이 모여서 하나의 Hadoop Cluster를 구축하게 됩니다. 이처럼 network의 다른 switch에 연결되어 있는 rack으로 인해 어떤 성능 저하가 나타는지 추후에 알아보도록 하겠습니다.Hadoop의 주요한 컴포넌트는 HDFS와 MapReduce가 있습니다. HDFS(Hadoop Dist..

빅데이터/Hadoop 2016.07.20

[Hadoop] 빅데이터를 처리하기 위한 하둡

들어가며 우리에게 주어진 데이터가 1GB라고 생각해보자, 1GB의 크기를 갖는 데이터를 관계형 데이터베이스에 저장을 하고, 데이터를 처리하는데는 큰 어려움이 없을 것입니다. 하지만 데이터의 크기가 10GB, 100GB로 증가한다고 생각하면, 우리가 갖고 있는 컴퓨터의 성능을 업데이트를 해야 합니다. 하지만 만약 1TB, 10TB, 100TB로 데이터의 크기가 커진다면 어떻게 해야할까요? 그렇게 된다면 우리는 여러 컴퓨터를 이용해 분산으로 처리하는 방법을 사용해야 합니다. 하루에 처리할 내용을 몇시간에 처리하는게 일하는데 더 효율적이니 분산으로 처리하는게 좋을것 같습니다. 그렇다면 데이터가 어떻게 갑자기 늘어났을까요? 최근 스마트폰이 등장하면서 Facebook, Twitter, RFID readers, s..

빅데이터/Hadoop 2016.07.20

[Spark] Caching and Serialization

Caching and Serialization 아래 내용을 기준으로 학습을 진행했습니다.어떻게 언제 RDD를 cache를 해야 하는지?Storage level과 사용은 어떻게 하는지?memory 사용을 최적화 하기 위해서 어떻게 하는지? RDDs를 공유하려면 어떻게 해야 하는지? Persistence 스파크는 MapReduce와 가장 다른점이 disk I/O가 최소화 되기 때문에 interative한 연산에 적합하다고 말을 합니다. 그러나 추가적으로 성능향상을 얻기 위해서는 RDD를 다루는 방법에 대해서 정확하게 이해를 해야합니다. Spark에서는 memory chaching을 사용하는 것으 알고 있습니다. 예를 들어서 RDD데이터를 생성하고 계속 반복적으로 사용을 한다면, 사용한다는 말은 action의..

빅데이터/Spark 2016.07.15

[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

클러스터 매니저(Cluster Manager) Yarn의 아키텍쳐 및 역할

Yarn? Hadoop 1.0에서는 JobTracker가 클러스터의 자원 배분과 Job관리를 함께 수행했기 때문에 JobTracker에서 병목현상이 일어났다. JobTracker가 하던 두 가지 역할-자원관리를 Resource Manager와 Application Master로 분리해서 JobTracker에 몰리던 병목을 제거했습니다. Resource Management, Scheduling/Monitoring을 구분하는 daemon의 기능을 분할하였습니다. global하게 ResourceManager, per-application ApplicationManager를 두자라는 아이디어에서 부터 시작했습니다. 범용 컴퓨팅 클러스터가 가능 (MapReduce)외에도 다양한 어플리케이션을 실행할 수 있으며, ..

빅데이터/Hadoop 2016.06.16
반응형