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 버전의 특징
- 강력한 보안 기능 보유. 커버로스(Kerberos) 인증을 통해 네트워크 전체에 걸쳐 보안 확보 가능
- WebHDFS REST(Representational State Transfer) API 제공. 웹 기술을 통해 많은 사람들이 이용할 수 있고, 다양한 기능이 만들어지는 계기가 됨
- H베이스(HBase)가 완벽하게 구동됨
HBase: 하둡의 HDFS 위에 만들어진 분산 컬럼 기반의 데이터베이스. 구조화된 데용량의 데이터에 빠른 임의접근을 제공하는 구글의 빅 테이블과 비슷한 데이터 모델을 가짐.
4. 하둡 에코 시스템
하둡은 비즈니스에 효율적으로 적용할 수 있게 다양한 서브 프로젝트를 제공하는데, 그 집합을 하둡 에코시스템이라 부름
각 서브 프로젝트의 특징은 다음과 같다.
코디네이터
- Zookeeper: 분산 환경에서 서버 간의 상호 조정이 필요한 다양한 서비스를 제공. 다음과 같은 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 |