본문 바로가기

컴퓨터/빅데이터

빅데이터 분산처리 기술은 무엇인가?

반응형


우리는 현재 빅데이터 속에서 살고있다

한국에 많은 기업들이 보유하고 있는 데이터 용량은 2016년 1.45PB에서 2018년에는 7배가깝게 늘었다고한다

페이스북에는 몇천억개의 사진들을 보유하고있으며, 구글에 저장되어있는 정보도 상상할수없을 만큼 많을것이다

 

그에따른 빅데이터들을 처리할수있는 기술은 요즘시대에 필수불가결이 되었다

빅데이터를 처리하는 기술에 탄생배경과 무엇이 있는지 보도록 하자

 

탄생배경


 

 

옛날에는 데이터가 그렇게 많지 않았다 애초에 데이터를 저장할수 있는 공간도 적었다

하나의 디스크에서 데이터를 읽고 쓰는작업에 대해서 크게 문제가 되지않았다

 

하지만 계속 시간이 흘러가 점점 IT 분야는 발전하고 이에따라 많은 데이터를 필요로 하게되었다

2014년 기준으로 뉴욕증권거래소에서는 하루에 4.5TB에 데이터가 발생하고있으며,

 

네이버는 1초마다 검색되는 질문수 약 7400개, 1초마다 발송되는 메일 2500통

그리고 서버실에는 12만대의 서버, 총 240PB에 데이터가 저장되어있다고 한다

 

 

 

 

만약 이 어마무시한 데이터를 하나의 서버에서 처리한다고 생각하면 어떤일이 벌어질까?

조회한번 하는데 4시간이 걸리고, 글을 하나 작성하면 8시간이 걸린다고 생각해보자

이걸 실제 사용자가 사용하기에는 너무나 힘들것이다

 

 

그렇다고해서 스케일-업(Scale-up)을 통해 PB단위에 데이터를 처리하게되면 어떻게될까?

일단 비용적인 측면에서 어마무시하게 나갈것이며, 일정이상 도달하면 더이상 스케일-업(Scale-up)을 할수 없을것이다

어떻게하면 많은양에 빅데이터를 처리할수있을까?

 

 

 

 

 

 

 

 

 

이미 해당 문제에 대해서 고민했던 기업이 존재한다

구글에서는 하루가 멀다하고 수많은 비정형화된 빅데이터들 (사진, 텍스트, 영상 등)을 RDBMS에 저장하고

처리하려는 시도를 했었다

 

하지만 RDBMS에 저장하기에는 데이터가 너무많았으며, 가장 큰 문제는 비용과 속도였다

데이터를 저장하고, 수정하고, 불러오는 작업이 데이터가 커짐에 따라 너무 느려지는 것이였다

(기하급수로 늘어나는 비용은 덤)

 

이에따라 자체적으로 빅데이터를 처리할 기술을 개발하게 됬는데

분산처리 기술을 토대로 만든 Hadoop 이라는 프레임워크였다

 

 

 


반응형

 

 

 

 

분산처리에 기본이 되는 알고리즘은 Divide and Conquer로써 알고리즘에서 정렬, 탐색에서 사용되는 알고리즘이다

복잡하고 큰 데이터를 여러개의 작은 데이터를 나눈다

나눠진 여러개의 작은 데이터를 하나의 단순한 문제로 생각해서 해결하는 접근방식이다

 

한마디로 동시에 여러문제를 해결해서 시간을 단축시킨다는 의미로 받아들이면 될것이다

 

보통 프로그래밍 분산처리라면 하나의 컴퓨터안에서 여러개의 프로세서나 스레드를 이용해서

하나의 문제를 여러개가 동시에 수행하여 문제를 빠르게 해결하는 것으로 알고있을것이다

 

이것을 좀더 크게 생각해서 여러개의 컴퓨터들을 하나로 묶어서 마치 하나의 컴퓨터처럼 시스템을 구성하는 기술이다

여러개의 컴퓨터를 이용해서 마치 하나의 서버인것처럼 만드는 투명성(Transparency)를 보장한다

 

 

 

 

 

 

 

분산 처리를 위해서는 다수의 컴퓨터와 네트워크가 필요하며 이를 각 컴퓨터들을 클러스터(Cluster)라고 부른다

클러스터는 보통 저렴하고 저성능의 컴퓨터를 사용하며 여러대를 합쳐 슈퍼컴퓨터와 같은 성능을 이끌어낸다

빅데이터를 처리하기위해 큰 데이터를 이를 나누고 나뉜 데이터를 클러스터링된 컴퓨터에 보낸다

 

그다음 처리된 데이터의 결과를 수집하여 원하는 데이터를 얻는 구조인것이다

 

실제로 해당 기술을 적용하여 한대의 서버로 1TB에 데이터를 처리하는데 2시간 정도가 걸렸지만

여러대의 서버를 병렬로 작업한다면 2분 이내로 데이터를 읽어올수 있었던 것이다

 

분산처리 기술로인해서 기존 스케일업(Scale-up)에 한계를 극복하여 훨씬 더 많은 데이터를 효율적으로

처리가 가능할수 있었다

 

 

 

 

 

 

하나의 작업에 여러대의 컴퓨터를 두고 MPI(Message Passing Interface)를 사용하는 분산처리 시스템에는 문제가있는데

우선 여러개의 데이터프로세스의 sync를 유지하기 위해서는 굉장히 복잡한 프로그래밍을 요했다

 

또한 몇만대의 컴퓨터를 클러스터로 구성해도 일부컴퓨터가 장애를 일으킬경우 시스템이 동작하지 않는 문제가 있었다

 

 

 

 

 

 

MPI(Message Passing Interface)는 분산 메모리 시스템에서 사용할수 있도록 프로그래밍된 API들로써

메모리에서 실행되는 프로그램을 프로세스(process)라고 하며, 두개의 프로세스를 송신(send) 함수와

수신(receive) 함수라고 하는 프로세스를 이용해서 통신을 하게된다

 

위와같이 분산처리를 하기위해서는 MPI로 프로그래밍을 하여 송신하고 수신하여 데이터를 각자 처리를 하게되는데

프로그래밍하기 매우 복잡하였으며, 일부의 컴퓨터가 고장나는 경우(partial failure)에 대한 해결법도 필요하였다

이문제를 해결한것이 Hadoop 시스템이며, 이를통해 보다 쉽게 빅데이터를 처리할수 있게되었다

 

 

 

 

 

 

실제 국내 대기업에서도 빅데이터를 처리하는 방법으로 분산처리기술이 접목된 여러 프레임워크들을 사용하고있다