ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [개념 정리] 1. 하둡의 탄생과 생태계의 활용
    Big Data/Hadoop 2022. 5. 10. 14:39
    728x90

    Keyword : Hadoop의 역사, Hadoop 생태계의 진화

    개인적인 공부를 위해 강의를 정리한 내용입니다. 이번 글에 포함되어 있는 많은 이미지 또한 해당 강의에서 발췌했습니다.
    하둡을 처음 공부하시는 분들은 강의 시청을 추천드립니다.

     


     

    하둡의 역사를 살펴보며 왜 하둡이 필요한지,
    하둡의 생태계가 어떻게 이루어져 있는지 알아보겠습니다.

     


     

    Why Hadoop?

    비정형 데이터를 포함한 빅데이터를 다루는 데 적합한 플랫폼이며, 하둡을 이용하는 기업들이 꾸준히 증가하고 있습니다. 이로 인해 하둡 엔지니어의 수요도 급증하고 있습니다. 하둡은 2007년 탄생 이후 3점대 버전이 나온 성숙한 기술이고, 하둡 에코시스템은 Governance, Finance, Banking, Insurance, Healthcare 등 사회 전반에 걸쳐 데이터를 다루는 다양한 도메인들과 밀접하게 연관되어 사용되고 있습니다.

    출처 : https://data-flair.training/blogs/why-hadoop/

     


     

    Hadoop의 탄생

    2002년 Doug Cutting은 Nutch project라는 웹 검색 엔진을 개발하는 과정에서 웹을 크롤링하고, 저장해 인덱싱하는 등 너무 많은 데이터를 다루는 데 어려움을 겪었습니다. 그런데 2003년 구글의 파일 시스템(GFS)이 어떤 아키텍처로 작동하는지에 대한 논문이 발표되고, 2004년 구글의 제프 딘이 MapReduce라는 큰 데이터를 병렬 분산처리하기 위해 사용하는 알고리즘을 논문으로 발표합니다. 이 두 논문을 기반으로 Doug Cutting이 NDFS (Nutch Distributed File System)와 MapReduce를 개발한 것이 Hadoop의 시작입니다.

     


     

    구글의 논문과 아파치 프로젝트

    앞에서 언급했듯이 구글의 두 논문들을 참고해 HDFS(Hadoop Distributed File System)와 Hadoop MapReduce가 개발되었습니다. 즉 위의 이미지과 같이 하둡은 분산 파일 시스템과 이 분산 파일 시스템에 저장되어 있는 데이터를 병렬로 처리할 수 있는 MapReduce라는 소프트웨어 프레임워크를 포함한 구현체입니다. 그 외에 아파치 프로젝트를 이루고 있는 다양한 요소들이 있는데, 이를 간단히 알아보겠습니다.

     

    HBase(NoSQL)

    데이터베이스는 보통 관계형 데이터베이스(RDB - MySQL, Oracle 등)를 이야기하는데, 데이터를 저장하는 저장소로 공유 스토리지(NAS 등)를 사용합니다. 따라서 데이터의 저장량이 늘어나고 공유 스토리지의 연산하는 컴퓨팅 리소스가 늘어나면 어느 정도 성능이 증가하다, 일정 수준 이상을 넘어가면 디스크 IU 쪽에 bottleneck이 걸리면서 성능이 오히려 떨어집니다. 이런 한계를 해결하기 위해서 분산 노드에 저장되는 데이터베이스가 발전하고 있고 그중 하나가 HBase입니다.

     

    Pig

    기본적으로 하둡은 JAVA로 개발되어, MapReduce 개발에도 자바가 많이 사용됩니다. 하지만 Python이나 C++과 같은 언어로도 application을 만들 수 있게 되어있습니다. 구글에서는 이러한 application을 쉽게 만들기 위해 Google Sawzall이라는 언어를 개발했고, 이를 참고해 만들어진 것이 Pig입니다. 분산 파일 시스템에 저장되어 있는 데이터를 MapReduce application을 따로 개발해서 처리할 수 있지만, 이 방법 대신 Pig가 지원하는 문법을 사용해 쉽게 데이터를 처리할 수 있습니다.

     

    Hive

    관계형 데이터를 처리하는데 많이 사용되는 SQL로 하둡 분산 파일 시스템을 다루고자 하는 니즈에서 Hive가 시작되었습니다. 이후에 SparkSQL과 유사한 방식으로 동작하는 프레임워크들이 개발되어 널리 사용되고 있습니다. SQL 방식으로 핸들링하기 위해서는 관계형 데이터처럼 어느 정도 정형화되어 있어야 하고, 실제 기업에서도 이러한 방식으로 많이 활용하고 있다고 합니다. 단, 비정형 데이터의 경우에는 MapReduce로 직접 처리하는 과정이 필요할 수 있습니다.

     


     

    Hadoop 생태계의 진화

    하둡을 중심으로 빅데이터를 처리하기 위해 다양한 플랫폼들이 개발되었고, 이러한 플랫폼들을 간단히 살펴보겠습니다. HBase와 유사한 NoSQL 데이터베이스 중에는 Cassandra, mongoDB 등이 많이 사용되고 있습니다. 여러 가지 플랫폼을 가지고 데이터를 다루다 보면 분산된 시스템 간의 정보를 공유하고, 서버들의 상태를 체크하는 등 코디네이션 서비스 시스템(coordination service)이 필요한데 이 역할을 하는 것이 바로 Zookeeper입니다. (여러 플랫폼의 로고가 동물로 되어 있고, 이를 관리하기 때문에 Zoo(동물원)keeper라는 이름을 지었다고 합니다.) Zookeeper에 대해서는 뒤에서 더 자세히 다루겠습니다.

    Mahout은 머신러닝 알고리즘 등을 분산 데이터에서 사용할 수 있도록 만든 구현체이고, Sqoop은 관계형 데이터베이스와 하둡 HDFS 간에 데이터를 쉽게 주고받을 수 있게 해주는 프레임워크입니다. 서로 다른 엔진이나 언어를 가지고 하둡에 저장되어 있는 데이터를 다루다 보니 개발자들끼리 메타 데이터와 스키마(데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조, 위키백과)를 공유하고 하나의 카탈로그로 관리할 필요가 생겼고 이를 위해 HCatalog가 개발되었습니다.

    ETL(Extract, Transform, Loading)은 추출, 변환, 로드와 같이 데이터를 처리하는 과정을 뜻하며, 이러한 과정을 거쳐 최종 결과를 얻기 위해서는 단순히 한 번의 flow가 아닌 여러 개 단위의 workflow를 거쳐야 하는 경우가 많습니다. 어떤 소스 데이터가 다른 데이터와 연결되어 중간 연산 결과 값을 얻고 이 값이 최종 결과를 만들기까지는 여러 번의 job이 연속적으로 수행되어야 하는데, 이러한 workflow를 스케쥴링하는 것이 Oozie(최근에는 Airflow 많이 사용)입니다.

     

     

    앞에서 설명한 플랫폼들을 기술적인 레이어로 나눠서 정리하면 위 그림과 같습니다. 하둡은 데이터를 저장, 프로세싱하고 리소스를 관리하는 영역에 포함되고, Hive는 기본적으로 저장되어 있는 데이터의 메타데이터를 참조해서 쿼리를 던지게 됩니다. HBase는 분산 데이터베이스이며 Zookeeper는 코디네이터 역할을 합니다. 하둡의 생태계는 지속해서 진화하고 있고 아래 그림과 같이 다양한 플랫폼들이 제안되어 사용되고 있습니다.

     

    출처 : https://www.genkiware.com/bigdataservice/

     

    이처럼 빅데이터를 저장하고 처리하기 위한 다양한 기술들이 개발되었고, 덕분에 이전보다 상대적으로 저렴한 비용으로 빅데이터를 분석할 수 있게 되었습니다. 그리고 기업들은 이러한 데이터가 보여주는 기회들을 통해 새로운 가치를 창출할 수 있는 시대가 되었습니다. 하지만 그 데이터의 양이 사람이 직접 감당하기에는 너무나 많기 때문에 Machine Learning과 같이 분석을 아웃소싱할 수 있는 기술들이 함께 발전하고 있습니다.

     

    많은 기업에서 각자의 서비스와 제품으로부터 소스 데이터를 얻어, 이를 ETL 과정을 거쳐 수집, 통합해 Data Warehouse를 만듭니다. 여기로부터 마케터나 기획자, 분석가가 함께 유의미한 정보를 만들어내는 데 이를 Data Marts라고 부릅니다. 이렇게 만든 Marts에서 데이터를 분석할 수 있는 환경을 통해 여러 인사이트를 도출 하는 것이 일반적인 flow입니다. 최근 많은 기업에서는 분석가뿐만 아니라 모든 구성원에게 투명하게 데이터를 오픈해 분석할 수 있는 환경을 제공해주고 있습니다.

    위의 그림에서 빨간 점선 부분을 하둡 에코시스템으로 구축하는 경우가 많습니다. 데이터를 저장하고 그 데이터에 대한 ETL 처리를 통해 Marts를 만들고, 이 Marts를 만드는 job의 workflow를 관리하고 전체 코디네이터를 하고, 메타 데이터를 관리하고 또 전체 환경을 모니터링하고 통합하는 전반적인 데이터 처리 업무를 대부분 아파치 오픈 소스 프로젝트 위주로 운영하는 것이 일반적입니다. 분석 환경 쪽에서는 상용 솔루션들이 강세이긴 하나 JupyterZeplin 같은 노트북 형태의 오픈소스 데이터 분석 툴도 많이 사용되고 있습니다.

     

     


     

     

    많은 데이터를 분산 처리하기 위해 하둡이 개발되었고, 빅데이터 처리에 대한 수요가 늘어남에 따라 하둡의 에코시스템도 함께 발전했습니다. 에코시스템 내의 다양한 프로젝트, 플랫폼의 기능을 간략히 알아보고, 이와 함께 데이터가 어떤 flow로 처리되는지 살펴봤습니다. 다음 포스트에서 Hadoop에 대해 더 깊이 알아보겠습니다.

     

     

    728x90

    댓글

Designed by Tistory.