Hadoop의 정의

Posted by MD워시퍼
2012. 4. 28. 13:56 Study/Cloud
728x90

ㅇ 분산파일시스템 : 네트워크로 연결된 서버들의 스토리지를 관리하는 파일시스템


ㅇ HDFS : Hadoop Distributed File System


ㅇHDFS의 특징

 - 매우 커다란 파일로 보유함

 - Data Access를 스트리밍 방식으로 지원함n

 - 범용 하드웨어 (<-> 고가의 신뢰도 높은 하드웨어)

 - 빠른 응답시간의 Data Access에는 적합하지 않음

 - 많은 수의 작은 파일은 효율적이지 않음

 - 다중 라이터 및 임의의 파일 수정은 적합하지 않음 (쓰기 작업은 항상 파일의 끝에서 이루어짐)


ㅇ HDFS 블록

 - 블록 : 한번에 읽고, 쓸 수 있는 데이터의 최대량

 - 추상적인 개념이기에 생기는 이점 :

① 파일 하나가 네트워크에 있은 어떤 하나의 디스크보다 더 커질 수 있다.

파일 하나를 동일 디스크에 저장할 필요없이, 클러스터 내에 어떠한 디스크에도 저장할 수 있다

② 파일보다는 블록을 사용

  - 스토리지 관리 ( 블록은 고정크기이기 때문에 시스템의 저장용량을 계산하기 쉽다 )

  - 메타데이터 관리 ( 파일권한 정보같은 메타데이터를 저장할 필요가 없으므로, 독립적인 관리 가능)

③ 복제를 효율적으로 수행 가능


ㅇ NameNode & DataNode

  1. NameNode(일을 명령함)

- Manage Namespace for File System

- 파일시스템 트리와 그 트리 안에 있는 모든 파일과 디렉토리의 메타데이터를 유지

- Namespace image와 edit log 형태의 두 개의 파일에 지속적으로 저장함

- 파일과 디렉토리의 open, close, rename 그리고 DataNode와 block의 mapping을 결정

  2. DataNode(일을 수행함)

- Client가 요구하는 Read, Write, 그리고 NameNode의 생성과 삭제, 복제와 같은 명령을 수행한다

- 파일시스템 메타데이터의 지속상태를 보완해주는 파일들을 백업합


ㅇ 기본적인 파일시스템 연산

  - fs : 하둡 파일시스템의 쉘 명령어

  - -copyFromLocal : 로컬시스템에 있는 파일을 hadoop에 올린다

  - - ls : ls -l 과 같은 기능


ㅇ 인터페이스

  1. 쓰리프트

    - 하둡 파일시스템을 아파치 쓰리프트 서비스로 제공

    - 동일한 클라이언트 코드에서 하둡 파일시스템의 다른 버전으로 엑세스할 필요가 있을 때 좋음

  2. C => libhdfs 를 사용

    - JNI(Java Native Interface)를 사용

    - libhdfs/docs/api 폴더에서 찾을 수 있음

    - http://wiki.apache.org/hadoop/LibHDFS 를 참조바람

  3. 퓨즈(FUSE : Filesystem in Userspace)

    - 사용자 공간에서 구현한 파일시스템을 유닉스 파일시스템으로 통합할 수 있도록 지원

    - Fuse-DFS contrib :모든 하둡 파일시스템이 표준 파일시스템으로 마운트될 수 있도록 지원

  4. WebDAV(웹다브)

    - 파일 편집과 수정을 지원하기 위한 HTTP의 확장

    - WebDAV shares : 대부분 운영체제가 지원하는 파일시스템처럼 마운트 될 수 있음

    - http://issues.apache.org/jira/browse/HADOOP-496

  5. HTTP

    - 디렉토리 리스팅과 데이터를 검색하기 위한 읽기전용 인터페이스를 제공함

    - 디렉토리 리스팅 : 네임노드의 내장된 웹서버(50070) 에 의해 XML 형태로 제공

    - 파일 데이터 : 데이터노드의 웹서버(50075)로부터 스트리밍 됨

  6. FTP

    - 기존 FTP 클라이언트를 사용함으로 HDFS로 데이터를 송수신하기 위한 편리한 방법 제공


ㅇ Java Interface

  - DistributedFileSystem : HDFS 구현

  - FileSystem 추상 클래스 : 파일시스템 사이의 이식성 유지