복붙노트

[HADOOP] Hadoop HDFS의 블록 개념

HADOOP

Hadoop HDFS의 블록 개념

하둡의 블록에 관한 질문이 있습니다. Hadoop은 HDFS를 사용하여 특정 크기의 블록을 만듭니다.

첫 번째 질문 NTFS와 같은 일반 파일 시스템의 하드 디스크에 블록이 실제로 존재합니까? 즉, 호스팅 파일 시스템 (NTFS)의 블록을 볼 수 있습니까? 아니면 hadoop 명령을 사용하여 볼 수 있습니까?

두 번째 질문 hadoop은 작업을 실행하기 전에 블록을 만듭니다. 즉 파일이있을 때마다 처음부터 블록이 존재합니다. 또는 hadoop은 작업을 실행할 때만 블록을 만듭니다.

세 번째 질문 분할 횟수와 상관없이 분할 전에 (예 : InputFormat 클래스의 getSplits 메서드) 블록을 결정하고 생성합니까?

넷째 질문 작업을 실행하기 전후의 블록은 구성에 따라 다르거 나 구성에 따라 다르며, 파일을 저장하기위한 블록과 파일을 그룹화하여 작업을 수행하기 위해 네트워크를 통해 데이터 노드로 전송하는 블록의 두 가지 유형이 있습니까?

해결법

  1. ==============================

    1.예. 블록은 물리적으로 존재합니다. hadoop fsck / path / to / file -files -blocks와 같은 명령을 사용할 수 있습니다

    예. 블록은 물리적으로 존재합니다. hadoop fsck / path / to / file -files -blocks와 같은 명령을 사용할 수 있습니다

    블록을 보는 명령에 대해서는 아래 SE 질문을 참조하십시오.

    hadoop에서 파일의 블록 수보기

    하둡 = 분산 스토리지 (HDFS) + 분산 처리 (MapReduce & Yarn).

    MapReduce 작업은 입력 분할에서 작동합니다. => 입력 분할은 데이터 노드의 데이터 블록에서 생성됩니다. 파일의 쓰기 작업 중에 데이터 블록이 생성됩니다. 기존 파일에서 작업을 실행중인 경우 작업 전에 데이터 블록이 미리 작성되고 맵 조작 중에 InputSplits가 작성됩니다. 데이터 블록을 물리적 엔티티로, InputSplit을 논리적 엔티티로 생각할 수 있습니다. Mapreduce 작업은 입력 데이터 블록을 변경하지 않습니다. 감속기는 출력 데이터를 새로운 데이터 블록으로 생성합니다.

    매퍼 프로세스 입력이 분리되어 출력을 Reducer 작업으로 방출합니다.

    실제 DFS 블록에서 입력을 이미 사용할 수 있습니다. MapReduce 작업은 InputSplit에서 작동합니다. 블록과 InputSplits는 같거나 같지 않을 수 있습니다. 블록은 물리적 엔티티이고 InputSplit은 논리적 엔티티입니다. 자세한 내용은 아래 SE 질문을 참조하십시오.

    Hadoop은 입력 분할을 어떻게 수행합니까?

    매퍼 입력 : 입력 블록이 이미 존재합니다. 맵 프로세스는 맵퍼 작업이 시작되기 전에 HDFS에 저장된 입력 블록 / 분할에서 시작됩니다.

    매퍼 출력 : HDFS에 저장되지 않으며 X의 복제 팩터가 1보다 큰 HDFS에 중간 결과를 저장하는 것은 의미가 없습니다.

    감속기 출력 : 감속기 출력은 HDFS에 저장됩니다. 블록 수는 감속기 출력 데이터의 크기에 따라 다릅니다.

  2. ==============================

    2.예, 블록은 클러스터의 데이터 노드에서 디스크에 물리적으로 존재합니다. 만약 당신이 데이터 노드 중 하나에 있고 당신이 정말로 원한다면 그것들을 "볼"수 있다고 생각합니다. 의미있는 파일 이름이없는 파일의 임의의 128m (또는 dfs.block.size가 hdfs-site.xml에서 설정 됨) 조각 일뿐입니다. hdfs dfs 명령을 사용하면 HDFS를 "실제"파일 시스템으로 취급 할 수 있습니다.

    예, 블록은 클러스터의 데이터 노드에서 디스크에 물리적으로 존재합니다. 만약 당신이 데이터 노드 중 하나에 있고 당신이 정말로 원한다면 그것들을 "볼"수 있다고 생각합니다. 의미있는 파일 이름이없는 파일의 임의의 128m (또는 dfs.block.size가 hdfs-site.xml에서 설정 됨) 조각 일뿐입니다. hdfs dfs 명령을 사용하면 HDFS를 "실제"파일 시스템으로 취급 할 수 있습니다.

    Hadoop은 파일을 블록으로 분할하고 파일을 HDFS에 넣을 때 (상황에 적용 할 수있는 방법을 통해) 데이터 노드간에 파일을 분배합니다.

    당신이 의미하는 바를 완전히 확신하지는 못하지만, 블록은 당신이 처리하는 모든 처리 전에, 그리고 상관없이 존재합니다.

    다시 한 번 HDFS의 블록은 처리가 완료되기 전에 결정됩니다. HDFS는 단순히 대용량 파일을 분산 방식으로 저장하는 방법입니다. 예를 들어 MapReduce 작업으로 처리하면 Hadoop이 중간 결과를 디스크에 씁니다. 이것은 HDFS의 원시 파일 차단과 관련이 없습니다.

  3. from https://stackoverflow.com/questions/40831464/concept-of-blocks-in-hadoop-hdfs by cc-by-sa and MIT license