본문으로 바로가기

공부 목적

구글 검색창에 'ㅁ' 를 입력하는 순간

연관 검색어들이 0.1초도 안 되어 나열되는 놀라운 기능을 보고

문득 원리가 궁금해서 찾아본 글!!

구글의 발전은 어디까지 인가..😲

 

<구글 자동 검색 기능>

참고

<인공지능 투자가 퀸트>의 저자 권영진님의 brunch 글입니다. 

재밌고 유익한 글입니다. 읽어보시길 추천드립니다~

https://brunch.co.kr/@nsung/29

 

구글은 어떻게 0.1초 만에 검색할까?

병렬 처리(Parallel Computing) 이야기 | 구글에 있는 데이터의 양은 얼마나 될까? 매일 30억 건 이상의 검색, 4억 2500만 명의 지메일, 수천만 건의 유튜브 비디오, 지도 데이터, 200억 웹페이지 인덱싱만

brunch.co.kr

 

공부 내용

※아래 내용은 개인 공부 기록용입니다.

글 개요

  • 구글의 데이터 양은 매일 30억건 이상의 검색, 4억명의 Gmail, 수천만건의 유투브, 200억 웹페이지 인덱싱 정도이다.😬
  • 세계 32곳 150만 대의 서버가 있는 데이터 센터 사진들을 보면 그 방대함을 느낄 수 있다.
  • (16년도 글이므로.. 2022년인 지금은 상상도 못할만큼 커졌으리라 생각된다.😵‍💫) 
  • 이러한 데이터 처리를 위해 구글이 발표한 맵리듀스(MapReduce) 기법.
  • 이걸 바탕으로 만들어진 Hadoop 라이브러리는 일반인들도 쉽게 빅데이터를 처리하는 원동력이 됐다.
  • 이런 대단한 '맵리듀스'라는 기법이 어떻게 세상에 나왔는지 알아보자.

듀얼코어의 탄생

  • 그동안 컴퓨터의 속도는 엄청나게 발전해왔다. 
  • 고든 무어는 '컴퓨터 반도체의 성능은 18개월마다 2배가 된다' 라는 '무어의 법칙'을 내놓는다.
  • 그러나 2000년대 중반 트랜지스터를 더 작게 만들기 어려워지는 한계에 도달했다.
  • 반도체의 공정이 물리적 한계인 10mn(나노) 대가 된 것이다.
  • 한 개의 칩으로 속도를 늘리기 어려워 졌다.
  • 그러자 칩 하나에 메모리를 공유하는 두 개의 프로세서를 집어넣는 혁신적인 '듀얼코어'를 선보인다.
  • 그러나 듀얼코어에도 문제가 있었다.
  • 두 개의 코어가 동시에 처리를 할 수 있는 병렬 처리 시스템(Parallel Computing)이 되어있지 않아서였다.

병렬 처리의 문제

  • 암달의 법칙 : 순차적으로 해야되는 일이면 아무리 자원(사람, 코어)을 많이 투입해도 일정 수준 이상 빨라질 수 없다는 것.
  • 병렬 처리는 경쟁 상태(Race Condition)을 철저히 처리하지 않으면 심각한 오류를 야기할 수도 있다.
  • 병렬 처리 기술이 늘어나자 대용량 데이터를 처리하는 분야에서 병렬 처리를 적극 수용.
  • 슈퍼 컴퓨터의 등장, 우리나라 기상청 컴퓨터의 코어는 무려 902040개. 😬
  • 그러나 코어가 너무 비쌌다. 일반 사람은 할 수 없다.

병렬 처리의 대중화

  • 엔베디아는 이미 자신들이 화면에 그래픽 그릴 때 병렬처리 기술을 사용하는 걸 알았다.
  • 4k 화질인 4000 x 8000 정도의 이미지를 화면에 그리려면 3200만 개의 점(픽셀)의 색깔을 계산
  • 이를 위해 그래픽 카드에 이미 2천개 정도의 간단하고 싼 코어를 넣어놨었다.
  • 엔비디아는 이를 이용해 저렴한 슈퍼컴퓨터인 Cuda를 구현했다. 
  •  연구소, 기억, 일반인 사이에서 방대한 병렬 처리가 인기있게 되었다.

