정보공간_1

[3기 신촌 윤기백] Hadoop의 이해 1편 - BigData와 HDFS 본문

IT 놀이터/Elite Member Tech & Talk

[3기 신촌 윤기백] Hadoop의 이해 1편 - BigData와 HDFS

알 수 없는 사용자 2013. 2. 5. 13:28

안녕하세요. 신촌멤버십 22-1기 윤기백입니다.


저는 Hadoop Map-Reduce에 대해서 제가 진행했던 프로젝트와 함께 소개해드리고자 합니다

이전 글에 Hadoop에 대한 설치 및 운용에 관한 글이 있기에

그 부분은 생략하 Hadoop에서 중요한 부분인 HDFS Map-Reduce에 대한 설명을 하겠습니다.


연재식으로 진행할 예정이며, 우선 처음에는 Big Data의 정의와 HDFS에 대해서 설명하겠습니다. 

1화 - BigData의 정의와 HDFS

2화 - Map-Reduce에 대한 소개 및 이해

3화 - 실제 프로젝트와 함께 적용해보는 Map-Reduce

4화 - Hadoop의 Eco System 및 정리(예정)


Big Data의 소개

 

우선 오픈소스인 Hadoop이 이슈화된 가장 큰 원인이라고 할 수 있는 Big Data에 대해서 

설명드릴 필요가 있어서 간단히 소개하겠습니다.


Big Data란 기존의 방식으로 저장/관리/분석하기 어려울 정도로 큰 규모의 자료를 의미합니다.

예를 들어서 설명하자면, 뉴욕 증권 거래소의 하루 거래 데이터는 약 1테라바이트이며

Facebook 100억장의 사진(수 페타바이트), 

통신사의 경우 시간당 10가바이트이상의 통화데이터(하루 240기가바이트)를 생성하고 있습니다.


BigData는 두가지 바라보는 방향에 따라 정의가 되곤 합니다.

DB 규모에 초점을 맞추면

일반적인 데이터베이스 SW가 저장,관리,분석할 수 있는 범위를 초과하는 규모의 데이터

를 의미하며(McKinsey, 2011), 

업무수행에 초점을 맞추면 

다양한 종류의 대규모 데이터로부터 저렴한 비용으로 가치를 추출하

(데이터) 초고속 수집,발굴,분석을 지원하도록 고안된 차세대 기술 및 아키텍쳐

를 말합니다.(IDC, 2011)


정리하면 단순히 큰 데이터만 아니라, 분석 가치가 있는 큰 데이터와 그 것을 분석하는 

도구, 플랫폼, 분석기법까지 포괄하는 용어가 Big Data입니다.

이러한 데이터를 분석하기 위해서는 기존의 방식으로는 엄청난 제원과 수의 서버가 필요하게 되며,

그렇기 때문에 Hadoop이 각광받게 된 것 입니다.  


보통, 이러한 BigData 4가지 순서에 의해서 처리/분석되어지곤 합니다.

1) SNS, , 시스템 로그 데이터로부터 Collecting하는 작업을 진행합니다

    이러한 데이터 Mining하는 단계라고 생각하면 됩니다.

2) 이렇게 수집된 데이터는 서버의 대용량 데이터 저장소에 저장하는 Store 단계를 진행합니다

    이 때는 분석에 용이하기 위해 Hadoop HDFS로 관리하게 됩니다.

3) 그리고 저장된 데이터는 병렬처리를 통해 Analysis 과정을 거칩니다

    정보를 Clustering, Classification, Sentimental Analysis, Indexing하는 작업을 

    분산 병렬 처리 프레임워크를 통해 의미있는 결과데이터를 추출해냅니다.

4) 그리고 다양한 뷰(, 검색엔진, 그래프)등을 통해 Reporting/Searching할 수 있게 합니다.


Hadoop HDFS의 소개

 

하둡의 분석시스템을 이해하기 위해서는 우선 HDFS (Hadoop Distributed File System)에 

대해서 아셔야 합니다.


HDFS  대용량 파일 저장과 처리를 위한 솔루션입니다. HDFS는 하나의 서버에서만 동작 하는 게 아니라 

