본문 바로가기

전체 글346

Spark : Dependency Dependency Narrow-Dependencies 좁은 곳에서 파생됬다는 의미로, 하나의 파티션이 하나의 파티션에서만 사용한다. narrow dependency는 손실된 상위 파티션만 recompute하고, 서로 다른 노드 에서 병렬로 recompute 할 수 있다. Wide-Dependencies 넒은 범위에서 파생됬다는 의미로, 하나의 파티션이 여러 파티션에서 쓰인다. wide dependency를 가진 lineage 그래프에서 단일 node가 손상되면 RDD의 모든 부모 노드로부터 일부 파티션이 손실 될 수 있어 복구하는데 많은 excution이 발생한다. -> 이러한 이유는 부모 노드로부터 연산된 중간 결과값을 받아서 wide dependencies한 연산을 진행하다가 fail이 나면, na.. 2019. 12. 19.
Spark : Job Scheduler Job Scheduler 사용자가 RDD에 대해 action을 실행할 때마다, 스케쥴러는 RDD의 lineage 그래프 -> stage의 DAG(Direct Acyclic Graph, DAG의 위상정렬을 사용하면, 스프레드시트가 변경될 때, 모든 값을 업데이트 가능하다)를 작성한다. (경로 최적화) 각 stage에는 data locality를 맞추기 위해, 가능한 한 narrow dependency(비슷한 data끼리 해야 narrrow가 가능)를 갖는 파이프라인 구조의 Transformation이 많이 포함된다. stage의 경계는 wide dependency를 기준으로 나눈다. stage는 wide dependency를 위해 필요한 shuffle operation / 부모 파티션의 연산을 최소한의 경.. 2019. 12. 19.
Spark : Caching & Serialized Caching & Serialized StorageLevel에서, useOffHeap 에 해당하는 부분은 JVM garbageCollector에게 안걸리고, 다른 메모리 공간에 cache 하는 방법을 말한다. iteration 할 알고리즘을 미리 caching 해두면, 작업이 빠르다. Serialized 한 caching을 하게 되면, RDD size가 클수록 raw caching 보다 공간은 엄청나게 집약적이지만, processing Time이 오래걸린다. Raw Caching Serialized Caching pretty fast to process slower processing than raw caching can take up 2x - 4x more space overhead is minimal.. 2019. 12. 19.
Spark : Pair RDD Pair RDD 정의 key/value pair를 포함하는 RDD를 Pair RDD라 한다. 장점 key를 parallel 하게 배치하여 연산이 가능하고, network를 통해 data를 regroup 할 수 있다. 결국 key를 통해 재배치 할 수 있다는 말이다. ex ) reduceByKey(), join() reduceByKey는 key에 따라 value 값을 재설정, 집약할 수 있다. join도 key를 보고 table을 정리할 수 있다. 많은 format들은 key/value data를 가진 pair RDD로 바로 return한다. memory에서 pair RDD를 만들기위해서는 SparkContext.parallelize를 해야한다. (sc = SparkContext(), sc.parallel.. 2019. 12. 19.
Spark : Function 예시 Spark Functions takeOrdered(num, key=None) list를 입력한 후, RDD에 넣고, RDD를 takeOrdered(num) 하게되면, num길이만큼 ascending 해서 list로 출력 key=lambda x : -x 하면 descending으로 되서 list로 출력된다. RDD에는 하나의 list 형태로 들어가야 slicing이 된다. take(num) take는 ordered 되지 않고 num길이만큼 RDD의 요소를 list 형태로 보여준다. reduceByKey(f, numPartitions=None, partitionFunc=) key 가 같은 value 끼리 모아서 function 작업을 해준다. combiner 같은 역할을 미리 해줄 수 있다. Default .. 2019. 12. 19.
Spark : File format, Compression, File System, Accumulator File input & output MapReduce와 동일한 InputFormat, OutputFormat을 사용할 수 있다. (HDFS, Hbase, S3, Cassandra...) File Formats Format Name Structured Comments Text Files No 한 줄로 record 된다. JSON semi one record per line CSV Yes spreadsheet SequenceFiles Yes hadoop file format, key/value data Protocol buffers Yes fast, space-efficient multilanguage Object Files Yes Spark Job에 의해 shared code text file Text f.. 2019. 12. 19.
Python : Basic : yield def one_to_three(): ... """1, 2, 3을 반환하는 생성기를 반환한다.""" ... print('생성기가 1을 내어 놓습니다.') ... yield 1 ... print('생성기가 2를 내어 놓습니다.') ... yield 2 ... print('생성기가 3을 내어 놓습니다.') ... yield 3 ... >>> one_to_three_generator = one_to_three() >>> next(one_to_three_generator) 생성기가 1을 내어 놓습니다. 1 >>> next(one_to_three_generator) 생성기가 2를 내어 놓습니다. 2 >>> next(one_to_three_generator) 생성기가 3을 내어 놓습니다. 3 yield 문이 포함된 .. 2019. 12. 19.
Spark : Partitioning 용어정리 •1) Partition : 데이터를 나누는 단위 •2) Dependency : RDD의 파티션이 어디에서 파생되었는 지를 기술하는 모델 •3) Function : 부모 RDD에서 어떻게 파생되었는지를 계산 하는 함수 •4) Metadata : 데이터 위치, 파티션 정보 보유 Partitioning Background 분산컴퓨팅에서는 communication은 매우 expensive하다고 볼 수 있다. 따라서 network traffic을 낮추는 것이 성능 개선하는 방법이다. Purpose Spark는 RDD의 partitioning을 통해서 communication을 최대한 줄이려고 한다. partitioning은 join 같은 key 지향적인 연산들에서는 dataset을 재사용하는데, 이 때.. 2019. 12. 18.
Spark : Introduction Spark Spark Spark 란 빅데이터 처리를 위한 클러스터용 병렬 분산처리 플랫폼이다. Why we use Spark? MapReduce와 Dryad 등은 대규모 데이터 분석을 용이하게 만들었지만 반복 알고리즘이나, 대화형 마이닝 툴과 같은 어플 리케이션의 경우에는 상당히 비효율적이었다. 왜냐하면 MapReduce와 같은 경우에는 Fault-Tolerance를 위해 중간 데이터를 storage에 쓰게 되는데, 반복 알고리즘의 경우 이 중간 값을 다시 input으로 반복해서 사용하기 때문에 Disk I/O와 직렬 화 등으로 인한 overhead가 비교적으로 크게 발생하기 때문이다. Hadoop을 기반으로 한 MapReduce의 단점이다. disk로 많은 I/O가 발생하기 때문에, 그만큼 trade-off가 발.. 2019. 12. 18.
Network : Transport Layer, UDP, TCP 우리가 지난 posting에서는 Data link layer는 hop to hop, node to node , Network layer는 host to host 라고 얘기했다. 1. Transport Layer 1.1 Client/Server Paradigm process to process 통신이 client server 패러다임을 만들었다. 여기서 client는 localhost에서 실행되는 process를 말하며, server는 remote host에서 서비스를 제공하기 위해 실행되는 process 다. 1.2 전달 방법, Transport Layer는 Data link layer는 hop to hop, node to node , Network layer는 host to host로 보냈다면, pro.. 2019. 12. 17.
Network : Network Layer : Internet Protocol Why we need Network Layer?? Internetworking 우리들이 이용하고 있는 internet 들은 LAN(Local Area Network), WAN(Wide Area Network) 로 구성되어 있고, 그 사이는 router 들이 연결해주고 있다. 따라서 움직임은 node to node, hop to hop 으로 연결되어있고, 이 때 MAC 주소를 써서 신호를 주고 받는다. 이렇게 우리는 data를 signal로 변환해서 보내는 physicl layer와 data link layer가 물리적으로 연결을 담당하고 있다. Internetworking's Problem 위에서 R1을 담당하는 router들은 interface를 내보내는 어떻게 결정할까?? 이 때 필요한 주소가 바로 .. 2019. 12. 17.
Network : Application Layer 1. WWW (World Wide Web) WWW 이란, client가 browser를 써서 server에 서비스를 접속하는 Client/Server 개념 서비스를 도입한것을 의미한다. WWW Architecture Web Page 웹페이지란, 같은 사이트나 다른 여러 사이트들에 page가 연결되어있는 것을 말한다. 웹페이지들은 브라우저를 이용해서 페이지를 볼 수 있다. 1.1 Client Browser 브라우저는 Web 문서들을 해석하고 보여준다. Browser 구성 1. 컨트롤러는 키보드, 마우스로 컨트롤한다. 2. 클라이언트는 http, https 라는 protocol을 따른다. 3. 인터프리터는 HTML, JAVA, Javascript에 의해 돌아간다. 1.2 Server server의 역할, 기.. 2019. 12. 16.