2000년 중후반 병렬 처리

  • 2000년 중후반 한대 병렬처리가 아닌 여러대 컴퓨터로 분산처리하는 시도.
  • 하지만 어려웠다.
  • 컴퓨터 성능이 제각각이고 작업량을 분석해서 쉬고 있는 컴퓨터나 코어에게 나누어 줘야 했기 때문.
  • 이걸 자주하면 속도가 느려져 적절한 설계가 필요하다.
  • 계산 시간보다 데이터 전송 시간이 길어서 최대한 축소 후 전송했다.
  • 몇 십 몇 백대까지만 하고 그 이상은 안 했다.

드디어 등장한 구글의 맵리듀스

  • 하지만 구글은 늘어가는 데이터와 느려지는 검색 속도를 두고 보지만은 않았다.
  • 약하고 싼 데이터를 서버(=노드) 를 아주 많이 연결하는 방법 사용
  • 이렇게 하면 Cuda 와 비슷한 원리로 간단한 계산과 처리를 약한 서버에서 한다.
  • 그리고 그 결과를 모아서 최종 결과를 계산하는 방식을 사용한다.
  • 하지만 이것도 어려웠다. 전송에서 시간을 많이 잡아먹는다.
  • 그래서 각 서버에서 최대한 많은 계산을 해서 결과를 작게 만들어 전송해야 한다.
  • 근데 서버 성능이 안 좋아서 복잡한 계산이 어려운 딜레마가 있었다.
  • 또 복잡한 설계를 하였을 때 각 서버가 제대로 동작하는지 하나하나 체크하기도 어려웠다.
  • 또 매번 변경점을 모든 서버에 적용시키기도 어려웠다.
  • 이를 간단하고 강력하게 만든 것이 맵리듀스이다.

맵리듀스 방식

  • 맵리듀스는 맵과 리듀스 두 가지 행동 방식을 주면 결과를 계산하는 기술.
  • 맵 : 데이터를 변환하거나 추출.
  • 리듀스 : 추출한 데이터를 처리하는 방법.
  • ex) 데이터가 문장일 때
    • 맵 - 문장을 단어 단위로 바꿔라.
    • 리듀스 - 각 단어를 세라.
    • 이렇게 정하면 => 문장들의 단어와 개수 합 추출.
  • ex) 데이터가 각 반 학생 성적일 때
    • 맵 - 수학 성적을 추출해라.
    • 리듀스 - 평균을 내라.
    • 이렇게 정하면 => 각 반 수학 성적의 평균 추출.

왜 이렇게 할까?

  • 단순히 한 반의 성적을 계산하는 거면 그냥 순차 프로그램으로 구하면 될 것이다.
  • 하지만 전 세계의 수학 성적 평균을 구한다면 많은 서버에 새롭게 성적 평균 구하는 프로그램 만들어야 한다.
  • 반면 맵 리듀스 시스템이라면 데이터가 아무리 커지고 복잡해져도 말단 노드들은 맵만 처리하고
  • 중간 서버가 리듀스하며 데이터양을 줄이고 그것을 다시 맵하고 반복하며 쉽고 명확하게 병렬처리할 수 있다.
  • 구글은 이러한 기술을 통해 세계 각자의 데이터 센터에 있는 데이터를 수많은 서버들이 동시에 병렬 처리하여서
  • 사용자에게 즉시 결과를 보여주는 것이다.

병렬 처리 무조건 좋은 것은 아니다.

  • 내 구글 검색으로 인해 전 세계의 수십만 대의 구글 서버들이 동시에 움직이다니 신기하다.
  • 구글은 이 맵 리듀스 기술을 논문으로 공개했고 이들 중 하나는 하둡이다.
  • 일반 사람도 빅데이터 분석, 클라우드 병렬처리가 가능해졌다.
  • 병렬 처리는 빠르지만 손이 많이 가고 복잡하다. 여려명이 일하면 문제가 많이 생기는 것과 비슷하다.
  • 이러한 병렬 처리에 대한 한계와 위험성, 비용을 이해하고 도입하는 것이 중요하다.

필기 사진

 

 

글 봐주셔서 감사합니다. 

댓글, 좋아요 부탁드립니다.🐢🐢🐢