[cloud] 분산 처리 기술

분산 처리 기술

클라우드가 등장하기 전에는 테라 및 페타바이트 급 대용량 데이터를 처리하려면 고속 CPU와 대용량 메모리가 탑재된 서버가 필요했음. 하지만 지금은 분산 처리 기술과 클라우드 서비스를 이용하여 데이터를 여러 서버에 나누어 병렬로 처리할 수 있음

클러스터링은 여러 개의 서버를 결합하여 대량의 데이터를 분산 처리하는 장치로, 데이터 처리 중 몇 개의 서버에서 장애가 발생하더라도 다른 서버에 자동으로 작업을 할당하여 계속 이어나갈 수 있음

클러스터는 높은 수준의 가용성, 안정성, 확장성을 제공하기 위해 하나의 시스템을 이용하는 것보다, 두개 또는 그 이상의 시스템을 이용한다.

Apache Hadoop

map, reduce

map, reduce 알고리즘을 사용하는 이유는 빅데이터는 양이 워낙 많기 때문에 처리 프로세스는 최대한 단순하게 만들어야 한다. 위 조건이 전제되야 수많은 서버에 흩어서 병렬로 처리가 가능하다. 처리의 순서가 중요하다든지 실패했을때 다시하려면 몇단계 전으로 돌아가야한다든지의 상황은 병렬 처리에서 굉장히 복잡해질 것이다.

이를 위해서는 기준이 되는 값은 하나!이어야 프로세스가 단순하다. 그래서 기준이되는 값인 키가 하나인 맵 구조를 선택된 것.

키에 대한 실제 처리는 밸류(값)를 가지고 하게 되는데 여기에 수행 하는 연산도 역시 단순해야 한다. 이유는 교환법칙과 결합법칙이 성립해야하기 때문이다. 임의의 서버에서 임의의 순서로 두 개의 맵을 선택해서 연산을 수행하더라도 최종결과는 늘 같아야 병렬처리가 가능 하기 때문이다.

이 틀을 어기지만 않는다면 수백대의 서버가 일을 나누어 해도 오류없이 처리가 가능하게 됩니다.

위의 언급한 복잡한 상황은 위의 전제, 틀 안에서 맵리듀스를 잘 이용하거나, 여러단계를 반복 시키면, 충분히 해결이 가능하다.

참조:

https://m.blog.naver.com/PostView.nhn?blogId=shakey7&logNo=221408505127&proxyReferer=https%3A%2F%2Fwww.google.com%2F

https://blog.lgcns.com/1403

https://cskstory.tistory.com/entry/%EB%A7%B5%EB%A6%AC%EB%93%80%EC%8A%A4-MapReduce-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0