빅데이터 분석 절차의 두 번째 단계는 수집된 데이터를 저장하고 관리하는 단계입니다기존에 사용되던 데이터 저장 방식은정형화된 데이터를 저장하는 형태가 주를 이루었습니다하지만빅데이터 환경에서는 정형화 되지 않은 비정형데이터를 저장할 수 있어야 하며대량의 데이터가 저장되야 하므로 기존의 데이터 저장·관리 기술 이외의 새로운 기술을 필요로 합니다.


 

하둡 분산 파일 시스템(HDFS, Hadoop Distributed File System)

빅데이터 환경에서 생산되는 데이터는 그 규모와 크기가 방대하기 때문에 기존의 파일 시스템 체계를 그대로 사용할 경우 많은 시간과 높은 처리비용을 필요로 합니다따라서 대용량의 데이터를 분석하기 위해서 두 대 이상의 컴퓨터를 이용하여 적절히 작업을 분배하고 다시 조합하며일부 작업에 문제가 생겼을 경우 문제가 발생 된 부분만 재 처리가 가능한 분산 컴퓨팅 환경을 요구합니다.

 

이를 지원하는 가장 대표적이며 널리 알려진 도구가 아파치(Apache)의 하둡(Hadoop)입니다하둡은 대용량의 데이터를 처리하기 위해 대규모의 컴퓨터 클러스터에서 동작하는 분산 애플리케이션 개발을 위한 자바 오픈소스 프레임워크입니다.

 

 컴퓨터 클러스터 (computer cluster)

 

여러대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합을 말합니다클러스터의 구성 요소들은 일반적으로 고속의 근거리 통신망으로 연결됩니다서버로 사용되는 노드에는 각각의 운영체제가 실행됩니다컴퓨터 클러스터는 저렴한 마이크로프로세서와 고속의 네트워크그리고 고성능 분산 컴퓨팅용 소프트웨어들의 조합 결과로 태어났습니다.

 

[ 대규모 리눅스 클러스터 ]

 

하둡 분산 파일 시스템(HDFS)은 아파치 하둡 프로젝트의 분산 파일 시스템으로 처음에는 아파치 너치(Apache Nutch) 웹 검색 엔진 프로젝트를 위한 하부 구조로 만들어졌었다아파치 너치는 확장 가능한 오픈 소스 웹 크롤러 소프트웨어 프로젝트입니다.

 

 

2002년 미국의 프로그래머인 더그 컷팅(Doug Cutting) 마이크 카페렐라(Mike Cafarella)가 검색 소프트웨어를 개발하면서 루씬(Lucene)이라는 텍스트 검색 엔진을 만들고 이에 대한 파서(Parser) 및 크롤러(Crawler)로서 너치(Nutch) 라는 프로젝트를 진행하였는데 너치에서 가져오는 웹 사이트에 대한 방대한 데이터를 처리할 길이 없어 난감해 하던 차에2004년 Google이 발간한 구글 파일 시스템(GFS, Google File System) 논문과 맵-리듀스(Map-Reduce) 논문을 기초로 하여 약 3~4개월간의 프로그래밍을 통해 하둡 분산 파일 시스템(HDFS) 너치에 이식하였습니다.

 

하둡 분산 파일 시스템(HDFS)은 대용량 파일을 저장하고 처리하기 위한 솔루션입니다하둡 분산 파일 시스템(HDFS)은 하나의 서버에서 동작하는 것이 아니라여러 개의 서버에 설치 되어서 서비스가 됩니다하둡 분산 파일 시스템(HDFS)만을 위한 별도의 스토리지가 필요 없으며일반 리눅스 장비에 탑재되어 있는 로컬 디스크를 이용해서 확장 가능한 유연성 있는 구조입니다.

 

기본적으로 하둡 분산 파일 시스템(HDFS)은 파일을 64M 단위의 블록으로 나누어서 저장합니다블록의 크기도 환경설정을 통해서 손 쉽게 변경이 가능합니다하둡 분산 파일 시스템(HDFS)은 분산 환경에 최적한 모듈로 파일을 안전하게 저장하기 위해서 같은 내용을 3개의 다른 장소에 분산해서 저장을 합니다.

 

[ 하둡 분산 파일 시스템(HDFS)의 구조 ]

 

하둡 분산 파일 시스템(HDFS) 클러스터는 일반적으로 네임노드(Namenode) 를 담당하는 서버가 한대 존재하며 노드에 붙은 스토리지를 관리하는 수 많은 데이터 노드(Datanode)로 구성이 됩니다내부적으로 파일은 하나 또는 그 이상의 블록으로 쪼개지며 이러한 블록들은 데이터노드의 집합 안에 저장됩니다.

 

네임노드는 파일과 디렉토리의 열기닫기이름 변경과 같은 파일 시스템 네임스페이스 동작을 수행합니다또한 데이터노드로의 블록 매핑을 판단합니다데이터노드는 파일 시스템의 클라이언트들로부터의 읽기와 쓰기 요청을 제공하는 역할을 담당합니다또한 네임노드의 지시에 따라 블록 생성삭제 그리고 복제를 수행합니다.

 

네임노드와 데이터노드는 컴퓨터에서 실행하도록 설계된 소프트웨어의 조각입니다이러한 컴퓨터들은 일반적으로 GNU 리눅스(Linux) 운영체제를 사용합니다. 하둡 분산 파일 시스템(HDFS)은 자바언어를 이용하여 만들어졌습니다자바를 지원하는 어떤 컴퓨터에서도 네임노드 또는 데이터노드 소프트웨어를 수행할 수 있습니다높은 이식성의 자바 언어의 사용은 하둡 분산 파일 시스템(HDFS)가 광범위한 컴퓨터에 배포될 수 있음을 의미합니다.

'빅데이터 > 빅데이터 처리' 카테고리의 다른 글

소셜분석(Social Analysis)  (0) 2017.08.03
텍스트마이닝(Text Mining)  (0) 2017.08.03
데이터마이닝(Data Mining)  (0) 2017.08.03
인-메모리(In-Memory)  (0) 2017.08.03
대량의 로그 파일 수집  (0) 2017.08.03

+ Recent posts