HADOOP 이야기

하둡(HADOOP)이란?

소소한데이터엔지니어 2021. 4. 7. 22:55

출처 : http://hadoop.apache.org/ 메인이미지

하둡은 구글의 분산 파일 시스템(GFS) 논문이 공개된 후, 그 구조에 대응하는 체계로 개발되었습니다.

하둡은 기존에 단일 컴퓨터의 세상을 여러대의 컴퓨터 클러스터를 통해 분산 처리 할 수있게 해주는 프레임워크로
이러한 구성은 수천대의 컴퓨터를 확장, 축소를 쉽게 할 수 있으며, 데이터의 안정성 또한 뛰어나다고 합니다.
일반적으로 하둡의 기본이 되는 부분은 하둡파일시스템(HDFS)과 맵리듀스(MapReduce)프레임워크로 볼 수 있지만, 

현재는 스파크를 통해 배치작업 이 외의 실시간 처리를 담당하는 시스템과도 잘 어울립니다.

(예전에는 스파크와 하둡의 경쟁구도라는 말이 있었는데, 실제로는 공생 관계로 가는게 맞다고 생각합니다...)

 

클러스터 환경은 결국 여러대의 단일 컴퓨터를 다수의 병렬로 연결하는것과 같은 환경인데, 병렬 처리로 인한 문제는 여러가지 있습니다.

첫번째로, 다수의 컴퓨터를 사용할 경우, 단일일 경우보다 장애 발생확률이 높아질 것입니다.

이러한 문제를 해결하기 위해서 repelica 구성을 통해 파일을 여러개로 복사하여 분산배치를 기본으로 하게됩니다. 대신 하드웨어 용량의 비용이 많이 들어가게 되는데, 이러한 문제를 해결하기 위해서 하둡 3.0에서는 패리티 비트를 사용한 erasure coding 기법, parquet 파일로 저장 같은 방법들이 존재하는데, 이부분은 다른 챕터로 자세히 다룰 예정입니다.

두번째, 데이터 정합성 입니다.

대부분의 분석 작업은 분할된 데이터를 어떤 식으로든 결합할 필요가 있는데, 여러 디스크로 부터 읽어 드린 파일을 어떻게 결합하느냐는 문제입니다. 하지만 이부분은 하둡의 두번째 중요한 맵리듀스(mapreduse)를 통해 해결 할 수 있는데, 이부분도 중요한 부분이기 때문에 추후 다른 챕터로 만들어 더 자세하게 설명을 할 예정입니다. 간단한게 설명한다면, key, value 의 map 구조를 이용해 데이터를 병합하는 프로그래밍 모델을 제공한다는 것입니다. 

출처 : http://blog.newtechways.com/2017/10/apache-hadoop-ecosystem.html

위 그림은 하둡 에코 시스템(hadoop eco system)의 내용입니다. 

그림처럼 하둡을 기반으로한 여러 프로그램들이 존재한다는 것을 볼 수 있는데, 

대부분 hive, spark SQL 을 이용해 배치(batch) 작업을 진행하고, spark Streaming을 통해 실시간 처리 작업을 합니다.

(저는 현재 Pig Script를 사용하고 있습니다.)

 

아래는 Hadoop에서 중요한 3가지 개념 입니다.

 

Hadoop HDFS 

Hadoop Distributed File System 이라는 클러스터 구조를 가지는 파일 시스템.

블록 단위로 저장하며, 블록 단위는 128MB~1GB 까지 저장 가능하며, 장애 복구성을 목표로 하기 때문에 3 copy를 기본으로 

저장 프로세스를 가져가며, 만약 블록에 문제가 생길경우, 같은 내용의 다른 블록을 이용해 데이터를 복구 합니다.

이러한 이유로 HDFS는 1개의 파일이 기존용량보다 많은양의 용량 비용이 들어갑니다. 

또한 동작을 단순화하고 이를 통해 데이터 속도를 높이기 위해서 읽기 전용의 파일을 목적으로 하기 때문에 쓰기가 불가능합니다.

 

Hadoop MapReduce 

맵리듀스는 간단한 단위작업을 반복하여 처리하기 위한 프로그래밍 모델입니다. 간단한 단위작업을 처리하는 맵(Map)단계와 결과를 집계하는 리듀스(Reduce) 단계로 구성 됩니다.

 

Hadoop YARN 

얀(YARN)은 하둡 V1의 잡트레커(JobTracker)의 라이프사이클 관리와 클러스터 관리를 모두 담당하여 생기는 병목현상을 해결하기 위해 발생되었습니다. 얀(YARN)은 리소스 매니저(Resource Manager), 노드 매니저(Node Manager), 애플리케이션 마스터(Application Master), 컨테이너(Container) 4가지로 구성되며, 리소스 매니저와 노드 매니저는 자원관리를 애플리케이션 마스터와 컨테이너는 라이프사이클 관리를 맡아 처리힙니다. 

 

자세한 내용은 새로운 챕터에서 다시 설명합니다.

 

참조 사이트 :

 

위키독스 빅데이터 - 하둡, 하이브로 시작하기 (wikidocs.net/book/2203)

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

아파치 하둡 (hadoop.apache.org/)

 

Apache Hadoop