JangGeonWu
janggeonwu97
JangGeonWu
전체 방문자
오늘
어제
  • 분류 전체보기 (78)
    • SQLD (21)
    • 개인 공부용 (17)
    • Django (9)
    • Tableau (6)
    • ElasticSearch (8)
    • 빅데이터 엔지니어 (5)
    • Spring 퀵 스타트 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 개인 공부 기록용 블로그

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
JangGeonWu

janggeonwu97

하둡 살펴보기
빅데이터 엔지니어

하둡 살펴보기

2022. 12. 29. 17:11

1. 빅데이터 3대 요소

  • 크기(Volume): terabyte, petabyte 이상이 빅데이터에 해당
  • 속도(Velocity): 빅데이터는 매우 빠른 속도로 생성된다. 따라서 빠른 처리가 필요
  •  다양성(Variety): 다양한 종류의 데이터들로 구성됨

 

2. 하둡 개요

  • 구글이 논문으로 발표한 GFS(Google File System)과 맵리듀스(MapReduce)를 2005년에 더그 커팅(Doug Cutting)이 구현한 결과물
  • 처음에는 오픈소스 검색 엔진인 Nutch에 적용하려고 시작, 이후 독립적인 프로젝트로 만들어짐
  • 분산 파일 시스템인 HDFS(Hadoop Distributed File System)에 데이터를 저장해, 분산 처리 시스템인 맵리듀스를 이용해 데이터를 처리.
  • 오픈소스 프로젝트라 소프트웨어 라이선스 비용에 대한 부담이 없음.
  • 여러 대 서버에 데이터를 저장하고, 데이터가 저장된 각 서버에서 동시에 데이터를 처리하는 방식

 

3. 하둡 1.0 버전의 특징

  1. 강력한 보안 기능 보유. 커버로스(Kerberos) 인증을 통해 네트워크 전체에 걸쳐 보안 확보 가능
  2. WebHDFS REST(Representational State Transfer) API 제공. 웹 기술을 통해 많은 사람들이 이용할 수 있고, 다양한 기능이 만들어지는 계기가 됨
  3. H베이스(HBase)가 완벽하게 구동됨

 

HBase: 하둡의 HDFS 위에 만들어진 분산 컬럼 기반의 데이터베이스. 구조화된 데용량의 데이터에 빠른 임의접근을 제공하는 구글의 빅 테이블과 비슷한 데이터 모델을 가짐.

 

4. 하둡 에코 시스템

하둡은 비즈니스에 효율적으로 적용할 수 있게 다양한 서브 프로젝트를 제공하는데, 그 집합을 하둡 에코시스템이라 부름

 

각 서브 프로젝트의 특징은 다음과 같다.

 

코디네이터

  • Zookeeper: 분산 환경에서 서버 간의 상호 조정이 필요한 다양한 서비스를 제공. 다음과 같은 4가지 서비스를 제공해준다.
  1. 하나의 서버에만 서비스가 집중되지 않게 서비스를 알맞게 분산, 동시에 처리하게 해줌
  2. 하나의 서버에서 처리한 결과를 다른 서버와 동기화해 데이터의 안정성 보장
  3. 운영 서버에 문제가 발생해 서비스를 제공할 수 없을 때, 다른 대기 중인 서버를 운영 서버로 바꿔 서비스가 중지 없이 제공되게 함.
  4. 분산 환경을 구성하는 서버의 환경설정을 통합적으로 관리한다.

리소스 관리

  • YARN: 데이터 처리 작업을 실행하기 위한 클러스터 자원과 스케줄링을 위한 프레임워크. 기존 하둡의 데이터 처리 프레임워크였던 MapReduce의 단점을 극복하기 위해 만들어짐. 다양한 애플리케이션들이 YARN에서 리소스를 할당 받아 작업을 실행한다.

  • Mesos: 클라우드 Infrastructure 및 자원을 통합적으로 관리할 수 있도록 만든 자원 관리 프로젝트. 현재 아파치 최상위 프로젝트로 진행 중. 클러스터링 환경에서 동적으로 자원을 할당하고 격리하는 메커니즘 제공, 분산 환경에서 작업 실행을 최적화할 수 있음

데이터 저장

  • HBase: HDFS 기반의 칼럼 기반 데이터베이스. 실시간 랜덤 조회 및 업데이트 가능. 각 프로세스는 개인 데이터를 비동기적으로 업데이트 가능.

  • Kudu: 컬럼 기반 스토리지. 특정 컬럼에 대한 데이터 읽기 고속화 가능. HDFS 기반으로 온라인 처리가 가능하지만 데이터 분석 처리가 느린 HBase의 단점을 보완해 개발하여, 데이터의 발생부터 분석까지의 시간을 단축할 수 있다.

