hdfs能正常工作,對外提供資料儲存服務,與hadoop體系中各種元件的協作配合是分不開的。其中元件有 namenode, datanode, client等,下述部分描述了各種元件的作用,以及相關的關係和在檔案系統中讀取和寫入資料的流程。
下圖是向hdfs檔案系統中寫入(上傳)資料時的流程圖。各資料處理步驟說明見一下分析。
1. 客戶端通過distributed filesystem模組向namenode請求上傳檔案,namenode檢查目標檔案是否已存在,父目錄是否存在。
2. namenode返回是否可以上傳
3. 客戶端請求第乙個 block上傳到哪幾個datanode伺服器上
4. namenode返回3個datanode節點,分別為dn1、dn2、dn3。表示採用這3個節點儲存資料。
5. 客戶端通過fsdataoutputstream模組請求dn1上傳資料,dn1收到請求會繼續呼叫dn2,然後dn2呼叫dn3,將這個通訊管道建立完成
6. dn1、dn2、dn3逐級應答客戶端
7. 客戶端開始往dn1上傳第乙個block(先從磁碟讀取資料放到乙個本地記憶體快取),以packet為單位,dn1收到乙個packet就會傳給dn2,dn2傳給dn3;dn1每傳乙個packet會放入乙個應答佇列等待應答
8. 當乙個block傳輸完成之後,客戶端再次請求namenode上傳第二個block的伺服器(重複執行3-7步)
2. namenode 返回目標檔案的元資料
3. 挑選一台datanode(就近原則,然後隨機)伺服器,請求讀取資料。
4. datanode開始傳輸資料給客戶端(從磁碟裡面讀取資料輸入流,以packet為單位來做校驗)
5. 客戶端以packet為單位接收,先在本地快取,然後寫入目標檔案。
本地儲存資料
直接將資料寫在 裡,不是一種合理的做法,如果資料經常改,就要經常翻開對應的 進行修改,造成 擴充套件型低 因此,可以考慮將經常變的資料放在檔案中進行儲存,程式啟動後從檔案中讀取最新的資料,如果要變動資料,直接修改資料檔案即可,不用修改 一般可以使用屬性列表檔案儲存nsarray或者dictionar...
android 本地儲存資料
string prefs name lmn.com string itemuser username string itempass password string itemcheck check 一 儲存 sharedpreferences settings getsharedpreference...
資料本地儲存方法
儲存到本地的資料型別有 陣列,字典,字串,物件型別的 1 字串的本地儲存 nsstring str dsadasd nsarray arr nssearchpathfordirectoriesindomains nslibrarydirectory,nsuserdomainmask,yes nsst...