Presentation is loading. Please wait.

Presentation is loading. Please wait.

Hadoop 김연왕 2007745012.

Similar presentations


Presentation on theme: "Hadoop 김연왕 2007745012."— Presentation transcript:

1 Hadoop 김연왕

2 Hadoop 예제 (하둡 분산 파일시스템 – HDFS설계)
방식으로 지원하여 매우 커다란 파일들을 저장할 수 있도록 설계된 파일 시스템이다. 매우 커다란파일 요즘 운영되고 있는 하둡 클러스터들은 페타바이트의 데이터를 보유하고있다. 데이터 엑세스를 스트리밍방식으로 지원 HDFS는 가장 효율적인 데이터 처리 패턴인, 한 번 쓰고 여러 번 읽는 아이디어로 구축되었다. 범용 하드웨어 하둡을 고가의 신뢰도 높은 하드웨어에서 실행할 필요가 없다. 노드장애가 발생 할 확률이 높은 범용 하드웨어의 클러스터에서 실행되게 설계되었다. 빠른 응답시간의 데이터 엑세스 HDFS는 높은 데이터 처리량을 제공하기 위해 최적화 되어있고, 이를 위해 응답시간을 희생하였다. 2 / 12

3 Hadoop 예제 (하둡 분산 파일시스템 – HDFS설계)
많은 수의 작은 파일 수백만 개의 파일을 저장하기는 괜찮아 보이지만 수십억 개의 파일은 현재 하드웨어의 용량을 넘어 선다. 다중 라이터, 임의의 파일 수정 HDFS의 파일들은 단일 라이터에 의해 쓰인다. 쓰기작업은 항상 파일의 끝에서 이루어진다. 3 / 12

4 Hadoop 예제 (하둡 분산 파일시스템 – HDFS개념)
블록 디스크는 블록 크기를 가지며, 블록은 한 번에 읽고 쓸 수 있는 데이터의 최대량이다. 단일 디스크를 위한 파일 시스템은 블록들 안에 있는 데이터를 관리함으로써 구축된다. 디스크블록은 기본적으로 512 바이트이고, 파일시스템 블록은 전형적으로 수 킬로바이트 크기다. HDFS 역시 블록개념을 가지고 있다.그러나 블록은 기본적으로 64MB와 같이 훨씬 커다란 단위다. HDFS 파일들은 블록 크기의 chunk로 쪼개 지고, 독립적인 단위로 저장된다. 블록은 HDFS블록을 의미한다. HDFS블록이 커야 하는 이유? HDFS블록은 디스크 블록에 비해 크다. 그 이유는 탐색의 비용을 최소화 하기 위함이다. 일반적인 디스크 파일 시스템과 같이 HDFS의 fsck 명령어는 블록을 관리한다. Hadoop fsck / -files –blocks 실행하면, 그 파일 시스템에 있는 각 파일을 구성하는 블록을 나열할 것이다. 4 / 12

5 Hadoop 예제 (하둡 분산 파일시스템 – HDFS개념)
5 / 12

6 Hadoop 예제 (하둡 분산 파일시스템 – 네임노드와 데이터노드)
HDFS클러스터는 마스터 - 워커 패턴으로 동작하는 두 종류의 노드를 가지는데,하나의 네임노드 와 많은 수의 데이터노드로 구성된다. 네임노드는 파일시스템의 네임스페이스를 관리한다. 그것은 파일시스템 트리와 그 트리 안에 있는 모든 파일과 디렉터리에 대한 메타데이터를 유지한다. 데이터노드들은 클라이언트나 네임노드의 요청이 있을 때 블록들을 저장하고 탐색하고, 주기적으로 저장하고 있는 블록의 리스트를 네임노드로 보고한다. 네임노드없이 파일시스템은 사용될 수 없기때문에, 네임노드는 장애복구 능력을 갖추는 것이 중요하다. 하둡은 이를 위해 두 가지 메커니즘을 제공한다. 첫번째로 파일시스템 메타 데이터의 지속상태를 보완해주는 파일들을 백업한다. 네임노드가 메타데이터의 지속상태를 다중 파일시스템에 쓰도록 구성할수있다. 선택사항은 원격의 NFS마운트에도 쓰고 동시에 로컬 디스크에도 쓴다. 두번째로 보조네임노드를 운영하는것인데 , 주네임노드와는 다르게 동작한다. 주네임노드의 상태에 뒤처지기 때문에, 총체적 장애가 발생하면 어느정도 손실이 발생한다. 복구과정은 주 네임노드에 메타데이터파일을 보조네임노드로 복사하여 최신 네임스페이스 이미지로 병합하고 새로운 주 네임노드에서 실행한다. 6 / 12

7 Hadoop 예제 (하둡URL로부터 데이터 읽기)
하둡 파일시스템으로부터 파일 하나를 읽기 위한 가장 간단한 방법 중 java.net.URL 객체를 사용하여 데이터를 읽기 위한 하나의 스트림을 여는것이다. InputStream in = null; try { In = new URL(“hdfs://host/path”).openStream(); // in을 처리한다. } finally { IOUtils.closeStream(in); } 여기서 자바가 하둡의 hdfs URL스킴을 인식하기 위해서는 약간의 작업이 더필요하다. Hdfs스킴을 인식하기 위한 작업은 FsUrlStreamHandlerFactory의 인스턴스와 함께 URL클래스의 setURLStreamHandlerFactory 메소드를 호출하여 수행된다. 이 메소드는 JVM 하나당 한번씩만 호출할 수 있기 때문에 일반적으로 정적블록에서 실행된다. 7 / 12

8 Hadoop 예제 (하둡URL로부터 데이터 읽기)
import java.io.InputStream; import java.net.URL; import org.apache.hadoop.fs.FsUrlStreamHandlerFactory; import org.apache.hadoop.io.IOUtils; public class URLCat { static{ URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()); } public static void main(String[] args) throws Exception{ InputStream in =null; try{ in=new URL(args[0]).openStream(); IOUtils.copyBytes(in, System.out, 4096, false); }finally{ IOUtils.closeStream(in); 8 / 12

9 Hadoop 예제 (하둡URL로부터 데이터 읽기)
Hadoop fs –copyFromLocal test.txt hdfs://localhost/user/tom/test.txt Test.txt 파일을 생성하고 hdfs로 파일을 복사 하둡을 사용하여 코딩을 했다면 하둡 홈 폴더 내에 hadoop – core 파일이 필요하다. 클래스 패스를 지정하고 hadoop - core 파일을 써준 다음 –d 옵션으로 파일이 저장 될 위치를 정해주면 된다. javac <options> <source files> 9 / 12

10 감사합니다.


Download ppt "Hadoop 김연왕 2007745012."

Similar presentations


Ads by Google