Hadoop Client Read&Write
Client가 HDFS에 Read하고 Write하는 과정
Read
- Sample.txt = 256MB
- 2개의 Block = Block A(128M) + Block B(128M)
Open()
= HDFS Instance에게 call- NameNode에게 Block이 어디있는지 정보 요청 → return addresss
- file block의 Primary Data Node에게
read()
요청 - data는 실시간으로 client에게 전송
- block의 연속적인 데이터를 가져와 계속하여 전달
- client가 데이터를 전부 받았으면
close()
Write
- HDFS는 1write many read라는 관점을 가지고 있다는 점을 이해해야한다.
- DFS에 open() 호출
- Name Node에 Create() 호출하면서, 파일이 이미 존재하는지, 유저가 파일 권한이 있는지 체크
- hdfs는 데이터를 여러 곳에 써야하는데, packet을 분할해야한다. Data Queue를 통하여 연결할 DataNode를 DataNode에게 물어보고 승인 받은 뒤 알려준다. 3,4,5번을 연결하고 이후에 파이프라인을 통해서 마지막 DataNode에 까지 전달
- Data Node의 ACK를 기다려 승인을 받는다.
- 모든 replicas에서 승인을 받게 되었다면 FDSData OutputStream의 연결 종료