Apache Hadoop 소프트웨어는 간단한 프로그래밍 모델을 사용하여 컴퓨터의 클러스터에서 대규모 데이터 세트를 분산 저장 및 처리할 수 있는 오픈소스 프레임워크입니다. Hadoop은 단일 컴퓨터에서 시작해 수천 대의 클러스터된 컴퓨터로까지 수직 확장할 수 있도록 설계되었으며 각 머신은 로컬 계산 기능과 스토리지를 제공합니다. Hadoop은 이러한 방식으로 기가바이트급에서 페타바이트급에 이르는 대규모 데이터 세트를 효율적으로 저장하고 처리할 수 있습니다.
Google Cloud에서 Dataproc을 사용하여 Apache Hadoop 클러스터를 보다 단순하고 통합되고 비용 효율적인 방식으로 실행하는 방법을 알아보세요.
Hadoop은 월드 와이드 웹 초기부터 시작되었습니다. 웹이 수백만, 수십억 개의 페이지까지 성장함에 따라 검색 및 검색결과를 반환하는 작업이 가장 중대한 과제 중 하나가 되었습니다. Google, Yahoo 및 AltaVista와 같은 스타트업은 검색 결과를 자동화하는 프레임워크를 구축하기 시작했습니다. 컴퓨터 과학자 더그 커팅과 마이크 카파렐라가 맵리듀스(뒷부분에 설명) 및 Google File System에 대한 Google의 초기 작업을 바탕으로 Nutch라는 프로젝트를 만들었습니다. Nutch는 결국 Apache 오픈소스 소프트웨어 기반으로 이전했으며 Nutch와 Hadoop 간에 분할되었습니다. 커팅이 2006년부터 일하기 시작한 Yahoo에서 2008년에 Hadoop을 오픈소스로 제공했습니다.
Hadoop은 High Availability Distributed Object Oriented Platform(고가용성 분산 객체 중심 플랫폼)의 약어로 불리기도 하지만 원래 커팅의 아들의 장난감 코끼리의 이름을 따서 명명되었습니다.
Hadoop은 Java 기반의 오픈소스 프레임워크로, 애플리케이션의 대규모 데이터의 저장과 처리를 관리합니다. Hadoop은 분산형 스토리지와 병렬 처리를 사용하여 빅데이터 및 분석 작업을 처리하고 워크로드를 동시에 실행할 수 있는 작은 워크로드로 분할합니다.
기본 Hadoop 프레임워크는 다음과 같은 4개의 모듈로 구성되며 이러한 모듈이 함께 작동하여 Hadoop 생태계를 형성합니다.
Hadoop 분산 파일 시스템(HDFS): Hadoop 생태계의 기본 구성요소인 HDFS는 개별 Hadoop 노드가 로컬 저장소에 있는 데이터에서 작동하는 분산 파일 시스템입니다. 이를 통해 네트워크 지연 시간이 사라지고 애플리케이션 데이터에 높은 처리량으로 액세스할 수 있습니다. 또한 관리자는 스키마를 미리 정의할 필요가 없습니다.
Yet Another Resource Negotiator(YARN): YARN은 클러스터에서 컴퓨팅 리소스를 관리하고 이를 사용하여 사용자의 애플리케이션을 예약하는 리소스 관리 플랫폼입니다. 이 모듈은 Hadoop 시스템 전체에서 예약 및 리소스 할당을 수행합니다.
MapReduce: 맵리듀스는 대규모 데이터 처리를 위한 프로그래밍 모델입니다. 맵리듀스 모델에서는 대규모 데이터 세트의 하위 집합과 하위 집합을 처리하기 위한 명령이 여러 다른 노드로 전달되고, 각 하위 집합은 노드에 의해 다른 처리 작업과 동시에 처리됩니다. 결과를 처리한 후 개별 하위 집합이 보다 작고 관리하기 쉬운 데이터 세트로 결합됩니다.
Hadoop Common: Hadoop Common에는 다른 Hadoop 모듈이 사용 및 공유하는 라이브러리와 유틸리티가 포함됩니다.
전체 Hadoop 오픈소스 생태계는 계속 발전하고 있으며 HDFS, YARN, 맵리듀스 외에도 빅데이터의 수집, 저장, 처리, 분석, 관리에 유용한 많은 도구와 애플리케이션을 포함합니다. 여기에는 Apache Pig, Apache Hive, Apache HBase, Apache Spark, Presto, Apache Zeppelin이 포함됩니다.
Hadoop을 사용하면 상용 하드웨어 클러스터에 데이터 세트를 배포할 수 있습니다. 처리는 여러 서버에서 동시에 병렬적으로 수행됩니다.
소프트웨어 클라이언트가 Hadoop에 데이터를 입력합니다. HDFS는 메타데이터와 분산 파일 시스템을 처리합니다. 그러면 맵리듀스가 데이터를 처리하고 변환합니다. 마지막으로 YARN은 컴퓨팅 클러스터 전체에서 작업을 분할합니다.
모든 Hadoop 모듈의 설계 근간에는 개별 머신 또는 머신 랙의 하드웨어 오류가 일반적인 것이며 프레임워크에 의해 소프트웨어에서 자동으로 처리되어야 한다는 가정이 전제되어 있습니다.
확장성
Hadoop은 대량의 데이터를 빠르게 저장하고 처리하는 기본 도구 중 하나입니다. 분산 컴퓨팅 모델을 사용하여 데이터를 빠르게 처리할 수 있으며, 컴퓨팅 노드를 추가하여 데이터를 빠르게 확장할 수 있습니다.
저렴한 비용
상용 하드웨어에서 실행할 수 있고 대규모 도구 생태계를 갖춘 오픈소스 프레임워크인 Hadoop은 빅데이터의 저장 및 관리를 위한 저렴한 옵션입니다.
유연성
Hadoop은 데이터를 저장하기 전에 사전 처리가 필요하지 않으므로 데이터 스토리지에 유연성을 제공합니다. 즉, 조직은 원하는 만큼 많은 데이터를 저장한 다음 나중에 활용할 수 있습니다.
탄력성
분산 컴퓨팅 모델인 Hadoop은 내결함성과 시스템 복원력을 지원합니다. 즉, 하드웨어 노드 중 하나가 실패하면 작업이 다른 노드로 리디렉션됩니다. Hadoop 클러스터에 저장된 데이터는 시스템 내의 다른 노드에 복제되어 하드웨어 또는 소프트웨어 장애 발생 가능성에 대비합니다.
파일 집약적인 시스템인 맵리듀스는 대화형 분석 작업과 같은 복잡한 작업에 활용하기 어려운 도구일 수 있습니다. 또한 맵리듀스 함수는 Java로 작성해야 하며 가파른 학습 곡선이 필요할 수 있습니다. 맵리듀스 생태계는 매우 크며 다양한 기능을 위한 구성요소가 많아 어떤 도구를 사용할지 결정하기가 어려울 수 있습니다.
Hadoop이 대규모 데이터 세트를 처리하기 때문에 데이터 민감도 및 보호가 문제가 될 수 있습니다. 인증, 암호화, 감사, 프로비저닝을 위한 도구 생태계가 등장하여 개발자가 Hadoop에서 데이터를 보호할 수 있게 되었습니다.
Hadoop에는 데이터 관리 및 거버넌스, 데이터 품질 및 표준화를 위한 강력한 도구가 많지 않습니다.
많은 프로그래밍 영역과 마찬가지로 Hadoop에는 인재 격차가 있습니다. Java에서 필요한 기술을 모두 갖추고 맵리듀스, 운영체제 및 하드웨어를 프로그래밍하는 개발자를 찾는 일은 어려울 수 있습니다. 또한 맵리듀스는 학습 곡선이 가파른 편이므로 신입 프로그래머가 권장사항과 생태계를 빠르게 이해하기 어렵습니다.
조사 기관 IDC는 사물 인터넷, 소셜 미디어, 에지 컴퓨팅, 클라우드에서 생성된 데이터를 통해 2020년에 62.4제타바이트의 데이터가 생성 또는 복제된 것으로 추정했습니다. 이 기관은 2020년부터 2025년까지의 데이터 성장률이 연간 23%에 이를 것으로 예상했습니다. 모든 데이터가 저장되는 것은 아니지만(사용 후 삭제되거나 덮어씀) 전 세계의 데이터 수요는 계속 증가하고 있습니다.
Hadoop에는 핵심 모듈의 기능을 보강하고 확장할 수 있는 대규모 오픈소스 도구 생태계가 있습니다. Hadoop과 함께 사용되는 주요 소프트웨어 도구는 다음과 같습니다.
Apache Hive: 프로그래머가 SQL과 유사한 HiveQL이라는 쿼리 언어를 사용하여 HDFS의 데이터로 작업할 수 있는 데이터 웨어하우스입니다.
Apache HBase: 주로 Hadoop과 쌍을 이루는 오픈소스 비관계형 분산 데이터베이스입니다.
Apache Pig: 대규모 데이터 세트를 분석하고 필터, 정렬, 로드, 조인과 같은 함수를 지원하기 위해 맵리듀스를 통해 추상화 레이어로 사용되는 도구
Apache Impala: Hadoop과 함께 자주 사용되는 오픈소스 대규모 병렬 처리 SQL 쿼리 엔진
Apache Sqoop: 관계형 데이터베이스와 Hadoop 간에 대량 데이터를 효율적으로 전송하기 위한 명령줄 인터페이스 애플리케이션
Apache ZooKeeper: Hadoop에서 안정적인 분산 조정을 지원하는 오픈소스 서버, '구성 정보 유지 관리, 이름 지정, 분산 동기화 제공, 그룹 서비스 제공'을 위한 서비스
Apache Oozie: Hadoop 작업을 위한 워크플로 스케줄러입니다.
다음은 Apache Hadoop의 몇 가지 일반적인 사용 사례입니다.
분석 및 빅데이터
광범위한 기업과 조직에서 테라바이트 또는 페타바이트급의 빅데이터 처리, 다양한 데이터 세트 저장, 데이터 병렬 처리를 요하는 연구, 프로덕션 데이터 처리 및 분석에 Hadoop을 사용합니다.
데이터 스토리지 및 보관처리
Hadoop은 상용 하드웨어에 대용량 저장소를 사용할 수 있으므로 트랜잭션, 클릭 스트림 또는 센서 및 머신 데이터와 같은 모든 종류의 데이터를 위한 저렴한 스토리지 옵션으로 유용합니다.
데이터 레이크
Hadoop은 사전 처리 없이 데이터를 저장하는 데 도움이 될 수 있으므로 정제되지 않은 대량의 데이터가 저장되는 데이터 레이크를 보완하는 데 사용할 수 있습니다.
마케팅 분석
마케팅 부서에서는 고객 관계 관리(CRM) 데이터를 저장하고 분석하는 데 Hadoop을 사용하는 경우가 많습니다.
위험 관리
은행, 보험 회사, 기타 금융 서비스 회사는 Hadoop을 사용하여 위험 분석 및 관리 모델을 빌드합니다.
AI 및 머신러닝
Hadoop 생태계는 머신러닝 애플리케이션의 데이터 처리 및 모델 학습 작업을 지원합니다.