1)客戶端請求上傳數據到服務器node
2)服務器接收到這個請求,而後到本身的元數據裏面去查詢,元數據中是否記錄了該文件的存在數據庫
3)NN響應客戶端是否能夠上傳服務器
4)服務器會發送再次請求,須要上傳多大的數據文件code
5)服務器會檢查DataNode的信息xml
6)服務器會根據上傳文件大小進行調度,調度出最合適的DataNode隊列返回給客戶端blog
【每隔3秒鐘,DataNode都會向NN發送一個數據,DN的狀態和可用空間】隊列
7)告訴DN須要上傳數據內存
8)客戶端接收隊列數據:it
經過pop方法,取出第一個節點的地址,而後訪問該節點,並吧剩下的其餘節點的IP地址帶過去;配置
第一個DN接收數據,再從隊列中取出第一個,繼續把剩下的IP帶過去,直到最後一個節點結束;
最後一個節點收到信息以後,想源地址發送確認消息,確認到第一個DN的時候,DN會把確認消息返回給客戶端;
【即創建好了傳輸通道】
9)客戶端接收到最終確認消息以後,開始往每個DN上寫入數據
10)最終寫入成功會將消息返回給客戶端
11)客戶端向NN彙報,數據寫入成功,NN就會把消息寫入元數據中
12)最後NN會通知DN自動作數據副本平衡
1)客戶端請求NN,須要下載文件
2)NN把文件的元數據信息返回給客戶端
3)客戶端接收到數據後,就到相應的客戶端去請求數據便可
4)最後客戶端本地進行數據追加合併從而得到整個文件
1)元數據:元數據是咱們內存的一塊空間
2)元數據:是一個文件,fsimage_0000000000XX文件就是元數據
3)元數據:就是一個小型的數據庫,裏面存放了全部文件的位置
1)secondarynamenode其實是對NameNode數據的一個備份
2)secondarynamenode是爲了防止NameNode機器掛掉
3)secondarynamenode不能和NameNode放在一塊兒
能夠修改hdfs-site.xml配置文件來指定secondarynamenode的地址
<!--指定SecondaryNameNode的地址--> <property> <name>dfs.namenode.secondary.http-address</name> <value>hdp02:50090</value> </property>
Checkpoint就是定時檢查節點