차례:
- NameNode 시작 및 조작
- 데이터 쓰기
- HDFS에서 파일을 읽으려면 다음 프로세스를 수행해야합니다.
- 이러한 불규칙한 분포는 개별 슬레이브 노드에 대한 수요가 불균형 해지기 때문에 성능에 나쁜 영향을 줄 수 있습니다. 데이터가 거의없는 노드는 완전히 사용되지 않습니다. 블록이 많은 노드는 과도하게 사용됩니다. (
비디오: Hadoop Rack Awareness 2024
NameNode는 Hadoop 분산 파일 시스템 (HDFS)의 주소록 역할을합니다. 어떤 블록이 개별 파일을 구성하는지뿐만 아니라 이들 블록과 복제본이 각각 저장되는 위치도 포함됩니다. 사용자가 HDFS에 파일을 저장하면 파일은 데이터 블록으로 분할되고 이러한 데이터 블록의 사본 3 개가 Hadoop 클러스터 전체의 슬레이브 노드에 저장됩니다.
추적해야 할 많은 데이터 블록이 있습니다. 예상대로 바디가 어디에 묻혀 있는지 알면 NameNode가 Hadoop 클러스터에서 매우 중요한 구성 요소가됩니다. NameNode를 사용할 수 없으면 응용 프로그램은 HDFS에 저장된 모든 데이터에 액세스 할 수 없습니다.
다음 그림을 보면 마스터 노드 서버에서 실행중인 NameNode 데몬을 볼 수 있습니다. 데이터 블록 및 해당 파일을 다루는 모든 매핑 정보는 이름이 지정된 파일에 저장됩니다.
HDFS는 저널링 파일 시스템입니다. 즉, 편집 로그가 병합 된 마지막 체크 포인트 이후 이벤트를 추적하는 편집 저널에 모든 데이터 변경 내용이 기록됩니다. HDFS에서 편집 저널은 NameNode에 저장된 파일로 유지됩니다.
NameNode 시작 및 조작
NameNode의 작동 방식을 이해하려면 시작하는 방법을 살펴 보는 것이 도움이됩니다. NameNode의 목적은 처리해야하는 데이터 블록의 수와 저장 위치를 추적하기 위해서 애플리케이션에서 사용할 수있는 모든 블록 위치 및 블록 - 파일 매핑이 필요하다는 것입니다. 램.
NameNode가 취하는 단계입니다. NameNode가 시작된 후에 필요한 모든 정보를로드하려면 다음과 같이하십시오.
-
NameNode는 파일을 메모리로로드합니다.
-
NameNode는 파일을로드하고 저널링 된 변경 사항을 다시 재생하여 이미 메모리에있는 블록 메타 데이터를 업데이트합니다.
-
DataNode 디먼은 NameNode 블록 보고서를 송신합니다.
각 슬레이브 노드에는 거기에 저장된 모든 데이터 블록을 나열하고 각 블록의 상태를 설명하는 블록 보고서가 있습니다.
시작 프로세스가 완료되면 NameNode는 HDFS에 저장된 모든 데이터의 전체 그림을 가지며 Hadoop 클라이언트로부터 응용 프로그램 요청을받을 준비가됩니다.
클라이언트 요청에 따라 데이터 파일을 추가하고 제거하면 변경 사항이 종속 노드의 디스크 볼륨에 기록되고 파일에 대한 저널 업데이트가 수행되며 NameNode의 메모리에 저장된 블록 위치와 메타 데이터에 변경 사항이 반영됩니다.
클러스터의 수명 기간 동안 DataNode 데몬은 3 초마다 NameNode 하트 비트 (빠른 신호)를 전송하여 활성화되었음을 나타냅니다.(이 기본값은 구성 가능합니다.) 6 시간마다 (다시 구성 가능한 기본값) DataNode는 NameNode에 노드에있는 파일 블록을 요약 한 블록 보고서를 보냅니다. 이 방법으로 NameNode에는 항상 클러스터에서 사용 가능한 자원의 현재보기가 있습니다.
데이터 쓰기
HDFS에서 새 파일을 만들려면 다음 프로세스를 수행해야합니다.
-
클라이언트가 NameNode에 새 파일을 만들도록 요청을 보냅니다.
NameNode는 필요한 블록 수를 결정하며 클라이언트는 클러스터에 새 파일 블록을 생성하기 위해 임대 를 부여받습니다. 이리스의 일부로 클라이언트는 작성 태스크를 완료하는 데 시간 제한이 있습니다. 이 시간 제한은 저장 공간이 실패한 클라이언트 응용 프로그램에 의해 차지되지 않도록합니다.
-
그러면 클라이언트는 NameNode에 의해 할당 된 임대를 사용하여 파일 블록의 첫 번째 복사본을 슬레이브 노드에 씁니다. NameNode는 쓰기 요청을 처리하고 파일 블록과 해당 복제본을 작성해야 할 위치와 가용성과 성능의 균형을 결정합니다. 파일 블록의 첫 번째 복사본은 하나의 랙에 쓰여지고 두 번째 및 세 번째 복사본은 첫 번째 복사본과 다른 랙에 있지만 동일한 랙에있는 다른 슬레이브 노드에 쓰여집니다. 이러한 구성은 동일한 장애 지점에 데이터 블록이 없음을 보장하면서 네트워크 트래픽을 최소화합니다.
각 블록이 HDFS에 기록 될 때 특수 프로세스는 나머지 복제본을 NameNode로 식별 된 다른 슬레이브 노드에 씁니다.
-
DataNode 데몬이 파일 블록 복제본이 생성되었음을 확인한 후 클라이언트 응용 프로그램은 파일을 닫고 NameNode에 알리고 개방 대기열을 닫습니다.
-
데이터 읽기
HDFS에서 파일을 읽으려면 다음 프로세스를 수행해야합니다.
클라이언트가 NameNode에 파일 요청을 보냅니다. NameNode는 어떤 블록이 관련되어 있는지를 결정하고, 블록과 클라이언트의 가장 근접한 접근 경로를 기준으로 가장 효율적인 액세스 경로를 선택합니다.
-
그러면 클라이언트는 NameNode에 지정된 주소를 사용하여 블록에 액세스합니다.
Hadoop 클러스터의 데이터 균형 조정
-
시간이 지남에 따라 균일하지 않은 데이터 처리 패턴 (일부 슬레이브 노드에 더 많은 데이터가 기록 될 수 있음) 또는 노드 장애의 조합으로 인해 데이터가 랙 전체에 고르지 않게 분산 될 수 있습니다 및 Hadoop 클러스터의 슬레이브 노드로 구성됩니다.
이러한 불규칙한 분포는 개별 슬레이브 노드에 대한 수요가 불균형 해지기 때문에 성능에 나쁜 영향을 줄 수 있습니다. 데이터가 거의없는 노드는 완전히 사용되지 않습니다. 블록이 많은 노드는 과도하게 사용됩니다. (
참고:
남용 및 과소 사용은 CPU 또는 RAM이 아닌 디스크 활동을 기반으로합니다.) HDFS에는 남용 된 슬레이브 노드의 블록을 사용량이 적은 슬레이브 노드로 재 분산시키는 밸런서 유틸리티가 포함되어 있습니다. 다른 슬레이브 노드와 랙에있는 블록. Hadoop 관리자는 HDFS 상태를 정기적으로 확인해야하며 데이터가 고르지 않게 분산되면 밸런서 유틸리티를 호출해야합니다. NameNode 마스터 서버 디자인
NameNode 데몬을 실행하는 마스터 서버는 미션 크리티컬하기 때문에 슬레이브 노드와는 다른 하드웨어 요구 사항을 필요로합니다. 가장 중요한 점은 중단 가능성을 최소화하기 위해 엔터프라이즈 급 구성 요소를 사용해야한다는 것입니다. 또한 HDFS에 저장된 모든 데이터 블록에 대한 모든 메타 데이터 및 위치 데이터를 메모리에로드하기에 충분한 RAM이 필요합니다.