여러 개의 서버에 설치되어서 서비스가 됩니다. HDFS만을 위한 별도의 스토리지가 필요 없고 

일반 Linux 장비에 탑재되어 있는 local disk를 이용해 수 천 대 이상 확장 가능한 구조입니다.


기본적으로 HDFS은 파일을 64M 단위의 블럭으로 나누어서 저장하는 방식을 사용합니.  

블럭의 사이즈는 환경설정을 통해서 조정 가능합니다.

( hdfs-default.xml파일에서 환경설정이 가능합니다. dfs.blocksize default 67108864로 설정되어

 있습니다. 이는 개발자가 원하는 사이즈로 수정가능합니다.

관련 설명 : http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml)

사용자에게는 하나의 파일로 보이지만 실제로는 여러 장치에 나누어져 존재하게 됩니. 하둡 분산 파일

시스템은 또한 사용자가 지정한 만큼의 복제를 해서 저장하게 되는데 일반적으로 3개의 복제를 만들어서 

저장하게 됩니다..

 

 HDFS클러스터는 마스터-워커 패턴으로 동작하는 두 종류의 노드를 가지는데, 하나의 네임노드 서버와 다의 데이터 노드 서버들로 구성됩니다. 네임 노드는 파일시스템의 네임스페이스를 관리하면서 클라이언트의 파일 접근 요청을 처리합니다. 하둡 파일 시스템에서 파일 데이터는 블록 단위로 나뉘어 여러 데이터 노드에 분산되어 저장됩니.

 또한 값싼 하드웨어 장비를 사용하기 때문에 서버의 장애가 발생할 수 있기 때문에 복제를 통해 가용성을 보장합니다. 데이터 노드는 클라이언트의 데이터 입출력 요청을 처리하며, 데이터는 블록이라는 단위로 저장되게 됩니다.

 

 HDFS의 이해가 되었으면, 이제 일반적인 파일시스템 연산을 수행해 봅시다.

User 영역에서 구현된 파일시스템이기 때문에 운영체제에서 제공하는 ls, cp, rm 과 같은 명령어와 호환이 되지 

않습니다. 위의 명령어는 시스템 콜을 통해 Kernel 영역에 동작하는 파일시스템의 기능을 호출하기 때문인데,

HDFS hadoop 명령어를 별도로 제공하여 User 영역에서 동작하는 파일시스템 데몬과 통신하여 사용자에

게 유사한 파일처리 기능을 제공합니다.


 그 중에서 dfs(fs) 옵션을 통해서 HDFS의 기본 기능을 사용자가 쉘 형태로 이용할 수 있게 도와줍니다.

 HDFS User영역의 파일시스템이므로, 로컬 파일시스템과 상호간 파일을 주고 받는 명령어가 필요합니다. put get 명령어가 이러한 기능을 제공하고, 사용은 다음과 습니다.그외 다른 명령에 대한 상세한 도움은 hadoop fs –help를 실행하여 얻을 수 있습니다.

 

1)    파일 복사 명령

hadoop fs –copyFromLocal input/input1.txt hdfs://localhost/input/input1.txt

위 명령어는 하둡 파일시스템의 쉘 명령어 fs를 호출하게 됩니다. 위에서 사용한 copyFromLocal이란 명령어는 로컬파일 input1.txt HDFS 인스턴스의 /input/input1.txt로 복사하게 됩니다.

2)   폴더 생성

hadoop fs –mkdir input

3)    파일리스트 확인

hadoop fs –ls


 

4)    파일 넣기, 불러오기

 


아래 몇몇 예에서 확인할 수 있듯이, 우리가 사용하는 쉘 명령어와 비슷하다고 생각하시면 됩니다.

이와 같이 File System이 복잡하게 구성되는 이유는 다음부터 설명할 Map-Reduce 와 큰 연관이 있다고 할 수 있습니다. 물론 분석솔루션외에 안전성, 비용등 여러가지가 고려된 설계이기도 합니다

다음에는 Hadoop의 Map-Reduce에 대해서 소개해보겠습니다. 


참고 자료/사이트 : http://hadoop.apache.org/

  http://bicdata.com

 Hadoop 완벽가이드 - 한빛미디어



감사합니다.