2017-01-26 5 views

답변

1

NameNode는 블록 ID를 할당하고이를 클라이언트에 제공합니다. 그런 다음 클라이언트는 데이터를 블록에 기록하기 위해 DataNode와 통신하는 동안이 블록 ID를 사용합니다.

Apache JIRA HDFS-4645에는 블록 ID 할당을위한 현재 설계가 기록되어 있습니다. 그것은 특정 상수로부터 시작하여 단조롭게 증가하는 ID를 사용합니다. 이에 대한 코드를 보려면 Apache Hadoop 코드베이스의 BlockIdManagerSequentialBlockIdGenerator 클래스를 참조하십시오.

+0

잘못되었다고 생각하십시오. 내 이해에 따라 클라이언트가 파일을 블록으로 분할합니다. 클라이언트는 이름 노드에게 데이터 노드의 가용성을 얻도록 요청한 다음이 블록을 데이터 노드에 씁니다. 쓰기 과정이 완료됩니다. 데이터 노드는 블록 정보를 이름 노드에 제공합니다. 이름 노드 만 메타 데이터 업데이트 클라이언트가 블록을 실제로 분할함에 따라 블록 ID가 생성되는이 프로세스에서 이름 노드가 데이터 노드에 의해 이름 노드가 업데이트되지 않는 경우 블록 노드에 블록 ID를 할당합니다 . –

+0

파일에 대해 새 블록을 할당해야 할 때 클라이언트가 결정하지만 NameNode는 항상 새 블록 ID를 할당하기위한 중심점입니다. 클라이언트는 NameNode에 대한 RPC 호출을 만들어 블록을 할당합니다. 그런 다음 NameNode는 블록 ID를 생성하여 메타 데이터에 유지하고 해당 블록 ID를 클라이언트에 다시 보냅니다. 그런 다음 클라이언트는 DataNode와 통신 할 때 해당 블록 ID를 사용합니다. –

+1

클라이언트가 데이터 노드를 할당하기 위해 이름 노드에게 블록에 대한 블록 ID를 보내는 블록을 요청할 때 클라이언트에 요청하는 것은 무엇입니까? –