요즘은 AI의 시대가 되었지만 10년전만 해도 빅데이터 열풍이 불었었다.
당시 사내에서 해주는 하둡교육을 들었었는데 지금은 1도 기억이 나지 않는다 하하;;
2013.06.04 - [BigDATA/Hadoop] - [하둡교육 2일차] Hadoop 설치
2013.06.05 - [BigDATA/Hadoop] - [하둡교육 3일차] Zookeeper
2013.06.05 - [BigDATA/Hadoop] - [하둡교육 3일차] Pig
그나마 블로그에 끄적인 내용 덕분에 살포시 기억이 난다 ㅎㅎ
여차저차해서 하둡을 다시 공부해보려고 한다.
오늘은 용어를 익혀보자!
하둡(Hadoop) : hadoop은 대용량 데이터를 분산처리 할 수 있는 자바 기반의 오픈소스 프레임워크 입니다.
HDFS(Hadoop Distributed File System) : HDFS는 대용량 파일을 분산된 서버에 저장하고,
많은 클라이언트가 저장된 데이터를 빠르게 처리할 수 있게 설계된 파일 시스템 입니다.
네임노드(NameNode) : NameNode는 HDFS의 모든 메타데이터를 관리하고,
클라이언트가 HDFS에 저장된 파일에 접근할 수 있게 해줍니다.
파일 시스템 이미지(fsimage) : HDFS의 네임스페이스(디렉토리명, 파일명, 상태정보)와 파일에 대한 블록 매핑 정보를
저장하는 파일입니다.
에디트로그(editLog) : HDFS의 메타데이터에 대한 모든 변화를 기록하는 로그 파일 입니다.
데이터노드(DataNode): HDFS에 데이터를 입력하면 입력 데이터는 32MB의 블록으로 나눠져서
여러 대의 데이터노드에 분산되어 저장됩니다.
책이 오래되긴했다 ㅋㅋㅋ 32MB라니..128MB가 디폴트인데..
보조 네임노드(SecondaryNameNode) : 보조 네임노드는 주기적으로 네임노드의 파일시스템에 이미지 파일을
갱신하는 역할을 수행합니다.
맵리듀스(MapReduce) : 맵리듀스 프로그래밍 모델은 과거부터 사용하던 알고리즘으로
맵(map)과 리듀스(reduce)라는 두 개의 메소드로 구성된 알고리즘 입니다.
대규모 분산 컴퓨팅 혹은 단일 컴퓨팅 환경에서 대량의 데이터를 병렬로 분석할 수 있게 합니다.
요즘은 맵리듀스는 느려서 사용하지 않는다고 한다.
맵리듀스 잡(MapReduce Job) : 클라이언트가 하둡으로 실행을 요청하는 맵리듀스 프로그램은
잡(job)이라는 하나의 작업 단위로 관리 됩니다.
잡트래커(JobTracker) : 잡트래커는 하둡 클러스터에 등록된 전체 잡의 스케줄링을 관리하고 모니터링 합니다.
(하둡 버전1) 2부터는 Job스케줄링은 리소스매니저가 한다.
태스크 트래커(TaskTracker) : Task Tracker는 사용자가 설정한 맵리듀스 프로그램을 실행하며,
하둡의 데이터노드에서 실행되는 데몬 입니다.
이때 map task와 reduce task 란? 사용자가 설정한 map과 reduce 프로그램 입니다.
입력 스플릿(input split) : 하나의 맵에서 처리해야 하는 입력 파일의 크기 입니다.
매퍼(Mapper) : 맵리듀스 프로그래밍 모델에서 맵 메서드의 역할을 수행하는 클래스 입니다.
매퍼는 key/value로 구성된 입력 데이터를 전달받아 이 데이터를 가공하고 분류해서 새로운 데이터 목록을 생성 합니다.
리듀서(Reducer) : 맵리듀스 프로그래밍 모델에서 리듀스 메소드의 역할을 수행하는 클래스 입니다.
리듀서는 map task의 출력 데이터를 입력 데이터로 전달받아 집계연산을 수행 합니다.
셔플(Shuffle) : map task와 reduce task 사이의 데이터 전달 과정 입니다.
콤바이너(Combiner) : 콤바이너 클래스는 매퍼의 출력 데이터를 입력 데이터로 전달 받아 연산을 수행 합니다.
이러한 연산을 통해서 셔플할 데이터의 크기를 줄이는데 도움을 줍니다.
파티셔너(Partitioner): 파티셔너는 map task의 출력 데이터가 어떤 reduce task로 전달 될지를 결정 합니다.
SSH(Secure Shell) : SSH는 네트워크상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고
다른 시스템으로 파일을 복사 할 수 있게 해주는 응용 프로토콜이나 응용 프로그램 또는 그 프로토콜을 의미 합니다.
하둡이 뭔지 구성요소는 뭔지 알아보자!
Hadoop은?
- Hadoop은 Big Data를 처리하고 분석하는데 사용되는 OpenSource Software Framework 입니다.
- 저렴한 하드웨어로 구성된 분산 시스템에서 페타바이트 규모의 데이터를 처리 할 수 있도록 설계
- data를 분석 할 때 나눠서 분석하고 합치면 되므로 빠르다.
- 저장된 데이터를 변경하는 것이 불가능하고, 실시간 데이터와 같은 신속한 작업에서는 부적합하다.
Hadoop 구성요소
- HDFS(Hadoop Distributed File System)
- Hadoop 분산 파일 시스템
- 데이터를 저장하는 분산형 file system으로 실시간처리보다는 배치처리 목적으로 설계 → 작업량이 작거나 빠른 데이터 응답이 필요한 작업에는 적합하지 않음
- 데이터를 여러 노드에 분산저장하여 처리 속도를 높입니다.
- NameNode와 DataNode로 구성
- NameNode
- 분산처리 시스템에서 Master를 담당
- Meta데이터 관리와 DataNode를 관리
- 각 DataNode에서 전달하는 Meta데이터를 받은 후 전체 노드의 Meta데이터 정보와 파일정보를 묶어서 관리
- file system을 유지하기 위해 Meta데이터를 관리
- 데이터를 저장할 시 기본적으로 블록단위로 들어옴 → 이때 들어온 블록들을 어느 DataNode에 저장 할 지를 정해준다고 이해하자.
- DataNode는 실제로 데이터를 저장하는 컴퓨터이기 때문에 에러가 날 수 있음 → NameNode와 DataNode는 3초마다 Heartbeat을 주고 받는다.
- DataNode에서 살아있다고 NameNode에 문서를 보내 알려준다. → 알림이 오지 않으면 문제가 생겼다고 판단.
- 문제가 생긴다면 다른 DataNode에 복제된 블럭을 가지고와서 사용하면 된다.
- DataNode에서 살아있다고 NameNode에 문서를 보내 알려준다. → 알림이 오지 않으면 문제가 생겼다고 판단.
- 분산처리 시스템에서 Master를 담당
- DataNode에 블록 단위로 나누어 데이터를 저장
- 주기적으로 NameNode에 Heartbeat와 Block Report를 전달한다.
- Heartbeat : DataNode의 동작여부를 판단하는데 이용
- Heartbeat이 전달되지 않는 DataNode는 동작하지 않는것으로 판단 → 더이상 데이터를 저장하지 않도록 설정한다.
- Block Report : Block의 변경사항을 체크하고, NameNode의 Meta 데이터를 갱신한다.
- Heartbeat : DataNode의 동작여부를 판단하는데 이용
- 주기적으로 NameNode에 Heartbeat와 Block Report를 전달한다.
- Meta 데이터는 전체적인 구조를 나타낸다.
- 파일이름, 파일크기, 파일생성시간, 파일 접근권한, 파일 소유자 및 그룹 소유자, 파일이 위치한 블록의 정보 등으로 구성된다.
- NameNode
- Hadoop 분산 파일 시스템
- MapReduce
- 대규모 데이터 집합을 처리하는 프로그래밍 모델
- 입력 데이터를 작은 작업 단위(Map)로 분산하고, 각 작업 단위를 병렬적으로 수행한 후 결과를 하나로 합칩니다.(Reduce)
- YARN(Yet Another Resource Negotiator)
- Hadoop Cluster의 자원관리 시스템
- Cluster의 자원을 Application에 할당하고 관리
- Container라는 단위로 자원을 관리
- Container는 CPU, Memory, Disk 등의 자원을 포함
- 기타 구성 요소
- HBase: NoSQL Database
- pig: 데이터 분석을 위한 Scripting 언어
- Hive: SQL과 유사한 언어를 사용하여 DataWareHouse 작업을 수행할 수 있도록 하는 도구
- Oozie: Hadoop 작업을 자동화하는데 사용되는 도구
- Flume: 로그 데이터 등을 실시간으로 수집하는데 사용되는 도구
아주 기초적인 내용을 학습을 했습니다.
좀 더 아키텍처를 파봅시다!:)
하둡 커미터 가즈아~~
'BigDATA > Hadoop' 카테고리의 다른 글
Hadoop을 학습해보자 ㅋㅋ (0) | 2024.07.09 |
---|---|
하둡명령어로 삭제하기(fs -rm) (0) | 2016.12.06 |
hadoop distcp (0) | 2016.10.28 |
(info) vagrant commands (0) | 2015.02.04 |
[꿀팁] 하둡 inputPath로 다중 File 작업하기 (0) | 2015.02.04 |