하둡

하둡 [Apache Hadoop] 빅데이터 이야기 (1) - 하둡에 대한 소개

neubillylee 2024. 9. 22. 03:19

 

  1. 하둡에 대한 소개

    하둡 (Hadoop)는 처음 등장한 이후로 많은 발전을 이루었습니다. 오픈 소스 애호가 커뮤니티의 지원을 받아 세 가지 주요 버전 릴리스를 경험했습니다. 첫 번째 릴리스 이후 6년 만에 버전 1 릴리스가 등장했습니다. 이 릴리스로 Hadoop 플랫폼은 Hadoop 분산 파일 시스템(HDFS) 분산 스토리지에서 MapReduce 분산 컴퓨팅을 실행할 수 있는 완전한 기능을 갖추게 되었습니다. 이 릴리스는 보안에 대한 완전한 지원과 함께 가장 큰 성능 향상을 이루었으며, HBASE와 관련된 많은 개선 사항도 포함되었습니다. 버전 2 릴리스는 Hadoop 버전 1에 비해 상당한 도약을 이루었습니다. YARN이라는 정교한 범용 자원 관리자 및 작업 스케줄링 구성 요소가 도입되었습니다. HDFS 고가용성, HDFS 연합, HDFS 스냅샷은 버전 2 릴리스에서 도입된 다른 주요 기능 중 일부입니다. 최신 주요 릴리스인 Hadoop 버전 3은 HDFS 소거 인코딩, 새로운 YARN 타임라인 서비스(새로운 아키텍처 포함), YARN 기회주의 컨테이너 및 분산 스케줄링, 세 개의 네임 노드 지원, 데이터 노드 내 로드 밸런서와 같은 중요한 기능을 포함하고 있습니다. 주요 기능 추가 외에도 버전 3은 성능 향상 및 버그 수정이 포함되어 있습니다. 여기 티스토리에서 언급할 내용들은 클라우드 기반의 Hadoop 3.x 버전을 마스터하는 것에 관한 것입니다. 이 장에서는 Hadoop의 역사와 Hadoop 진화 타임라인을 살펴보겠습니다. Hadoop 3의 기능을 살펴보고 다양한 Hadoop 배포판과 함께 Hadoop 생태계의 논리적 뷰를 얻을 것입니다.



  2. 하둡 기원은?

    1997년, Hadoop의 공동 창립자인 Doug Cutting은 Lucene 프로젝트 작업을 시작했습니다. Lucene은 완전한 텍스트 검색 라이브러리로, Java로 완전히 작성된 텍스트 검색 엔진입니다. 이 엔진은 텍스트를 분석하고 인덱스를 생성합니다. 인덱스는 텍스트를 위치에 매핑하는 것으로, 특정 검색 패턴과 일치하는 모든 위치를 빠르게 제공합니다. 몇 년 후, Doug는 Lucene 프로젝트를 오픈 소스로 만들었고, 커뮤니티로부터 엄청난 반응을 얻어 나중에 Apache 재단 프로젝트가 되었습니다.
    Doug는 Lucene을 관리할 충분한 인력이 생기자 웹 페이지 인덱싱에 집중하기 시작했습니다. Mike Cafarella가 이 프로젝트에 합류하여 웹 페이지를 인덱싱할 수 있는 제품을 개발했으며, 이 프로젝트를 Apache Nutch라고 명명했습니다. Apache Nutch는 Lucene 라이브러리를 사용하여 웹 페이지의 콘텐츠를 인덱싱하기 때문에 Apache Lucene의 하위 프로젝트로 알려져 있었습니다. 다행히도, 열심히 노력한 결과, 단일 머신에서 초당 약 100페이지를 인덱싱할 수 있는 Nutch를 배포하는 데 성공했습니다.
    확장성은 초기 버전의 애플리케이션을 개발할 때 사람들이 종종 고려하지 않는 요소입니다. Doug와 Mike에게도 마찬가지였으며, 인덱싱할 수 있는 웹 페이지 수는 1억 페이지로 제한되었습니다. 더 많은 페이지를 인덱싱하기 위해 머신 수를 늘렸지만, 노드를 늘리면 운영 문제로 이어졌습니다. 이는 운영 작업을 수행할 기본 클러스터 관리자가 없었기 때문입니다. 그들은 확장성 문제에 신경 쓰지 않고 견고한 Nutch 애플리케이션을 최적화하고 개발하는 데 집중하고 싶었습니다.

    Doug와 Mike는 다음과 같은 기능을 갖춘 시스템을 원했습니다:
    - 장애 내성 (Fault Tolerant): 시스템은 머신의 고장을 자동으로 격리된 방식으로 처리할 수 있어야 합니다. 즉, 한 대의 머신이 고장 나더라도 전체 애플리케이션에 영향을 미치지 않아야 합니다.
    - 로드 밸런싱 (Load Balancing): 한 대의 머신이 고장 나면 그 작업이 공정하게 작동 중인 머신에 자동으로 분배되어야 합니다.
    - 데이터 손실 (Data Loss): 시스템은 데이터 손실을 방지해야 합니다.

    그들은 앞서 언급한 요구 사항을 충족할 수 있는 시스템을 개발하기 위해 몇 달 동안 작업을 시작했습니다. 그러나 동시에 Google이 Google 파일 시스템을 발표했습니다. 이를 읽어보니 그들이 해결하려고 했던 유사한 문제에 대한 해결책이 포함되어 있었습니다. 그들은 이 연구 논문을 기반으로 구현하기로 결정하고 2004년에 Nutch 분산 파일 시스템(NDFS) 개발을 시작했습니다. Google 파일 시스템의 도움으로 앞서 논의한 확장성 및 장애 내성 문제를 해결했습니다. 이를 위해 블록 및 복제 개념을 사용했습니다. 각 파일을 64MB 청크(크기는 구성 가능)로 분할하고 각 블록을 기본적으로 세 번 복제하여 한 블록을 보유한 머신이 고장 나면 다른 머신에서 데이터를 제공할 수 있도록 했습니다. 이 구현은 Apache Nutch에서 해결하려고 했던 모든 운영 문제를 해결하는 데 도움이 되었습니다. 


  3. 하둡 역사에 사로잡힌 하둡 타임라인을 그려본다면?

    타임라인
    MapReduce와 HDFS에 대해 자세히 이야기하겠습니다. 먼저 Hadoop의 진화를 살펴보겠습니다:
    연도 이벤트
    2003          Google 파일 시스템에 대한 연구 논문 발표
    2004          MapReduce에 대한 연구 논문 발표
    2006         MapReduce에 대한 연구 논문 발표
           Hadoop을 위한 JIRA, 메일링 리스트 및 기타 문서 생성
           Hadoop Nutch 생성
           NDFS와 MapReduce를 Nutch에서 분리하여 Hadoop 생성
           Doug Cutting이 프로젝트 이름을 아들의 노란색 코끼리 장난감 이름을 따서 Hadoop으로 명명
           Hadoop 0.1.0 릴리스
           188개의 노드에서 1.8TB의 데이터를 정렬하는 데 47.9시간 소요
           Yahoo!에서 Hadoop 클러스터를 위해 300대의 머신 배포
           Yahoo!의 클러스터 크기가 600대로 증가
    2007          Yahoo!에서 1,000대의 머신으로 구성된 두 개의 클러스터 운영
            HBase와 함께 Hadoop 릴리스
            Yahoo!에서 Apache Pig 생성
    2008           YARN을 위한 JIRA 개설
            Powered by Hadoop 페이지에 20개 회사 목록 등재
            Yahoo!의 웹 인덱스가 Hadoop으로 이동
            Yahoo!의 프로덕션 검색 인덱스를 생성하기 위해 10,000코어 Hadoop 클러스터 사용
            첫 번째 Hadoop 서밋 개최
            910 노드 Hadoop 클러스터를 사용하여 209초 만에 1테라바이트의 데이터를 정렬하여 세계 기록 수립
            Hadoop이 테라바이트 정렬 기록을 달성
            Yahoo! 클러스터에 매일 10TB의 데이터가 Hadoop에 로드됨
            Cloudera가 Hadoop 배포 회사로 설립
            Google이 MapReduce 구현으로 68초 만에 1테라바이트를 정렬했다고 주장
    2009           Yahoo!에서 7개의 클러스터로 24,000대의 머신 운영
            Hadoop이 페타바이트 스토리지 정렬 기록 수립
            Yahoo!가 62초 만에 1테라바이트를 정렬했다고 주장
            두 번째 Hadoop 서밋 개최
            Hadoop 코어가 Hadoop Common으로 이름 변경
            MapR 배포판 설립
            HDFS가 별도의 하위 프로젝트로 분리
            MapReduce가 별도의 하위 프로젝트로 분리
    2010           Hadoop에 Kerberos를 사용한 인증 추가
            Apache HBase의 안정 버전 릴리스
            Yahoo!가 70PB를 처리하기 위해 4,000개의 노드 운영
            Facebook이 40페타바이트를 처리하기 위해 2,300개의 클러스터 운영
            Apache Hive 릴리스
            Apache Pig 릴리스
    2011           Apache Zookeeper 릴리스
            Facebook, LinkedIn, eBay 등에서 200,000줄의 코드 기여
    2012         Hadoop 2.0.0-alpha 버전 릴리스
            YARN (Yet Another Resource Negotiator) 도입: 자원 관리 및 작업 스케줄링을 위한 플랫폼1
            Apache Sqoop 프로젝트가 Apache 최상위 프로젝트로 승격2
    2013         Hadoop 2.2.0 릴리스: YARN과 HDFS 고가용성 기능 포함
    2014         Hadoop 2.4.0 릴리스: HDFS 페더레이션 및 스냅샷 기능 추가
    2015         Hadoop 2.7.0 릴리스: HDFS의 erasure coding 지원 추가
    2016         Hadoop 2.8.0 릴리스: YARN의 타임라인 서비스 개선 및 HDFS의 성능 향상
    2017         Hadoop 3.0.0 릴리스: HDFS erasure coding, 새로운 YARN 타임라인 서비스, YARN 기회주의 
            컨테이너 및 분산 스케줄링, 세 개의 네임 노드 지원, 데이터 노드 내 로드 밸런서 등 주요 기능 추가
    2018         Hadoop 3.1.0 릴리스: HDFS의 새로운 기능과 YARN의 성능 개선
    2019         Hadoop 3.2.0 릴리스: HDFS의 새로운 기능과 YARN의 성능 개선
    2020         Hadoop Ozone 도입: 객체 저장소 기능 추가
    2021         Hadoop 3.3.0 릴리스: HDFS와 YARN의 성능 및 안정성 개선
    2022         Hadoop 3.3.1 릴리스: 버그 수정 및 성능 개선
    2023         Hadoop 3.4.0 릴리스: 최신 기능 및 성능 개선

    소스 : DataFlair , Wikipedia , DATAVERSITY (dataversity.net), en.wikipedia.org

  4. 하둡 시연을 하기 앞서 알아야 할 지식은?

    구글 아키텍쳐 센터 - Architecture fundamentals  |  Cloud Architecture Center  |  Google Cloud
    하둡 공식 웹 사이트 - Apache Hadoop 
    특히 방대한 지식을 요구하는 빅데이터 시대에 하둡을 구현하는 방법이 너무 많습니다. 그러나 빅 데이터가 온프레미스에 저장되든 클라우드 스토리지에 저장되든 데이터 처리는 시작됩니다. Hadoop과 그 라이브러리는 모든 데이터를 위한 유연하고 확장 가능한 처리 엔진이 될 수 있습니다. Facebook과 같은 웹 규모의 회사들은 수년간 Hadoop에서 수 페타바이트 클러스터를 운영해 왔습니다. 제 이름은 Billy Lee 입니다. 저는 자바 개발자로 시작하여 최근 글로벌 회사에 데이터 과학자로 근무하였습니다. 오래전부터 Hadoop 클러스터를 구축하고 싶었고, 최적화하여 독자와 공유하고자 합니다. 특히 클라우드 Hadoop이 빠르게 시작할 수 있는 성능 좋고 비용 효율적인 방법을 제공하는 방법을 보여드릴 수 있어 매우 기쁩니다. 또한 이전에는 상상할 수 없었던 규모와 속도의 데이터 파이프라인을 구축할 수 있게 해주는 Hadoop의 Apache Spark로의 진화를 보게 될 것입니다. Hadoop을 구축한 제 경험을 여러분과 공유하게 되어 매우 기쁩니다. 바로 시작해 보겠습니다.

  5. 무엇을 해야 할까요?

    이 과정을 최대한 활용하려면 세 가지 다른 영역에 대한 사전 지식이 필요합니다. 
    첫째, 우리는 공용 클라우드 중 하나에 Hadoop 클러스터를 구현할 것입니다. 저는 주로 Google Cloud를 사용할 것이지만, 다른 클라우드 공급업체와의 경험도 언급할 것이며, 실제로 모든 클라우드에 적용할 수 있는 수준에서 논의할 것입니다. 
    둘째, 따라서 가상 머신과 스토리지 버킷을 모두 사용할 것입니다. 기본적으로 이러한 개념을 이해해야 합니다. 우리가 MapReduce 작업 및 기타 유형의 작업을 실행하기 위해 집중할 프로그래밍 언어는 Java와 Python이며, Linux 파일 시스템도 다룰 것입니다.
    마지막으로 LS 또는 PWD와 같은 파일 시스템 관련 기본 Linux 명령을 이해하는 것이 매우 유용할 것입니다. 학습 중에 이 부분이 처음이라면 참고 자료를 제공하겠습니다

  6. 하둡 시작을 클라우드 사용해보기

    이 과정의 정보를 소비하는 두 가지 방법이 있습니다. 제 클러스터 하둡 제작 시연을 단순히 따라할 수 있으며, 학습용으로 완전한 단계와 스크립트를 제공할 것입니다. 또는 클라우드에 자신의 Hadoop 클러스터를 설정하여 따라할 수 있습니다. 그렇게 할 경우, Hadoop을 위한 클라우드 서비스를 사용할 때 주의해야 할 몇 가지 사항이 있습니다.
    첫째, 새 무료 계정을 사용하더라도 일반적으로 무료가 아닙니다. Hadoop은 프리미엄이기 때문에 일반적으로 서비스 요금이 부과되며, 사용 시간과 클러스터 크기에 따라 비용을 지불하게 됩니다. 당연히 학습 중이라면 비용을 줄이기 위해 가능한 한 작은 클러스터를 사용하고 싶을 것입니다. 또한 클라우드 공급업체 프로젝트에 대한 예산 알림을 설정해야 합니다. 클러스터를 끄거나 삭제하는 것을 잊어버리면 예상치 못한 요금이 발생하지 않도록 알림을 받게 됩니다. 그리고 방금 언급했듯이, 공부하지 않을 때는 클러스터를 끄고, 공부가 끝나면 클러스터를 삭제하고 설정 파일을 보관할 수 있습니다. 이러한 것은 일반적으로 클라우드 작업 시의 모범 사례이지만, Hadoop 클러스터 작업 시 특히 중요합니다. 처음에 언급했듯이, 새 클라우드 계정에 무료 계층이 있더라도 일반적으로 무료가 아니기 때문입니다.

    세계 중심의 빅데이터 지식 공유자 - 빌리 리 올림
 

빅데이터 하둡 직접 설치하기 강의 | Billy Lee - 인프런

Billy Lee | 하둡과 빅데이터를 배우고자 하는 수강생들은 이 과정을 통해 빅데이터 세계를 경험하는 놀라운 발전을 기념할 것입니다!, 바야흐로 빅데이터 시대! 👨‍💻하둡(Hadoop)으로 전문가가

www.inflearn.com

 

 

Apache Hadoop

<!--- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or a

hadoop.apache.org

 

 

 

아키텍처 기초  |  클라우드 아키텍처 센터  |  Google Cloud

의견 보내기 아키텍처 기초 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Last reviewed 2024-01-08 UTC 아키텍처 센터는 AI 및 ML, 애플리케이션 개발, 빅데이터와

cloud.google.com

 

[소스 참고] : Mastering Hadoop 3 서적, Cloud Architect Lynn Langit