비디오: 하둡(HDFS) 의 파일 읽기, 쓰기 과정 쉽게 요약 2024
HDFS가 설정된 방식으로 대용량 파일을 큰 블록 (예: 128MB 측정)으로 분해하고, HDFS는 이러한 파일의 내용을 인식하지 못합니다.
YARN에서 MapReduce 작업이 시작되면 Resource Manager (클러스터 리소스 관리 및 작업 스케줄링 기능)은 Job Master의 데몬을 생성하여 작업의 라이프 사이클을 관리합니다 (Hadoop 1에서는 JobTracker가 작업 스케줄링 및 클러스터 리소스 관리는 물론 개별 작업을 모니터링했습니다).
데이터 블록 처리 방법을 살펴보기 전에 Hadoop이 데이터를 저장하는 방법을 자세히 알아야합니다. Hadoop에서 파일은 개별 레코드로 구성되며 매퍼 작업별로 하나씩 처리됩니다. 예를 들어, 샘플 데이터 세트에는 1987 년에서 2008 년 사이에 완료된 미국 내 항공편에 대한 정보가 들어 있습니다.
샘플 데이터 세트를 다운로드하려면 VM 브라우저에서 Firefox 브라우저를 열고 dataexpo 페이지로 이동하십시오.
매년 1 개의 커다란 파일이 있으며, 모든 파일 내에서 각각의 개별 라인은 단일 항공편을 나타냅니다. 즉, 한 줄은 하나의 레코드를 나타냅니다. 이제 Hadoop 클러스터의 블록 크기가 64MB라는 것을 기억하십시오. 이는 가벼운 데이터 파일이 정확히 64MB의 청크로 분할된다는 것을 의미합니다.
문제가 보이십니까? 각 맵 작업이 특정 데이터 블록의 모든 레코드를 처리하는 경우 블록 경계에 걸쳐있는 레코드는 어떻게됩니까? 파일 블록은 정확히 64MB (또는 블록 크기를 설정하는 모든 것)이며, HDFS는 파일 블록 내부에 무엇이 있는지에 대한 개념이 없으므로 레코드가 다른 블록으로 넘칠 때를 측정 할 수 없습니다.이 문제를 해결하기 위해 Hadoop은
입력 스플릿
이라는 파일 블록에 저장된 데이터의 논리적 표현을 사용합니다. MapReduce 작업 클라이언트는 입력 분할을 계산할 때 블록의 첫 번째 전체 레코드가 시작되는 위치와 블록의 마지막 레코드가 끝나는 위치를 파악합니다.블록의 최종 레코드가 불완전한 경우, 입력 분할은 다음 블록에 대한 위치 정보 및 레코드를 완료하는 데 필요한 데이터의 바이트 오프셋을 포함한다.
이 그림은 데이터 블록과 입력 분할 간의 이러한 관계를 보여줍니다. 애플리케이션 마스터 데몬 (또는 Hadoop 1에있는 경우 JobTracker)에서 작업 클라이언트 대신 입력 스플릿을 계산하도록 구성 할 수 있습니다. 이렇게하면 많은 데이터 블록을 처리하는 작업이 더 빠릅니다. MapReduce 데이터 처리는 이러한 입력 분할 개념에 의해 주도됩니다. 특정 응용 프로그램에 대해 계산 된 입력 스플릿 수는 매퍼 작업 수를 결정합니다. 이러한 매퍼 작업은 가능한 경우 입력 분할이 저장되는 슬레이브 노드에 할당됩니다. Resource Manager (또는 Hadoop 1에있는 경우 JobTracker)는 입력 분할이 로컬에서 처리되도록 최선을 다합니다.