빅데이터 관련 포스팅을 보면 대부분 하둡 에코시스템(Hadoop eco-system)을 사용하는것을 볼 수 있습니다. Hadoop에 대해 알아보도록 하겠습니다.
빅데이터를 저장 및 처리하기 위해서는 하나의 컴퓨터로는 부족합니다. 그래서 여러 대의 컴퓨터를 이용해서 데이터를 분석하고 저장하는 플랫폼이 나오게 되었고, 하둡은 사실상 표준으로 사용되고 있습니다. 하둡을 사용함으로써 데이터를 분석하는 비용과 시간을 단축시킬 수 있게 되었습니다.
하둡의 두 가지 대표적인 기능은 HDFS, MapReduce 기능입니다. 이 포스팅에서는 HDFS에 대해 알아보도록 하겠습니다.
하둡 분산형 파일 시스템(이하 HDFS)는 대용량 파일을 여러 대의 컴퓨터에 나눠 저장하는 시스템입니다. 저사양 서버들을 이용하여 대용량의 분산파일시스템을 구축할 수 있어 대규모 데이터 저장 또는 배치 처리시 유용한 파일 시스템입니다. 하지만 고사양이나 트랜잭션에는 적합한 시스템이 아닙니다. 확장을 위해 고성능 고용량의 장비를 추가하기 보다는 컴퓨터 수를 추가하는 방식을 사용합니다.
HDFS는 위 그림과 같이 Namenode, Datanode, Secondary Namenode로 구성되어 있습니다.
메타데이터에는 다음과 같은 정보들이 담겨있습니다.
1. 파일명
2. 디렉토리(파일경로)
3. 데이터 블록 크기
4. 소유자/소속그룹
5. 파일속성
6. DataNode와 블록 대응 정보
(블록ID와 해당 블록을 보유한 DataNode 정보, DataNode가 hear beat를 3초 간격으로 전송할 때 자신이 관리하는 블록 정보를 report하는데 이를 바탕으로 전체 블록정보를 구축 및 복제 수가 충분한지 판단합니다.)
메타데이터는 다음 두 파일에 저장됩니다.
1. fsimage
메타데이터에 저장된 정보중 (위 목록에서) 1~5번을 포함한 정보입니다. 메모리상에 관리되어 있는 메타데이터 내의 파일 시스템 이미지입니다. 체크 포인트라고 불리는 타이밍에 NameNode의 로컬 파일 시스템에 생성됩니다.
2. edits
HDFS에서 파일 처리 시 로컬 파일 시스템에 생성되는 편집로그입니다. 메모리 상에서 관리되고 있는 fsimage에 적용됩니다.
주기적으로 Namenode에서 fsimage와 edits를 받아서 이들을 합치고, 갱신내용을 반영한 새로운 fsimage를 생성합니다.
생성한 fsimage를 Namenode로 전송합니다.
체크포인트를 실시하여 fsimage에 적용 완료 된 edits를 삭제함으로써 디스크 공간을 절약합니다.
즉, fsimage를 매 쓰기동작마다 갱신하는것이 아니라 주기적으로 업데이트 하는 것입니다. 위 과정을 통해, Namenode 재시작 시 fsimage에 대한 edits적용 크기를 줄일 수 있어 재시작 시간이 단축됩니다(edits파일은 크기제한이 없음). 또한, Namenode 장애가 발생한 경우, 메타 데이터를 보존함으로써 완전 데이터 손실을 방지합니다.
참고 사이트
https://velog.io/@ha0kim/2021-03-02
https://tourspace.tistory.com/223
https://yeomko.tistory.com/38
https://opentutorials.org/course/2908/17055
https://sjh836.tistory.com/43
https://velog.io/@kimdukbae/Hadoop
https://m.blog.naver.com/acornedu/222069158703
https://sungwookkang.com/1454
https://nathanh.tistory.com/91