데이터 수집

  • Chukwa: '척와'라고 발음. 분산 환경에서 생성되는 데이터를 HDFS에 안정적으로 저장하는 플랫폼. 분산된 각 서버에서 에이전트(agent)를 실행, 콜렉터(collector)가 에이전트로부터 데이터를 받아 HDFS에 저장. 콜렉터는 100개의 에이전트 당 하나씩 구동되며, 데이터 중복 제거 등 작업은 맵리듀스로 처리

  • Flume: 척와랑 내용은 같으나, 차이점은 전체 데이터의 흐름을 관리하는 마스터 서버가 있어 데이터를 어디에서 수집하고 어떤 방식으로 전송하고 어디에 저장할지 동적으로 변경할 수 있다.

  • Scribe: 페이스북에서 개발. 데이터를 중앙 집중 서버로 전송하는 방식. 최종 데이터는 HDFS 외 다양한 저장소를 활용할 수 있으며, 설치와 구성이 쉽게 다양한 프로그램 언어를 지원함.

  • Sqoop: 대용량 데이터 전송 솔루션. 다양한 저장소에 대용량 데이터를 신속하게 전송하는 방법을 제공. 다양한 상용 RDBMS와 오픈소스 RDBMS 등을 지원.Hiho: 스쿱과 같은 대용량 데이터 전송 솔루션. 하둡에서 데이터를 가져오기 위한 SQL을 지정할 수 있고, JDBC(자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API) 인터페이스를 지원

  • Kafka: 데이터 스트림을 실시간으로 관리하기 위한 분산 메세징 시스템. 링크드인에서 자사 대용량 이벤트처리를 위해 개발했으며, 이후 아파치 탑레벨 프로젝트로 승격. 발생(publish) ~ 구독(subscribe) 모델로 구성되어, 데이터 손실을 막기 위해 디스크에 데이터를 저장. 파티셔닝을 지원, 다수의 카프카 서버에서 메시지를 분산 처리할 수 있으며, 시스템 안정성을 위해 로드밸런싱과 내고장성(Fault Tolerant)를 보장.

데이터 처리

  • Pig: 복잡한 맵리듀스 프로그래밍을 대체할 자체 언어 제공. 맵리듀스 API를 매우 단순화해 SQL과 유사한 형태로 설계됨. 다만 유사하기만 할 뿐, 기존 SQL 지식을 활용하기는 어렵다.

  • Mahout: '머하웃'으로 발음. 하둡 기반으로 데이터 마이닝 알고리즘을 구현한 오픈소스 프로젝트.

  • Spark: 인메모리 기반의 범용 데이터 처리 플랫폼.

  • Impala: 클라우데라에서 개발한 하둡 기반의 분산 쿼리 엔진. 맵리듀스를 사용하지 않고, C++로 개발한 인메모리 엔진을 사용해 빠른 성능을 보임.

  • Presto: 페이스북이 개발한 대화형 질의를 처리하기 위한 분산 쿼리 엔진. 메모리 기반. 다양한 데이터 저장소에 저장된 데이터를 SQL로 처리할 수 있다. 특정 질의의 경우 하이브 대비 10배 정도 빠른 성능을 보여줌.

  • Hive: 하둡 기반의 데이터웨어하우징 전용 솔루션. HiveQL라는 쿼리 언어 제공, 자바를 모르는 데이터 분석가들도 쉽게 하둡 데이터를 분석할 수 있게 도와줌.

  • Tajo: 하둡 기반의 데이터 웨어하우스 시스템. 자체 분산 처리 엔진을 사용, 표준 SQL을 지원하는 것이 특징.

워크플로우 관리

  • Oozie: '우지'라고 발음. 하둡 작업을 관리하는 워크플로우 및 코디네이터 시스템. 자바 서블릿 컨테이너에서 실행되는 자바 웹 애플리케이션 서버이며, 맵리듀스 작업이나 피그 작업 같은 특화된 액션으로 구성된 워크플로우 제어.

  • Airflow: 에어비앤비에서 개발한 플랫폼으로, 데이터 흐름의 시각화와 스케줄링, 모니터링이 가능. Hive, Presto, DBMS 엔진과 결합해 사용 가능

  • Azkaban: 링크드인에서 개발한 워크플로우 플랫폼. 워크플로우 스케줄러, 시각화된 절차, 인증 및 권한 관리, 작업 모니터링 및 알람 등 다양한 기능을 Web UI로 제공

  • Nifi: 나이파이(Niagarafiles의 축약형)로, 데이터 흐름을 모니터링하기 위한 프레임워크. 여러 네트워크를 통과하는 데이터 흐름을 웹UI에서 그래프로 표현하며, 프로토콜과 데이터 형식이 다르더라도 분석 가능. 데이터 흘려보낼 때 우선순위 제어 가능.

