Yeon's 개발블로그

지식을 전파하는 개발자가 되고싶습니다.

Cloud Computing 15

16. MapReduce Framework

++Mapper Class++ 1. map method 1-1) void run(Mapper.Context context): mapper클래스의 전체 구동함수에 해당하며 이 메소드를 override할일은 거의없다. MapReduce 프레임워크에서 Mapper클래스의 객체를 만들고 주어진 입력파일을 레코드의 집합으로 만든다음, 각 레코드들을 Mapper클래스 객체의 run메소드의 입력으로 넣어준다. void run(Mapper.Context context) throws IOException, InterruptedException{ setup(context); while(context.nextkeyValue()){ map(context.getCurrentkey(),context.getCurrentValue(..

Cloud Computing 2020.12.09

15. MapReduce Program의 구조

1. MapReduce 프로그램의 구조 public class ExampleClass{ //inner class로, 부모클래스의 인스턴스가 없어도 인스턴스 생성이 가능하도록 static으로 정의 public static vlass MyMapper extends Mapper{ K2 k2= new K2(); V2 v2=new V2(); public void map (K1 key, V1 value, Context context){ //body context.write(k2,v2); } } public static class MyReducer extends Reducer{ K3 k3=new K3(); V3 v3=new V3(); public void reduce(K2 key, Iterable values, Co..

Cloud Computing 2020.12.09

14. 병렬분산 처리 시스템: HADOOP이란?

*HADOOP이란? 안정적이고 확장가능한 분산 컴퓨팅을 하기 위한 오픈소스 소프트웨어이다. 하둡 소프트웨어 라이브러리는 프레임워크이고, 클러스터 상에 분산 저장되어있는 대용량 데이터셋을 대상으로 분산처리를 가능하게 한다. 단일서버나 수천대의 컴퓨터로 구성된 클러스터 상에도 실행이 가능하고, 클러스터내의 각 컴퓨터에서 로컬 컴퓨팅과 스토리지 기능을 제공한다. 고품질 하드웨어를 사용하는 것이 아니기 때문에 고가용성을 보장하고, 응용레이어에서 자체적으로 오류를 감지하고 해결하도록 라이브러리가 설계되어있다. 하둡은 HDFS에 데이터를 저장하고, YARN으로 리소스를 관리하고 MapReduce로 데이터를 처리한다. -개발배경: Google에서 모든 데이터를 대상으로 검색엔진을 제공하려는 목적에서 기존의 저장체계와..

Cloud Computing 2020.12.09

13. 공유메모리 프로그래밍-OpenMP

OpenMP란? 공유메모리 환경에서 사용하는 directive-based API로, 프로그래머가 순차 프로그램을 점진적으로 병렬해갈수 있도록 하기위해 설계되었다. 프로그래머가 병렬화 가능한 코드블록을 지정해 놓으면, 그것을 참고로 하여 병렬화는 컴파일러와 런타임 시스템이 결정하고 처리한다. #pragma opm parallel num_thread(thread_count): 코드 블록을 실행할 쓰레드 개수를 프로그래머가 명시할 때 쓰이는 명령어이다. 하지만 생성하고자 하는 쓰레드 개수를 프로그래머가 프로그램에 명시한다고해도, 시스템은 생성할 수 있는 정도만 생성하고, thread_count만큼 쓰레드를 생성해주지 않을 수도 있다. 요즘 OpenMP는 일반적으로 수천개의 쓰레드까진 생성해준다. implici..

Cloud Computing 2020.12.09

12. 공유메모리 프로그래밍-Pthreads

공유메모리란? 여러 프로세서 (CPU)들이 메모리를 공유하며, 프로세서 사이의 통신이 공유메모리를 통해 이루어지는 것을 말한다. 프로세스를 하나 실행시키면, 그 프로세스가 여러쓰레드를 포크하고, 그렇게 생성된 쓰레드들은 테스크를 병렬로 수행한다. 쓰레드사이의 통신은 프로그램 안에 있는 공유변수를 이용하여 이루어진다. *Thread: 쓰레드는 프로세스보단 상대적으로 가벼우며, 보통 공유메모리 프로그램은 하나의 프로세스와 여러개의 쓰레드로 이루어진다. 자신을 생성시킨 프로세스와 address space를 공유하고 프로세스의 data에 접근이 가능하다. 프로세스 안의 쓰레드 끼리는 공유변수를 통해 통신이 가능하며 서로 제어도 가능하다. parent 쓰레드에 변화가 생기면 child쓰레드또한 영향을 받고, 생성..

Cloud Computing 2020.12.08

10. 병렬프로그래밍: 병렬화가 잘되는 경우 (Embarrassingly Parallel Computations)

* Embarrassingly Parallel Computations 란? 완전히 독립적인 여러부분으로 나눌 수 있고, 프로세스 각각 계산이 가능한 병렬 프로그램을 말한다. 프로세스 간에 통신이 거의 필요없고, 각 프로세스는 다른 프로세스와 관계없이 실행될 수 있다. 모든 프로세스(Workers)가 같이 일을 시작하는 형태의 프로그램을 가진다. 1. 함수 적분 프로그램 사다리꼴 공식을 사용한 정적분 공식: h[f(x0)/2 + f(x1) + f(x2) + ... + f(xn)/2] #include #include double f (double x) //적분할 함수 void Get_data(int,int,double *, diuble *, int *); //데이터 입력 intmain(void){ int m..

Cloud Computing 2020.10.22

8. MPI프로그램 1:1 통신모드 (1:1 Communication Modes)

Communicattion mode Blocking Routines Nonblocking Routines Synchronous Send MPI_Ssend MPI_Issend Standard Send MPI_Send MPI_Isend Standard Receive MPI_Recv MP_Irecv Blocking routines: 송신하려는 변수나 배열의 데이터가 다른곳에 복사된 직후 종료 Nonblocking routines: 송신하겠다는 의사만 수신할 프로세스에게 표시하고 종료 Synchronous mode: 상대방의 송신이 끝나야 본인도 종료 Standard mode: 상대방과는 상관없이 본인이 실행, 종료 MPI_Isend(buf,count,datatype,dest,tag,comm,request) &..

Cloud Computing 2020.10.21