Hadoop
공식 홈페이지
1. 개요
Apache Hadoop(High-Availability Distributed Object-Oriented Platform)은 일반 상용 서버로 구성된 클러스터에서 사용할 수 있는 분산 파일시스템과 대량의 자료를 처리하기 위한 분산 처리 시스템을 제공하는 아파치 소프트웨어 재단의 오픈 소스 프레임워크이다. Java를 사용하여 개발되었다.
원래 검색 엔진 Nutch의 분산 처리를 위하여 개발되었다. 야후!에 재직 중이던 프로그래머 더그 커팅이 처음 개발하였고, 이후 프로젝트가 아파치 재단으로 넘어간 다음 해당하는 코드를 분리시켜 독자 프로젝트로 발전해 나갔다고 한다.
마스코트는 코끼리인데, 더그 커팅이 아들이 가지고 놀던 코끼리 장난감을 보고 지었다고 한다. 참고로 파생 프로젝트도 상당수가 동물 이름을 따왔다(타조#, 하마# 등).
2. 구조
2.x 버전에서는 공통모듈인 Hadoop Common, 스케줄러와 클러스터 관리 모듈인 Hadoop YARN, NoSQL 데이터베이스인 Hadoop HBase, 분산 파일시스템 HDFS(Hadoop Distributed File System), 분산처리 시스템 Hadoop Map Reduce로 구성되어 있다. 특히 Map Reduce와 HDFS는 구글의 Map Reduce와 Google File System(GFS) 논문을 보고 오픈 소스로 구현한 것이다.
기존에 1.x 버전에서는 Map Reduce와 HDFS로만 구현되어 있었고 Hadoop YARN의 ResourceManager 기능은 Map Reduce의 JobTracker라는 이름으로 존재하고 있었다. 또한 아직까지는 Java 8 이하의 버전과만 호환되며, Java 9부터는 모듈 시스템과의 호환성 때문에 문제가 발생할 수 있으니 참고하자.
3. 사용 예시
사용에 큰 제한이 없는 아파치 라이선스를 가지고 있기 때문에 Map Reduce를 이용하거나, 대량의 파일 시스템을 처리하는 경우에 사용된다. 대표적으로는 Apache Lucene(루씬)을 이용한 검색 엔진이나 기계학습, 빅 데이터 분석 등 여러 분야에서 사용되고 있다.