hadoop hdfs hadoop distributed file system
이 자습서에서는 Hadoop HDFS – Hadoop 분산 파일 시스템, 구성 요소 및 클러스터 아키텍처에 대해 설명합니다. 또한 Rack Awareness Algorithm에 대해서도 배웁니다.
이전 튜토리얼에서 배웠 듯이 빅 데이터의 가장 큰 문제는 기존 시스템에 저장하는 것입니다. 그리고 그 일부를 기존 시스템에 저장하더라도 빅 데이터를 처리하는 데 수년이 걸렸습니다.
몇 분 안에 원하는 결과는 몇 주 또는 몇 달이 걸렸고 그로 인해 결과의 가치가 손실되었습니다.
=> 여기에서 간단한 빅 데이터 교육 시리즈를 시청하십시오.
학습 내용 :
Hadoop 분산 파일 시스템
이 문제를 해결하거나이 문제에 대처하기 위해 이제 HADOOP이 있습니다. Hadoop은 다음을 사용하여이 빅 데이터 문제를 해결했습니다. Hadoop HDFS.
하둡 HDFS 빅 데이터의 저장 문제를 해결하고 Hadoop 맵 축소 빅 데이터의 일부 처리와 관련된 문제를 해결했습니다.
이제 우리는 Hadoop이 본질적으로 분산 파일 시스템을 가지고 있다는 것을 알고 있습니다. 그러나 왜?
가짜 Gmail 계정 생성기 및 비밀번호
Hadoop이 분산 파일 시스템 인 이유는 무엇입니까?
분산 파일 시스템이 무엇인지 이해하고 분산 파일 시스템의 장점을 이해해 보겠습니다.
분산 파일 시스템
1TB의 데이터를 읽는 예를 들어 보겠습니다. I / O (Input Output) 채널이 4 개 있고 각 채널의 대역폭이 100MB / s 인 우수한 고급 서버 인 서버가 있습니다.이 머신을 사용하면이 1TB 데이터를 43 개에서 읽을 수 있습니다. 의사록.
이제 정확히 이와 같은 10 대의 기계를 가져 오면 어떻게 될까요?
시간이 정확히 4.3 분으로 단축되었습니다. 전체 작업이 10 대의 시스템으로 나뉘어져 1TB의 데이터를 처리하는 데 걸리는 시간이 1/10로 단축 되었기 때문입니다.일즉, 4.3 분.
마찬가지로, BigData를 고려할 때 해당 데이터는 여러 데이터 청크로 분할되고 실제로 해당 데이터를 개별적으로 처리하므로 Hadoop이 중앙 파일 시스템 대신 분산 파일 시스템을 선택한 이유입니다.
Hadoop의 구성 요소
Hadoop HDFS에는 BigData 문제를 해결하기위한 두 가지 주요 구성 요소가 있습니다.
- 첫 번째 구성 요소는 빅 데이터를 저장하는 Hadoop HDFS입니다.
- 두 번째 구성 요소는 빅 데이터 처리를위한 Hadoop Map Reduce입니다.
이제 Hadoop의 아키텍처 (아래 이미지)를 보면 왼쪽 날개가있는 두 날개가 있습니다. '저장' 우익은 '처리' . 즉, 왼쪽 날개는 HDFS, 즉 Hadoop 배포 파일 시스템이고 오른쪽 날개는 YARN이고 Map Reduce는 처리 부분입니다.
HDFS를 사용하여 Hadoop을 통해 빅 데이터를 저장할 수 있고 YARN 및 Map Reduce를 사용하여 Hadoop을 사용하여 HDFS에 저장하는 것과 동일한 빅 데이터를 처리 할 수 있습니다.
위의 이미지에서 볼 수 있듯이 HDFS에는 두 개의 주요 데몬이 있거나 JAVA 프로세스, 즉 JVM (NameNode 및 DataNode) 내에서 실행되는 프로세스 또는 스레드로 호출 할 수 있습니다.
NameNode는 마스터 머신, 즉 기본적으로 고급 머신에서 실행되는 마스터 데몬이며 DataNode는 상용 하드웨어에서 실행되는 슬레이브 머신입니다. 슬레이브 머신이 마스터 머신 이상이므로 더 많은 데이터 노드가있을 수 있습니다.
따라서 항상 하나의 NameNode와 여러 DataNode가 슬레이브 머신에서 실행됩니다.
마찬가지로 다른쪽에는 다시 두 개의 데몬이있는 YARN이 있습니다. 하나는 마스터 머신에서 실행되는 리소스 관리자와 데이터 노드와 마찬가지로 슬레이브 머신에서 실행되는 노드 관리자입니다. 따라서 모든 슬레이브 머신에는 두 개의 데몬이 있습니다. 하나는 DataNode이고 다른 하나는 Node Manager입니다.
마스터 머신에는 NameNode가 실행되고 리소스 관리자가 실행됩니다. NameNode는 Hadoop 분산 파일 시스템의 데이터를 관리하고 리소스 관리자는이 저장된 데이터에 대한 처리 작업을 실행합니다.
네임 노드와 데이터 노드
HDFS 아키텍처에 대해 자세히 살펴볼 것이므로 실제로 HDFS를 완전히 실행하는 두 가지 주요 데몬이므로 NameNode와 DataNode가 무엇인지 이해하는 것이 중요합니다.
네임 노드
- 마스터 데몬입니다.
- 데이터 노드 관리 및 유지.
- 메타 데이터를 기록합니다.
- 모든 DataNode에서 하트 비트 및 블록 보고서를 수신합니다.
데이터 노드
- 슬레이브 데몬입니다.
- 실제 데이터가 여기에 저장됩니다.
- 클라이언트의 읽기 및 쓰기 요청을 제공합니다.
다이어그램에 집중하십시오.보실 수 있듯이 다양한 데이터 노드, 즉 상용 하드웨어를 제어하는 중앙 집중식 머신 네임 노드가 있습니다. 따라서 Name Node는 모든 DataNode를 유지하는 Master Daemon 일뿐입니다.
이 NameNode에는 DataNode에 저장된 데이터에 대한 모든 정보가 있습니다. 이름 자체에서 알 수 있듯이 DataNode는 Hadoop 클러스터에있는 데이터를 저장합니다.
NameNode는 어떤 DataNode에 저장된 데이터에 대한 정보 만 가지고 있습니다. 그래서 우리가 말할 수있는 것은 NameNode가 DataNode에 저장된 데이터의 메타 데이터를 저장한다는 것입니다.
DataNode는 또한 다른 작업을 수행합니다. 즉, 정기적으로 하트 비트를 NameNode로 다시 보냅니다. 하트 비트는 실제로 네임 노드에게이 데이터 노드가 아직 살아 있음을 알려줍니다.
예를 들어 데이터 노드는 하트 비트를 네임 노드로 되돌려 보내며, 이런 식으로 네임 노드는 이러한 데이터 노드가 살아 있다는 그림을 가지고 있으므로 네임 노드는 이러한 데이터 노드를 사용하여 더 많은 데이터를 저장하거나 데이터 노드에서 데이터를 읽을 수 있습니다.
이제 DataNode로 넘어 가면 DataNode는 실제로 Hadoop 클러스터로 전송되는 데이터를 저장하는 슬레이브 데몬 일뿐입니다. 이러한 DataNode는 클라이언트가 작성한 읽기 및 쓰기 요청을 실제로 제공하는 노드입니다.
누군가가 Hadoop 클러스터에서 데이터를 읽으려는 경우 이러한 요청은 실제로 데이터가있는 DataNode에서 처리됩니다.
Hadoop 클러스터 아키텍처
NameNode 및 DataNode와 관련된 이전 주제에서 우리는 용어를 사용했습니다. “Hadoop 클러스터”. 정확히 무엇인지 간단히 살펴 보겠습니다.
위의 이미지는 Hadoop 클러스터 아키텍처의 개요를 보여줍니다. Hadoop 클러스터는 마스터-슬레이브 토폴로지에 불과하며 맨 위에서 볼 수 있듯이 마스터 머신이 있습니다. 이 마스터 머신에는 네임 노드와 리소스 관리자 (예 : 마스터 데몬)가 있습니다.
마스터 머신은 코어 스위치를 사용하여 모든 슬레이브 머신에 연결됩니다. 이는 이러한 데이터 노드가 실제로 다양한 랙에 저장되어 있기 때문에 컴퓨터 1, 컴퓨터 2, 컴퓨터 3에서 컴퓨터 N까지 볼 수 있습니다. 이것은 슬레이브에 지나지 않습니다. 머신 또는 데이터 노드는 모두 하나의 랙에 있습니다.
'랙은 실제로 특정 위치에 물리적으로 존재하고 서로 연결되어있는 기계 그룹입니다.'
따라서 각 시스템 간의 네트워크 대역폭은 가능한 한 최소화됩니다. 마찬가지로 더 많은 랙이 있지만 동일한 위치에 존재하지 않기 때문에 'n'개의 랙을 가질 수 있으며 이러한 랙 내에 'n'개의 데이터 노드 또는 컴퓨터 또는 슬레이브 머신을 가질 수도 있습니다.
이것은 슬레이브 머신이 실제로 클러스터에 분산되어 있지만 동시에 서로 연결되는 방식입니다.
데이터는 HDFS에 어떻게 저장됩니까?
이제 우리는 HDFS가 어떻게 작동하는지에 대한 세부 사항으로 천천히 이동하고 있습니다. 여기에서는 HDFS의 아키텍처를 살펴 보겠습니다.
HDFS에 파일을 저장하면 데이터가 HDFS에 블록으로 저장됩니다. 전체 파일은 HDFS에 저장되지 않습니다. 아시다시피 Hadoop이 분산 파일 시스템이기 때문입니다.
따라서 파일 크기가 1PB (Peta Byte) 일 수있는 경우 Hadoop 클러스터가 상용 하드웨어를 사용하여 만들어지기 때문에 이러한 종류의 스토리지는 단일 시스템에 존재하지 않습니다. 단일 시스템의 하드웨어는 약 1TB 또는 2TB입니다.
따라서 전체 파일을 HDFS 블록이라고하는 데이터 청크로 분할해야합니다.
- 각 파일은 HDFS에 블록으로 저장됩니다.
- 각 블록의 기본 크기는 Apache Hadoop 2.x에서 약 128MB (이전 버전 즉, Apache Hadoop 1.x에서는 64MB)입니다.
- 구성 파일 (예 : Hadoop 패키지와 함께 제공되는 hdfssite.xml)을 사용하여 블록의 파일 크기를 늘리거나 줄이는 기능이 있습니다.
이 메커니즘을 이해하고 이러한 블록이 어떻게 만들어 지는지 예를 들어 보겠습니다.
여기에서 248MB의 파일을 고려해 보겠습니다. 이제이 파일을 분리하거나이 파일을 Hadoop Cluster 즉 2.x로 이동하면이 파일은 한 블록, 즉 128MB의 블록 A와 다른 블록 B로 분리됩니다. 120MB.
보시다시피 첫 번째 블록은 128MB입니다. 즉, 첫 번째 슬래브가 거기에서 잘 리므로 다른 블록은 128MB가 아닌 120MB입니다. 즉, 나머지 파일 크기가 더 작더라도 공간을 낭비하지 않습니다. 기본 블록 크기보다.
이제 우리 앞에 또 다른 문제가 있습니다. 즉, 각 블록의 단일 복사본을 갖는 것이 안전합니까?
C ++에 대한 정의되지 않은 참조
대답은 아니오입니다. 시스템이 실패 할 가능성이 있고 우리가 큰 문제를 겪을 수있는 상용 하드웨어에 불과하기 때문입니다. 이 문제를 극복하기 위해 Hadoop HDFS에는 좋은 솔루션이 있습니다. “블록의 복제”.
Hadoop 아키텍처 블록 복제
Hadoop은 Hadoop 분산 파일 시스템에 저장되는 모든 블록의 복제본을 생성하며 이는 Hadoop이 내결함성 시스템 인 방식입니다. 다른 DataNode 또는 다른 서버에 존재하므로 항상 해당 복사본을 선택할 수 있습니다.
블록 복제를 나타내는 위의 다이어그램에서 볼 수 있듯이 파일에는 5 개의 다른 블록이 있습니다. 블록 1, 2,3,4,5. 먼저 블록 1을 확인하면 노드 1, 노드 2 및 노드 4에서 블록 1의 복사본을 찾을 수 있습니다.
마찬가지로 블록 2에는 노드 2, 노드 3 및 노드 4와 같은 세 개의 복사본이 있으므로 각 노드의 블록 3, 4 및 5에 대해서도 동일합니다.
따라서 생성되는 복제본과 별도로 모든 블록은 세 번 복제되었습니다. 즉, Hadoop은 기본 복제 요소 3을 따르므로 Hadoop 배포 파일 시스템에 복사하는 모든 파일이 세 번 복제됩니다.
즉, 1GB의 파일을 Hadoop 배포 파일 시스템에 복사하면 실제로 3GB의 파일이 HDFS에 저장됩니다. 좋은 부분은 Hadoop의 구성 파일을 변경하여 기본 복제 요소를 변경할 수 있다는 것입니다.
Hadoop은 복제본을 저장할 위치를 어떻게 결정합니까?
Hadoop은 실제로 Rack Awareness의 개념을 따라 블록 복제본을 저장할 위치를 결정합니다.
다음은 랙 인식 알고리즘을 나타내는 다이어그램입니다.
Rack-1, Rack-2 및 Rack-3의 세 가지 랙이 있습니다.
Rack-1에는 4 개의 DataNode가 있고 Rack-2 및 Rack-3도 마찬가지입니다. 따라서 전체 Hadoop 클러스터는 3 개의 랙 모두로 구성되고 12 개의 DataNode가 있습니다.
Rack Awareness의 개념에 따라 Block A가 Rack-1의 DataNode 1에 복사되었다고 가정 해 보겠습니다. Block A의 복제본은 동일한 랙에서 생성 할 수 없으며 Rack-1을 제외한 다른 랙에서 생성해야합니다. 주 파일이 이미 Rack-1에 있습니다.
동일한 Rack-1에 블록 A의 복제본을 생성하고 전체 Rack-1이 실패하는 경우 데이터가 확실히 손실되므로 복제본은 Rack-1이 아닌 다른 랙에 저장되어야합니다.
따라서 복제본은 Rack-2의 DataNode 6 및 8에서 생성됩니다. 마찬가지로 블록 B와 블록 C의 경우 위의 다이어그램에 표시된 것처럼 복제본이 다른 랙에 생성됩니다.
결론
이 튜토리얼에서 다음과 같은 포인터를 통해 배웠습니다.
- Hadoop HDFS는 BigData의 스토리지 문제를 해결합니다.
- Hadoop Map Reduce는 BigData 처리와 관련된 문제를 해결합니다.
- NameNode는 마스터 데몬이며 DataNode를 관리하고 유지하는 데 사용됩니다.
- DataNode는 Slave Daemon이며 실제 데이터는 여기에 저장됩니다. 클라이언트의 요청을 읽고 쓰는 역할을합니다.
- Hadoop 클러스터에서 랙은 실제로 특정 위치에 물리적으로 존재하고 서로 연결된 시스템 그룹입니다.
- 각 파일은 HDFS에 블록으로 저장됩니다.
- 각 블록의 기본 크기는 Apache Hadoop 2.x에서 약 128MB (이전 버전 즉, Apache Hadoop 1.x에서는 64MB)입니다.
- 구성 파일 (예 : Hadoop 패키지와 함께 제공되는 hdfssite.xml)을 사용하여 블록의 파일 크기를 늘리거나 줄이는 기능이 있습니다.
HDFS에 대한 다음 자습서에서는 HDFS 아키텍처 및 읽기 및 쓰기 메커니즘에 대해 알아 봅니다.
=> 모두를위한 BigData 교육 시리즈를 보려면 여기를 방문하십시오.
추천 도서
- Hadoop이란? 초보자를위한 Apache Hadoop 자습서
- Unix의 파일 조작 : Unix 파일 시스템 개요
- 파일 조작을위한 Unix 특수 문자 또는 메타 문자
- Unix 파일 액세스 권한 : Unix Chmod, Chown 및 Chgrp
- Ranorex 테스트 스위트, 테스트 모듈 생성, 사용자 코드 파일, Xpath 및 데이터 바인딩
- VBScript 파일 개체 : CopyFile, DeleteFile, OpenTextFile, 읽기 및 쓰기 텍스트 파일
- C ++의 파일 입력 출력 작업
- Java 배포 : Java JAR 파일 생성 및 실행