데이터 시각화

  • Zeppelin: '제플린'으로 발음. 빅데이터 분석가를 위한 웹 기반의 분석 도구. 분석 결과를 즉시 시각화. iPython, Notebook과 유사한 노트북 기능 제공, 다양한 분석 플랫폼과 연동 가능

데이터 직렬화 : 메모리를 디스크에 저장하거나 네트워크 통신에 사용하기 위한 형식으로 변환하는 것

  • Avro: RPC(Remote Procedure Call: 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 리모트의 함수나 프로시저를 실행 할 수 있게 해주는 프로세스간 통신)와 데이터 직렬화를 지원하는 프레임워크. JSON을 이용해 데이터 형식과 프로토콜을 정의하며, 작고 빠른 바이너리 포맷으로 데이터를 직렬화.

  • Thfift: '쓰리프트'로 발음. 서로 다른 언어로 개발된 모듈들의 통합을 지원하는 RPC 프레임워크. 개발자가 데이터 타입과 서비스 인터페이스를 선언하면 클라이언트와 서버 코드를 자동으로 생성. 다양한 언어를 지원.

5. 하둡 특)

  • 기존 RDBMS를 대체하는 것이 아니라, 상호보완적인 특성을 띈다.
  • 하둡은 배치성으로 데이터를 저장하거나 처리하는 데 적합한 시스템이므로, 무결성이 반드시 보장되어야 하는 데이터를 처리하는 데 적합하지는 않음(대신 이를 위해 다른 방법으로 보완하거나 함)

6. 하둡 단점

  • 고가용성 지원: 가용성은 시스템 장애 발생 후 정상으로 돌아오는 상태를 분석하는 척도를 의미하며, 고가용성은 99.999% 상태의 가용을 의미. 기존 하둡은 이 고가용성 지원이 안되었으나... 다행히 2013년 2.0 버전부터는 고가용성을 지원하게 되었다.(만세!)
  • 파일 네임스페이스 제한
  • 데이터 수정 불가: 최근 들어오면서 내용을 덧붙이거나 일부만 수정하는 기능이 도입됨(단점 극복!)
  • POSIX 명령어 미지원: rm, mv와 같은 POSIX 형식의 파일 명령어 이용 불가. 대신 하둡에서 제공하는 별도 셸 명령어와 API를 사용해야 하는데, 다행히 사용하기 어렵지는 않다.
  • 전문 업체 부족: 그래서 전문 업체를 찾기 보다는, 대부분 소규모로 시작하 점점 규모를 확장해가면서 기술력과 노하우를 쌓고, 기업 스스로 해결할 수 있는 방향을 찾는 방식으로 하둡을 도입함.

7. 하둡 배포판

업체 배포판 명칭 및 특징
Cloudera * 명칭: CDH(Cloudera's Distribution for Apache Hadoop)
* 특징: 클라우데라가 배포. 대부분의 하둡 에코시스텡미 포함. 아파치 배포판과의 차별화 전략으로, 일부 기능 및 버그 패치를 CDH에 먼저 적용. 처음에는 CDH가 더 최신식이었으나 Apache 배포판의 출시 주기가 더 빨라지면서 오히려 뒤처지는 현상이 나오고, 클라우데라 매니저 이용 시 업그레이드에서 어려움을 겪을 수 있다.
Hortonworks * 명칭: HDP(Hortonworks Data Platform)
* 특징: CDH와의 차별화 전략으로, 철저하게 아파치 배포판을 중심으로 구성. 호튼웍스가 개발한 암바리(Ambari)를 이용, 설치 및 하둡 에코시스템 관리를 편리하게 수행 가능
MapR Technologies * 명칭: MapR EDITIONS
* 특징: 하둡은 자바 기반인데, MapR은 성능 개선을 위해 자바에 C를 더함. HDFS를 자사 플랫폼으로 대체했으며, 맵리듀스 - HBase - Pig - Hive - Mahout 등을 지원

'빅데이터 엔지니어' 카테고리의 다른 글

JDBC  (0) 2023.01.15
맵리듀스 개요  (0) 2022.12.31
HDFS 개요  (0) 2022.12.30
하둡 개발 준비  (0) 2022.12.29
    '빅데이터 엔지니어' 카테고리의 다른 글
    • JDBC
    • 맵리듀스 개요
    • HDFS 개요
    • 하둡 개발 준비
    JangGeonWu
    JangGeonWu

    티스토리툴바