gateway機(jī)器是跳板機(jī),提交job到云梯的,在gateway機(jī)器上只要配置hadoop-site.xml即可,配置文件中主要是指定jobtracker的地址和hdfs的地址。

gateway機(jī)器(相當(dāng)于job client)提交job和對應(yīng)的jar包到j(luò)obtracker機(jī)器上,jobtracker會對提交的作業(yè)進(jìn)行相應(yīng)的校驗,校驗通過就初始化這個job,然后jobtracker把對應(yīng)的job放入調(diào)度隊列,同時taskTracker會不停的發(fā)送心跳信號給jobtracker,如果taskTracker空閑,那么jobtracker會根據(jù)調(diào)度策略把它分給相應(yīng)的taskTracker,然后taskTracker就啟動一個jvm進(jìn)程來處理。然后一般taskTracker啟動的選擇都和datanode的距離有關(guān),一般是先考慮同一服務(wù)器的機(jī)器,其次是同一機(jī)架的,主要是為了減少網(wǎng)絡(luò)的開銷(因為不在同一服務(wù)器上的話,還要dataNode的數(shù)據(jù)傳輸就需要網(wǎng)路)。
然后taskTracker在跑mapreduce的時候,會請求namenode,由它來告知datanode一系列的信息,比如存儲地址,大小等信息。
hdfs的架構(gòu)圖:

hdfs讀取數(shù)據(jù):

dfs客戶端先建立hdfs文件系統(tǒng)的連接,然后從namenode中獲取對應(yīng)data的地址等信息,然后通過inputFormat方法去切割和讀取datanode中的文件,這樣就完成了數(shù)據(jù)的讀取。 hdfs寫入數(shù)據(jù):
dfs客戶端首先建立hdfs文件系統(tǒng)的連接,然后通過create方法告知它要創(chuàng)建一個文件,然后namenode開始創(chuàng)建一個文件名稱,通過hdfs的寫入流類進(jìn)行對datanode數(shù)據(jù)的寫入,它的寫入是以包的形式寫入的,然后每次寫入會有一個ack的包確認(rèn)信號返回,也就是途中datanode中的兩個相互箭頭的表示。