분산 처리 기술
클라우드가 등장하기 전에는 테라 및 페타바이트 급 대용량 데이터를 처리하려면 고속 CPU와 대용량 메모리가 탑재된 서버가 필요했음. 하지만 지금은 분산 처리 기술과 클라우드 서비스를 이용하여 데이터를 여러 서버에 나누어 병렬로 처리할 수 있음
클러스터링은 여러 개의 서버를 결합하여 대량의 데이터를 분산 처리하는 장치로, 데이터 처리 중 몇 개의 서버에서 장애가 발생하더라도 다른 서버에 자동으로 작업을 할당하여 계속 이어나갈 수 있음
클러스터는 높은 수준의 가용성, 안정성, 확장성을 제공하기 위해 하나의 시스템을 이용하는 것보다, 두개 또는 그 이상의 시스템을 이용한다.
Apache Hadoop
-
1대의 마스터 서버와 그 아래에 있는 여러 대의 슬레이브 서버로 구성
-
마스터 서버가 데이터 처리 전체를 제어하고, 슬레이브 서버가 계산 처리. 처리 능력은 슬레이브 서버 대수에 비례
-
대용량 데이터의 일괄 처리에 적합
-
맵 리듀스를 사용하기 이전에는 전용 스토리지에 저장된 대량의 데이터를 강력한 몇 개의 컴퓨터의 스토리지로 복사한 후 처리하는 방식을 사용했다. 이는 네트워크에 심각한 병목을 초래했고, 시스템 구축에 많은 비용이 들었다.
-
이에 비해 맵 리듀스는 데이터를 여러 노드에 병렬로 분산해서 처리하기 때문에 비교적 저렴한 컴퓨터로 처리가 가능했고, 네트워크의 분산도 용이하여 관리의 편의성도 향상되었다.
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