빅데이터
'빅데이터'라는 용어는 실제 데이터를 의미하지 않는다. 너무 거대하거나 복잡한 데이터셋을 분석하고, 체계적으로 정보를 뽑아 내거나 다루기 위한 분야이다. 빅데이터에 관한 4V는 다음과 같고, 꼭 알고 있어야 하는 내용이다.
- 규모(Volume) : 고객에 대한 종합적인 시각과 더 많은 과거 데이터를 갖고 있으면, 더 많은 통찰을 이끌어낼 수 있다.
- 속도(Velocity) : 정보를 빠르게 처리할수록 쿼리, 보고서, 대시 보드를 통해 알고 싶은 대답을 유연하게 얻을 수 있다.
- 다양성(Variaty) : 고객 관계 관리 시스템, 소셜 미디어, 콜 센터 로그 등을 통해서 다양한 고객 데이터가 있을수록 고객에 대해 더 다양한 시각을 키울 수 있다.
- 정확성(Veracity) : 고객 데이터는 정확한 결정을 내리기 위해 통합되고, 정제되고, 일관적이고, 최신이어야 한다.
하둡
아파치 하둡은 컴퓨터 클러스터에 퍼져있는 거대 데이터셋을 분산 환경에서 쉬운 프로그래밍 모델로 처리할 수 있도록 도와주는 프레임워크이다. 이 라이브러리는 하나의 서버에서 수천 개의 서버로 규모를 키울 수 있도록 설계되어 있다. 또한 라이브러리가 어플리케이션 단에서 일어나는 결함을 찾아내고 처리하기 때문에 하드웨어에서 나오는 보고에 의존할 필요가 없다. 이는 하둡이 서버 클러스터 위에서 고가용성 서비스를 할 수 있도록 한다.
모듈
- Hadoop Common : 다른 하둡 모듈을 지원하기 위한 공통적인 유틸리티
- Hadoop Distributed File System(HDFS) : 어플리케이션이 사용하는 데이터에 높은 처리량으로 접근할 수 있도록 돕는 분산 파일 시스템
- Hadoop YARN : 작업 스케쥴링과 클러스터 자원 관리를 위한 프레임워크
- Hadoop MapReduce : 거대 데이터셋을 병렬 처리하기 위한 YARN 기반 시스템
- Hadoop Ozone : 하둡을 위한 객체 저장소
- Hadoop Submarine : 하둡을 위한 기계 학습 엔진
HDFS - 하둡 분산 처리 시스템
이 시스템은 사용자가 하둡 클러스터에 있는 모든 노드에 퍼져있는 테라바이트 단위의 데이터에 접근할 수 있도록 하는 데이터 모듈이다.HDFS는 거대한 양의 데이터를 데이터 블록으로 나누고, 데이터 블록은 클러스터의 다양한 인터페이스를 통해 관리한다. 각 데이터 블록은 여러 개의 하드웨어로 복사되어 한 장치에서 결함이 발생하더라도 데이터를 이용할 수 있다.
- NameNode : File System Namespace를 관리하고 데이터에 대한 메타데이터를 저장한다. 파일 열기, 닫기, 이름 변경 등의 작업을 처리하고, 블록을 DataNode와 매핑하는 작업을 한다.
- DataNode : 클라이언트가 요구하는 read, write를 File System 상에서 처리한다. NameNode의 요구를 처리하고, 블럭의 생성, 삭제, 복제 작업을 한다.
- Replication : File 생성시 사본의 개수를 지정할 수 있고, Default는 3개이다. Rack Awareness Algorithm을 사용하여 1 Rack에 최대 2 Copy만 저장되게 한다. NameNode는 Replication과 관련된 모든 것을 결정하고 관리하며, DataNode로부터 주기적으로 Heatbeat(DataNode가 제기능을 하고 있는가)와 Blockreport(Block 정보 확인)을 받는다.
Hadoop Mapreduce
Mapreduce라는 용어는 하둡 어플리케이션이 실행하는 두 개의 다른 작업을 의미한다. 매퍼는 각 요소를 튜플(키와 값의 쌍)의 형태로 나누어 데이터셋을 다른 데이터셋으로 변환한다. 리듀서는 맵의 결과를 입력받아 키와 값의 쌍을 더 작은 튜플 집합으로 합친다.
아래의 다이어그램에서 데이터가 어떻게 나뉘는지, 매퍼가 어떻게 작업을 분리하는지, 그리고 결과가 나오기 전에 최종적으로 리듀서가 어떻게 요약하는지를 볼 수 있다. Hadoop Mapreduce의 진정한 매력은 클러스터의 모든 노드에 대해 병렬화 되어 페타바이트 단위의 데이터를 몇 시간 안에 정렬 가능하다는 것이다.
- Mapping : 입력 데이터는 HDFS 상의 블록단위로 분할 저장된 파일이다(Splitting). Mapreduce 프레임워크는 각 Map Task를 Slave Node에게 할당한다. 각 Map Task는 동일한 노드에 저장되어 있는 블록을 처리한다. 입력 데이터로부터 key-value쌍을 1개씩 꺼내어 사용자가 정의한 Mapping 처리를 수행하고, 처리 결과도 key-value 형태로 출력한다.
- Shuffling : Mapping 처리가 끝나면 프레임워크가 같은 키를 가진 데이터를 같은 노드로 모아준다. 이때 Slave Node 사이에 네트워크를 통한 전송이 발생한다는 것을 인지해야 한다.
- Reducing : Shuffling을 통해 key 별로 모아진 데이터를 처리한다.
Hadoop Yet Another Resource Negotiator(YARN)
YARN은 그래프 처리, 상호작용이 가능한 처리, 스트림 처리, 하둡 분산 파일 시스템에 저장돼 있는 데이터를 실행하고 처리하기 위한 배치 처리와 같은 데이터 처리 엔진을 제공한다. 자원 관리와 별개로 YARN은 작업 스케줄링도 한다. YARN은 또 다른 성장하는 기술로 하둡의 기능을 확장해 HDFS와 경제적인 클러스터의 장점을 누릴 수 있도록 한다.
Hadoop YARN 구조
아파치 TARN은 하둡의 데이터 운영체제이기도 하다. 하둡의 아키텍처는 맵리듀스에 국한되지 않는 다목적 데이터 처리 플랫폼을 제공한다. 하둡이 Mapreduce 외에 특별히 만들어진 데이터 처리 시스템을 처리할 수 있도록 한다. 하둡이 설치된 같은 하드웨어에서 여러 개의 다른 프레임워크를 실행할 수 있다.
YARN에서는 Resource Management와 job scheduling/monitoring 기능이 분리되어 있다.
- Resource Manager : 실행 중인 응용 사이에서 리소스를 중재한다.
- Node Manager : 컨테이너가 사용하는 리소스를 모니터링하고, 내용을 Resource Manager에게 보고한다.
- Application Master : Resource Manager와 리소스를 협상하고, Node Manager와 협업하여 일하고 모니터링한다.
결론
DataLit에서는 내용 자체가 너무 축약되어 있고, 자세한 내용까진 파악하기 힘들어서 하둡의 역할이나 구조 정도만 알아두도록 한다. 이후 하둡을 공부할 때, 이 배경을 바탕으로 자세한 공부를 진행할 것이다.
참고 링크
DataLit : 데이터 다루기
https://www.boostcourse.org/ds103/joinLectures/84465
14. 병렬분산 처리 시스템: HADOOP이란?
'프로젝트 단위 공부 > [부스트코스] DataLit : 데이터 다루기' 카테고리의 다른 글
Ch2-4. 쿠버네티스 (0) | 2024.02.24 |
---|---|
Ch2-3. PySpark (0) | 2023.08.01 |
Ch1-과제. 데이터 시각화 (0) | 2023.07.30 |
Ch1-12. 데이터 시각화 도구 (0) | 2023.07.24 |
Ch1-11. 차원 축소 (0) | 2023.07.24 |