DASK Scheduler설명. Client
·
DATA Engineering/Dask
DASK SCHEDULER https://docs.dask.org/en/stable/scheduling.html Scheduler는 2가지로 구분된다 Single Machine용 스케쥴러 Basic futures on local thread or process default로 설정되어있음 Distributed용 스케쥴러 more futures on local or distributed cluster DASK의 Distributed Scheduler https://distributed.dask.org/en/stable/ Dask.Distributed 는 스케쥴러를 관리하는 일종의 모듈인데 다음과 같은 특징을 가진다 적은 지연성 : 오버헤드가 적다 데이터 공유 : dask-worker들이 데이터를 공유하고 ..
DASK DELAYED. Compute. Futures
·
DATA Engineering/Dask
DASK DELAYED dask.delayed 인터페이스로 테스크를 병렬화시켜서 할당하는게 가능함 말 그대로 Task를 DELAYED(지연) 시키는 기능이 가능하다 이 기능을 써서 내가 원하는 시점에 특정 TASK를 사용할수 있게 한다 e.g. def inc(x): return x + 1 def double(x): return x * 2 def add(x, y): return x + y data = [1, 2, 3, 4, 5] #Sequential output = [] for x in data: a = inc(x) b = double(x) c = add(a, b) output.append(c) total = sum(output) #Parallel import dask output = [] for x in..
DASK DataFrame 과 꿀팁. Shuffling전략
·
DATA Engineering/Dask
DASK 란 무엇인가 두가지 목적에 의해 만들어졌다 연산작업 최적화를 위한 동적 작업 스케쥴링기능 분산환경으로 올려서 처리하는 병렬화 기능 DASK 의 구성 Collections → Task Graph → Schedulers 의 세 부분으로 구성되어있다 DASK DataFrame 특징 Dask dataframe은 pandas dataframes을 기반으로 구현이 되었음 따라서 Dask dataframe 작업은, Pandas dataframe 작업을 기반으로 작동한다고 생각하면 됨 dask Dataframe은 pandas Dataframe API를 비슷하게 사용할수 있음 현재 사용가능한 환경을 넘어서, 더 많은 리소스를 사용할수 있는 환경에서 연산이 가능하게 됨 Dask Dataframe는 row-wise..
MapReduce 튜닝하기
·
DATA Engineering/Hadoop
기존 MapReduce 아키텍쳐 : INPUT → Mapper → Shuffle&Sort → Reducers → OUTPUT Yarn (MapReduce2)을 사용 튜닝 MapReduce INPUT → Mapper → Combiner → Partitioner → Shuffle&Sort → Reducer → OUTPUT Shuffle & Sort 에서 트래픽이 너무 많이 발생하는데, 이 부분을 줄이는것을 목표로 튜닝을 진행하려고 함 Mapper, Partitioner에서 나오는 Key를 줄여서, 네트워크 간 트래픽을 최소화 시켜야 한다 튜닝 방법 메모리 튜닝-Xms1024M -Xmx2048M : Java 힙 메모리 조절하기. Xms는 최소, Xmx는 최대 힙메모리 mapred.child.java.opts ..
WordCount예제로 보는 Map & Reduce
·
DATA Engineering/Hadoop
Word Count 예제 흔히 말하는 MapReduce 는 Map태스크와 Reduce태스크로 구성되고, 이를 설명하기 위해 WordCount예제를 들어보려고한다 위 예제는 전체 Input중에 동일한 단어가 몇번이나 나오는지를 확인하는 예제이다 MapReduce의 태스크는 크게 4가지 부분으로 구성된다 전체는 Spliting, Mapping, Shuffling, Reducing으로 구분되고 그중 Map Task는 Spliting & Mapping Reduce Task는 Shuffling & Reducing 을 지칭한다 JOB 튜닝 블록크기 → namenode heap메모리에 영향받음. 128mb replication 갯수 : (복제갯수)일반적으로 3 CHILD 프로세스 재사용 : Map or Reduce태..
Secondarynamenode(SNN), fsimage, HDFS Balancer
·
DATA Engineering/Hadoop
세컨더리네임노드(SNN) namenode는 파일시스템에 대한 이미지 관리를 fsimage라는 이름으로, Namenode가 떠있는 디스크에 얘를 저장하게 되어있음. fsimage는 일종의 스냅샷형태로 관리함. 이 로그는 edits에 저장됨 namenode가 처음 구동되면 fsimage를 쭉~ 읽고, 메모리에다가 스냅샷을 구성함. 그 다음에 edits로그를 다 읽고 변경된 내용을 메모리에 반영함. Edits로그를 병합해줘야하지 않을까? 파일시스템에서 활동,변경한 내역로그는 모두 edits에 저장되는데 나중을 위해서 edits로그를 병합해줘야한다 어디서 해야할까? namenode에서는 직접병합을 하지않고, SNN에서 병합을 한다음에, 이를 fsimage스냅샷으로 만들고, 원본 fsimage와 바꿔치기한다 SN..
Datanode가 죽었을때, Masternode가 죽었을때
·
DATA Engineering/Hadoop
이름설명 Name node : 하둡 분산파일시스템에 대한 Master 역할 (데이터의 메타데이터 저장) Job Tracker : 어플리케이션 관리에 대한 Master 역할 Datanode : 하둡 분산파일시스템에 대한 Slave역할 (실제 데이터 저장) Task tracker : 어플리케이션 관리에 대한 Slave역할. 일을 실제로 하는 역할 일반적으로 DN + TT를 하나의 묶음으로 띄운다 Replica와 Datanode 하둡에서는 파일을 128mb로 쪼개서 Datanode로 저장한다. 이때, 안정성을 위해서 Replica(복사본) 을 가지는데, 원본과 Replica를 합쳐서 3개를 전체서버에 저장한다. Datanode의 노드상태 Namenode에 알리기 위해 주기적으로 Heartbeat를 보내는 방식..
하둡에서 블록 용량 디폴트가 128MB인 이유
·
DATA Engineering/Hadoop
선요약 Namenode, TaskTracker가 블록을 탐색할때 파일의 정보를 최대한 빨리 찾기 위해서, 메타정보를 줄이기 위한 용도로 사용한다 이름설명 Name node : 하둡 분산파일시스템에 대한 Master 역할 (데이터의 메타데이터 저장) Task tracker(TT) : 어플리케이션 관리에 대한 Slave역할. 일을 실제로 하는 역할 Block 저장 하둡에서 사용하는 HDFS포맷(하둡파일시스템) 의 특징인데 하나의 파일을 여러개의 Block으로 쪼개서 저장한다. 초기엔 64MB를 디폴트로 설정하여 저장했는데, 지금은 128MB를 디폴트로 사용중이다 왜 128MB 인가? 256, 512로도 바꿀수 있긴 하지만, 디폴트는 128mb 128mb면 좀 큰단위긴한데, 위에 나와있는 Namenode, T..
Zero-copy 를 위한 노력. Zerializer: Towards Zero-Copy Serialization
·
DATA Engineering/Kafka
💡 주의! 해당 리뷰는 매우 낮은 수준에서 리뷰합니다. 실제 레퍼런스를 찾아보시기를 권장합니다. Reference RHOTOS 2021 학회에서 진행한 발표. USENIX워크샵 중 하나. 논문 : https://www.cs.yale.edu/homes/soule/pubs/hotos2021.pdf 자료 : https://www.youtube.com/watch?v=6ORl8nnd19A 독스 : https://zerial.readthedocs.io/en/latest/ Zero-copy와 Serializer-Deserializer Zero-Copy는 데이터 송수신하는 상황에서 데이터 복사본을 적게 만들고, 어플리케이션 영역과 커널영역을 적게 드나드는 것 을 목적으로 만들었다 그래서 데이터를 송신할때는 Serial..
스칼라 문법정리1 (Variable Value, Tuple, if-else, List)
·
DATA Engineering/Scala
문법 val [:] = var [:] = Type inference #직접 자료형을 명세해주는경우 val x: Int = 20 val symbol : Char = "@" #자료형을 명세해주지않고, 컴파일러가 직접 타입을 추론하게 하는것 val x = 20 val symbol = "@" Variable vs Value Variable(변수)는 데이터를 재할당 하는것이 가능함 Value(값)은 데이터를 재할당 하는것이 불가능함 Value를 위주로 사용하면서, Variable을 최대한 적게 사용하는것이 스칼라의 프로그래밍 전략 연산자 == : 같은값을 참조하는것이 아니라, 데이터가 같은 값인지 확인하는 역할 & : 앞에 1개만 평가 && : 앞뒤를 모두 평가 Tuple index는 1부터 시작한다 #1단위 튜..
jjongguet
'DATA Engineering' 카테고리의 글 목록 (2 Page)