복붙노트

[HADOOP] Hadoop : HDFS 파일 쓰기 및 읽기

HADOOP

Hadoop : HDFS 파일 쓰기 및 읽기

HDFS에서 파일 쓰기 및 읽기와 관련하여 기본적인 질문이 있습니다.

예를 들어 기본 설정을 사용하여 파일을 작성하는 경우 Hadoop은 내부적으로 각 블록을 3 개의 데이터 노드에 작성해야합니다. 제 이해는 각 블록에 대해 먼저 클라이언트가 파이프 라인의 첫 번째 데이터 노드에 블록을 기록한 다음 두 번째 블록에이를 알리는 것입니다. 일단 제 3 데이터 노드가 블록을 성공적으로 수신하면 데이터 노드 2로, 그리고 마지막으로 데이터 노드 1을 통해 클라이언트에게 확인 응답을 제공합니다. 블록에 대한 승인을받은 후에 만 ​​쓰기는 성공한 것으로 간주되고 클라이언트는 다음 블록.

이 경우, 각 블록을 쓰는 데 걸리는 시간이 전통적인 파일 쓰기보다 많기 때문에 -

내 이해가 잘못 되었다면 나를 바로 잡으십시오. 또한 다음과 같은 질문 :

해결법

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

    1.위의 파일 쓰기에 대한 설명은 정확하지만 DataNode는 동시에 데이터를 읽고 쓸 수 있습니다. HDFS 아키텍쳐 가이드 :

    위의 파일 쓰기에 대한 설명은 정확하지만 DataNode는 동시에 데이터를 읽고 쓸 수 있습니다. HDFS 아키텍쳐 가이드 :

    쓰기 작업은 일반적인 파일 시스템보다 (대역폭 문제와 일반적인 오버 헤드로 인해) 많은 시간이 걸리지 만 3 배가 아닙니다 (복제 계수가 3이라고 가정).

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

    2.나는 너의 이해가 정확하다고 생각한다.

    나는 너의 이해가 정확하다고 생각한다.

    간단한 HDFS 클라이언트가 일부 데이터를 쓰고 적어도 하나의 블록 복제본이 작성되면 컨트롤을 다시 가져 오는 반면 비동기 적으로 HDFS는 다른 복제본을 생성합니다.

    그러나 Hadoop에서 HDFS는 "한 번 쓰기, 여러 번 읽기"패턴을 중심으로 설계되었으므로 쓰기 성능에 초점을 맞추지 않았습니다.

    다른면에서 Hadoop MapReduce (HDFS 클라이언트에서도 볼 수 있음)에서 병렬성을 찾을 수 있습니다.

  3. ==============================

    3.HDFS 쓰기 작업 :

    HDFS 쓰기 작업 :

    두 가지 매개 변수가 있습니다.

    dfs.replication : 기본 블록 복제. 파일을 만들 때 실제 복제 횟수를 지정할 수 있습니다. 복제가 작성 시간에 지정되지 않은 경우 기본값이 사용됩니다.

    dfs.namenode.replication.min : 최소 블록 복제.

    dfs.replication이 3으로 설정되어 있어도 dfs.namenode.replication.min (기본값 : 1)이 복제되면 쓰기 작업은 성공한 것으로 간주됩니다.

    그러나 dfs.replication까지의 복제는 순차적 인 파이프 라인에서 발생합니다. 첫 번째 데이터 노드는 블록을 작성하고 두 번째 데이터 노드로 전달합니다. 두 번째 데이터 노드는 블록을 쓰고 세 번째 데이터 노드로 전달합니다.

    또한 DFSOutputStream은 ack 대기열이라고하는 데이터 노드에 의해 수신 확인을 기다리고있는 내부 대기열 패킷을 유지 관리합니다. 패킷은 파이프 라인의 모든 데이터 노드가 확인 응답 한 경우에만 ack 대기열에서 제거됩니다.

    관련 SE 문제 살펴보기 : Hadoop 2.0 데이터 쓰기 작업 확인

    HDFS 읽기 작업 :

    연속적인 쓰기 작업과 달리 HDFS 읽기 작업이 병렬로 발생합니다.

  4. from https://stackoverflow.com/questions/24301085/hadoop-hdfs-file-writes-reads by cc-by-sa and MIT license