Home Hadoop
Post
Cancel

Hadoop

Intro


빅데이터 분산에 필수적인 하둡의 개념과 관련된 하둡 생태계에 대해 알아보았다.



Main


Hadoop이란?

  • 대용량의 데이터를 적은 비용으로 더 빠르게 분석할 수 있는 플랫폼
  • 아파치 루씬 창업자인 더그 처팅이 2006년 야후 엔지니어로 일하면서 개발
  • 여러 대의 컴퓨터로 데이터를 분석하고 저장하는 방식으로 분석에 필요했던 많은 비용과 시간을 단축


활용 예시

  1. 페이스북(Facebook)의 자동 이미지 검색
    • 대용량의 사진 데이터를 약 2천여 개의 서버가 데이터를 처리하며, 사용자가 이미지를 업로드하거나 검색 시 사용
  2. 금융거래 내역 분석을 통한 사기 방지
  3. 검색 패턴을 통한 광고 타깃 및 마케팅
    • SK도 2008년 하둡을 도입하여, 실시간으로 데이터를 수집하여 사용자 맞춤형 서비스 개발


구성

분산파일 시스템 (HDFS)

수천 대의 분산된 x86 장비에 대용량 파일을 저장

맵리듀스 (MapReduce)

저장된 분산 파일을 분산된 서버의 CPU와 메모리 자원을 이용하여 빠르게 분석


하둡 에코시스템

  • 대부분 동물이름과 관련되어 있어, 이를 관리하는 것의 이름도 Zookeeper !

image


분산 코디네이터

ZooKeeper

  • 분산 환경에서 서버 간의 상호 조정이 필요한 다양한 서비스를 제공하는 시스템
  • 분산 동기화를 제공하고 그룹 서비스를 제공하는 중앙 집중식 서비스로 알맞은 분산처리 및 분산 환경을 구성하는 서버 설정을 통합적으로 관리
  • 운영(active) 서버에서 문제가 발생해 서비스를 제공할 수 없는 경우, 다른 대기중인 서버를 운영 서버로 바꿔 서비스가 중지없이 제공되게 해줌

Ooozie

  • 하둡의 작업을 관리하는 워크플로우 및 코디네이터 시스템
  • 자바 서블릿 컨테이너에서 실행되는 자바 웹어플리케이션 서버
  • MapReduce 작업이나 Pig 작업 같은 특화된 액션들로 구성된 워크플로우를 제어


분산 리소스 관리

YARN

  • 작업 스케줄링 및 클러스터 리소스 관리를 위한 프레임 워크
  • 맵리듀스, 하이브, 임팔리, 스파크 등 다양한 애플리케이션들은 얀(YARN)에서 작업을 실행

Mesos

  • 클라우드 환경에 대한 리소스 관리
  • Linux 커널과 동일한 원칙을 사용하며 컴퓨터에 API(ex : Hadoop, Spark, Kafka, Elasticsearch 등)
  • 페이스북, 트위터, 이베이 등 다양한 기업들이 메소스 클러스터 자원 관리 중


데이터 저장

HBase - 분산 데이터 베이스

  • 구글 Bigtable을 기반으로 개발된 비관계형 데이터베이스
  • Hadoop 및 HDFS 위에 Bigtable과 같은 기능을 제공
  • 네이버는 라인 메신저에 HBase를 적용한 시스템 아키텍처 발표

HDFS - 분산 파일 데이터 저장

  • 애플리케이션 데이터에 대한 높은 처리량의 액세스를 제공하는 분산파일 시스템

Kudu - 컬럼기반 스토리지

  • 급변하는 데이터에 대한 빠른 분석을 위해 설계
  • 클라우드데라에서 시작된 프로젝트로, 2015년 말 아파치 인큐베이션 프로젝트로 선정


데이터 수집

Chukwa

  • 대규모 분산 시스템을 모니터링하기 위한 시스템
  • 분산 환경에서 생성되는 데이터를 안정적으로 HDFS에 저장하는 플랫폼
  • HDFS 및 MapReduce에 구축되어 수집된 데이터를 최대한 활용하기 위한 모니터링 및 유현한 툴킷을 포함

Flume

많은 양의 데이터를 수집, 집계 및 이동하기 위한 분산형 서비스

Scribe

  • 페이스북에서 개발한 데이터 수집 플랫폼
  • Chukwa와 다르게 데이터를 중앙 서버로 전송하는 방식
  • 최종 데이터는 다양한 저장소로 활용

Kafka


데이터 처리

Pig

  • 하둡에 저장된 데이터를 맵리듀스 프로그램을 만들지 않고 SQL과 유사한 스크립트를 이용해 데이터를 처리
  • 맵리듀스 API를 매우 단순화한 형태로 설계

Mahout

  • 분석 기계학습에 필요한 알고리즘을 구축하기 위한 오픈소스 프레임워크
  • 클러스터링, 필터링, 마이닝, 회귀분석 등 중요 알고리즘을 지원

Spark

  • 대규모 데이터 처리를 위한 빠른 속도로 실행시켜주는 엔진
  • 병렬 애플리케이션을 쉽게 만들 수 있는 80개 이상의 고급 연산자를 제공
  • 파이썬, R 등에서 대화형으로 사용
  • hadoop의 느리다는 단점을 보완하여 나온게 spark이다. 요즘은 hadoop과 spark를 함께 사용하는 추세.

Impala

  • 하둡 기반 분산 엔진
  • 맵리듀스를 사용하지 않고 C++로 개발한 인 메모리 엔진을 사용

Hive

  • 하둡 기반 데이터 솔루션
  • 페이스북에서 개발한 오픈소스로, 자바를 몰라도 데이터 분석 가능
  • SQL과 유사한 HiveQL이라는 언어를 제공하여 쉽게 데이터 분석

MapReduce

  • 대용량 데이터를 분산처리하기 위한 프로그램으로 정렬된 데이터를 분산처리(Map) 하고, 이를 다시 합치는(Reduce) 과정
  • 하둡에서 대용량 데이터 처리를 위한 기술 중 가장 인기있음



Outro


사용해 볼 수 있는게 많아서, 구현하려는 서비스에 어떤 게 맞을지 더 공부해보고 선택해야 할 것 같다.

Apache Hadoop

This post is licensed under CC BY 4.0 by the author.